zoukankan      html  css  js  c++  java
  • 【Gitlab】gitlab-CI 持续集成以及runner的配置简版

    在我们完成项目开发后,提交到git,当监听提交后,自动进行编译,并进行项目的部署,是不是一想就很爽,所以下面引入我们 > 的主角 —— gitlab-CI,中文文档

    Gitlab CI

    Gitlab-CI 是 GitLab Continuous Integration(Gitlab持续集成)的简称。
    从Gitlab的8.0版本开始,gitlab就全面集成了Gitlab-CI,并且对所有项目默认开启。
    只要在项目仓库的根目录添加.gitlab-ci.yml文件,并且配置了Runner(运行器),那么每一次合并请求(MR)或者push都会触发CI pipeline。

    Gitlab-Runner

    安装gitlab-ci-multi-runner(linux)

    # 添加yum源
    curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.rpm.sh | sudo bash
    
    # 安装
    yum install gitlab-ci-multi-runner
    

    使用 gitlab-ci-multi-runner 注册 Specific Runners

    runners.jpg

    $ gitlab-ci-multi-runner register
    Running in system-mode.
    
    Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
    >>>>>> 你的URL
    
    Please enter the gitlab-ci token for this runner:
    >>>>>> 你的Token
    
    Please enter the gitlab-ci description for this runner:
    >>>>>> 你对该runner的描述
    
    Please enter the gitlab-ci tags for this runner (comma separated):
    >>>>>> 该runner的标签
    
    Whether to run untagged builds [true/false]:
    [false]: true
    
    >>>>>> 是否运行没有标记的项目(后期可以改)
    
    Whether to lock Runner to current project [true/false]:
    [false]:
    
    >>>>>> 是否锁定只运行当前项目(后期可以改)
    
    Registering runner... succeeded                     runner=9e48baqx
    
    Please enter the executor: parallels, docker+machine, ssh, virtualbox, docker-ssh+machine, kubernetes, docker, docker-ssh, shell:
    
    >>>>>> 选择runner的类型(根据你的需求选择,我选择的shell,我的项目是node项目)
    
    Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
    
    1. 首先你的项目中的 getlab-runner.yml 文件中的命令需要的环境,你的runner所在的服务器是必须要搭好的,必须你需要执行 npm installnpm run build ,那你的服务器必须要有node环境;
    2. runner的类型比较重要,你必须要清楚你需要一个什么类型的runner。比如,开始我是需要一个能够运行node项目的runner,但是网上的很多教程统一都是都选择docker,这个时候你电脑上必须要安装了docker才可以,因为这相当于在docker里面又安装了一个docker(docker in docker),所以对于我的需求来说,我选择shell就可以了;
    3. 通过Gitlab中某个项目的 Settings 下的 CI/CD Pipelines 按钮进入的页面中得到的URL和Token所注册的runner只服务于本项目,当你在其他项目的当前页面时,可以选择让这个runner为当前项目开启服务。

    配置 gitlab-runner.yml

    mage: node:9.11.1
    
    pages:
     cache:
       paths:
       - node_modules/
    
     script:
     - cnpm install
     - npm run build
     - sudo rm -rf /data/ftp/http/files/scfAdminDoc
     - sudo mv ./scfAdminDoc /data/ftp/http/files/
     artifacts:
       paths:
       - public
     only:
     - master
    

    具体配置见文档

    其他

    代码推送到gitlab上之后,一直是pending状态,要等很久才pick到一个runner来执行

    这个现象一般发生在本机注册了多个runner,之前的都删除了,只留下一个,但是当我们在gitlab管理平台移除了某个runner的时候,并没有完全删除记录,当执行的 gitlab-ci-multi-runner list 的时候你会发现它仍然还在,如果需要彻底删除它,还应该这样做:

    cd /etc/gitlab-runner
    ls
    
    # 你会看到config.toml文件,打开它并删除已有的那些runner记录
    vim config.toml
    

    配置node环境

    1. 下载node-v9.11.1-linux-x64.tar.xz文件
    2. 例如放在 /home 文件夹
      # 进入所在目录,解压
      tar -xvf node-v9.11.1-linux-x64.tar.xz
      
      # 重命名文件夹
      mv node-v9.11.1-linux-x64 nodejs
      
      # 建立软链接,配置全局环境变量(源路径和目标路径为相对路径)
      ln -s /home/nodejs/bin/npm /usr/local/bin/
      ln -s /home/nodejs/bin/node /usr/local/bin/
      
      # 检查是否配置成功
      node -v
      npm -v
      

    scp上上传

    # 普通
    scp ./public/* root@192.168.0.226:/data/ftp/http/files/
    scp 源路径/源文件 用户名(root)@服务器IP:目标路径
    
    
    # 免密码
    yum install sshpass
    sshpass -p 111111 scp ./public/* root@192.168.0.226:/data/ftp/http/files/
    sshpass -p 密码 scp 源路径/源文件 用户名(root)@服务器IP:目标路径
    

    如果是下载,调换顺序

    scp root@192.168.0.226:/data/ftp/http/files/ ./public/*
    scp 用户名(root)@服务器IP:目标路径 源路径/源文件
    

    个人博客:午后南杂

  • 相关阅读:
    CCF——分蛋糕(2017-3)
    CCF——公共钥匙盒(2017-9)
    CCF——打酱油(2017-9)
    CCF——游戏(2017-12)
    SDS-简单动态字符串
    Redis主从复制
    MySQL 知识点
    MySQL 死锁
    Java 类加载机制
    Java IO
  • 原文地址:https://www.cnblogs.com/luanhewei/p/10111842.html
Copyright © 2011-2022 走看看