美文网首页gitlab runner
centos 7 配置 gitlab runner

centos 7 配置 gitlab runner

作者: IT513 | 来源:发表于2019-08-20 11:12 被阅读0次

    centos 安装 gitlab runner

    • 安装方法 1 :centos yum 安装方式 版本为 9.5.1
    # 添加yum源
    curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.rpm.sh | sudo bash
    # 安装
    yum install gitlab-runner
    # 查看版本
    gitlab-runner -v
    
    
    # 我当前centos 7 为  Linux x86-64
    sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
    
    # 设置安装目录可执行
    sudo chmod +x /usr/local/bin/gitlab-runner
    
    # 直接使用 root 用户权限运行 gitlab-runner (或者其他用户,看需求)
    sudo gitlab-runner install --user=root --working-directory=/home/gitlab-runner
    #启动
    sudo gitlab-runner start
    
    # 如果提示命令  command not found  需要配置环境
    # 添加软链接
    ln -s -f /usr/local/bin/gitlab-runner /usr/bin/gitlab-runner
    
    # 查看版本
    gitlab-runner -v
    

    注册 gitlab-runner

    通过管理员登录 gitlab ---- 管理中心---- 概况 ---- Runner 查看需要注册的 URL与 Token(令牌)


    image.png
    • 配置注册信息 gitlab-runner register
    [root@localhost ~]#  gitlab-runner register
    Running in system-mode.                            
    # 引导会让你输入gitlab的url,输入自己的url,例如http://gitlab.example.com/                           
    Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
    http://xxx.xxx.xxx:xxx/
    # 引导会让你输入token,去相应的项目下找到token,例如xrjc3tWcdQpLcEwoYzkU
    Please enter the gitlab-ci token for this runner:
    xrjc3tWcdQpLcEwoYzkU
    # 输入描述
    Please enter the gitlab-ci description for this runner:
    [localhost.localdomain]: develop
    # 引导会让你输入tag,一个项目可能有多个runner,是根据tag来区别runner的,输入若干个就好了,比如web,hook,deploy,develop
    Please enter the gitlab-ci tags for this runner (comma separated):
    develop
    # 是否运行未标记的版本
    Whether to run untagged builds [true/false]:
    [false]: false
    # 是否将运行程序锁定到当前项目
    Whether to lock Runner to current project [true/false]:
    [false]: true
    Registering runner... succeeded                     runner=xrjc3tWc
    #  引导会让你输入executor,这个是要用什么方式来执行脚本,图方便输入shell就好了
    Please enter the executor: shell, ssh, docker+machine, docker, docker-ssh, parallels, virtualbox, docker-ssh+machine, kubernetes:
    shell
    Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded! 
    
    

    注册好后,在gitlab中相应的位置就可以看到你注册好的runner信息。

    image.png

    自定义构建目录

    对应的配置文件在 /etc/gitlab-runner/config.toml
    修改配置文件,允许自定义git clone 的目录
    此功能要求GIT_CLONE_PATH在其中定义的路径内runners.builds_dir。为了便于使用的builds_dir所述 $CI_BUILDS_DIR变量可被使用。

     #配置构建的根目录
      builds_dir = "/www/wwwroot"
    
    #允许用户自定义构建目录 gitbab-ci.yml 变量  GIT_CLONE_PATH
      [runners.custom_build_dir]
        enabled = true
    
    image.png

    gitlab-runner 配置说明:https://docs.gitlab.com/runner/configuration/advanced-configuration.html#the-global-section

    对应执行命令

    # 运行
    gitlab-runner run
    # 启动
    gitlab-runner start
    # 重启
    gitlab-runner restart
    # 通过name 取消注册
    gitlab-runner unregister --name develop
    # 删除所有注册runner
    gitlab-runner unregister --all-runners
    

    Runner 状态说明

    每个Runner可以处于以下状态中的其中一种:

    • shared - Runner将运行所有未指定的项目的作业
    • group - Runner将运行群组中所有未指定项目的作业
    • specific - Runner将运行指定项目的作业
    • locked - 无法将Runner分配给其他项目
    • paused - Runner不会接受新的作业

    什么情况下需要注册Shared Runner?
    比如,GitLab上面所有的工程都有可能需要在公司的服务器上进行编译、测试、部署等工作,这个时候注册一个Shared Runner供所有工程使用就很合适。

    什么情况下需要注册Specific Runner?

    比如,我可能需要在我个人的电脑或者服务器上自动构建我参与的某个工程,这个时候注册一个Specific Runner就很合适。

    什么情况下需要在同一台机器上注册多个Runner?

    比如,我是GitLab的普通用户,没有管理员权限,我同时参与多个项目,那我就需要为我的所有项目都注册一个Specific Runner,这个时候就需要在同一台机器上注册多个Runner。

    项目应用 gitlab-ci.yml

    更多的 .gitlab-ci.yml 配置规则 详见
    参考:
    https://www.jianshu.com/p/0ab8bbe05d27
    https://blog.51cto.com/vnimos/2122951?source=dra

    gitlab-ci.yml 文件编写主要内容

    cache 定义需要被缓存的文件、文件夹列表,只适用于项目目录中的文件和文件夹。
    stages 定义流水线阶段(pipeline),如果没有stages被定义.gitlab-ci.yml,那么build, test和deploy允许被用作默认作业的阶段。
    stage 申明当前的阶段,在 stages 中使用。如果作业未指定阶段,则默认作业test
    variables 用于定义变量
    before_script 覆盖在作业之前执行的脚本或命令
    after_script 覆盖在作业之后执行的脚本或命令
    script 定义由Runner执行的shell脚本或命令
    changes 指定 stage 触发条件
    refs 指定 stage 触发的分支
    tags 指定执行作业的runner

    执行流程

    1. 首先,所有工作build都是并行执行的。
    2. 如果所有作业都build成功,则test作业将并行执行。
    3. 如果所有作业都test成功,则deploy作业将并行执行。
    4. 如果所有作业都deploy成功,则提交标记为passed。
    5. 如果任何先前的作业失败,则将提交标记为,failed并且不执行其他阶段的作业。

    gitlab-ci.yml 示例
    实现需求如下:

    • 在服务器上 拉去指定git项目到指定目录中
    • 在开发服务器上每次推送都自动更新develop分支的代码
    • 在正式服务器上,每次master分支更新时都会自动更新代码
    • 如果服务器上的git代码发生改变,先本地储藏修改的内容。

    由于当前暂时没有解决gitlab runner 保留服务器上生成的文件,所以使用了 GIT_STRATEGY:none 的方式,就是不直接用runner 本身的拉去方式。而用shell的方式 clone 代码。所以要先配置服务器上ssh拉去代码的方式。
    git ssh 拉去代码配置方式如下:
    https://www.jianshu.com/p/9c8c5a7ea634

    执行流程:
    1、在开发服务器与正式环境服务器上安装 gitlab runner,并指定项目执行。
    2、在对应服务器上配置 git ssh秘钥拉去方式。详情
    3、在gitlab 项目根目录下创建 gitlab-ci.yml 文件。请根据各自修改更改内如。
    4、提交代码到gitlab,查看执行效果。运行状态通过则配置成功。

    gitlab-ci.yml 内如如下:

    
    #定义变量
    variables:
      #定义克隆的路径  $CI_BUILDS_DIR 为 runners.builds_dir 设置的路径
      GIT_CLONE_PATH: $CI_BUILDS_DIR/server/link
    
      #git ssh 地址
      GITLAB_SSH: ssh://git@192.168.10.10:50022/server/link.git
    
      # 指定git获取代码的方式(clone,fetch,none)
      GIT_STRATEGY: none
    
     #在作业之前执行的脚本或命令
    before_script:
      - echo "环境部署操作"
      # 创建对应目录
      - mkdir -p $GIT_CLONE_PATH
      - cd $GIT_CLONE_PATH
    
    #在作业之后执行的脚本或命令
    after_script:
      #配置目录的用户权限
      - chown -R www:www $GIT_CLONE_PATH
    
    # 全局定义流水线阶段(pipeline)
    stages:
      - build
    develop_build:
      stage: build
      #需要执行的shell脚本
      script:
        - echo "开发服务器环境配置"
        - if [ ! -d ".git" ]; then
        - git clone -b develop $GITLAB_SSH $GIT_CLONE_PATH --depth 1
        - else
        - git stash
        - fi
        - git pull
      only:
        # 指定分支
        - develop
      tags:
        # 指定执行作业的runner
        - developRunner
    
    master_build:
      stage: build
      script:
        - echo "正式服务器环境配置"
        - if [ ! -d ".git" ]; then
        - git clone -b master $GITLAB_SSH $GIT_CLONE_PATH --depth 1
        - else
        - git stash
        - fi
        - git pull
      only:
        - master
      tags:
        - masterRunner
    
    

    ** 常见问题 **
    验证 gitlab-ci.yml 文件格式是否正确,在gitlab CI/CD的流水线或作业中有CI配置检查 (CI Lint)。复制写好的 gitlab-ci.yml 文件内如到 CI Lint 验证。

    image.png image.png

    提交代码后查看运行状态


    image.png image.png

    相关文章

      网友评论

        本文标题:centos 7 配置 gitlab runner

        本文链接:https://www.haomeiwen.com/subject/fganrctx.html