目录

    1. 下载并配置 Runner

    1.1 下载 Runner

    GitLab-CI 的 Runner 是一个 Go 写的程序包,可以去官网下载到本地。

    yum install -y wget
    wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
    

    增加执行权限

    chmod +x /usr/local/bin/gitlab-runner
    

    1.2 新增 runner 用户

    运行 Runner 时,以 runner:runner 账户运行。

    groupadd -g 1234 runner
    useradd runner -u 1234 -g 1234
    

    1.3 修改 pip 源

    cat /etc/pip.conf
    [global]
    index-url= http://pypi.doubanio.com/simple/
    trusted-host = pypi.doubanio.com
    

    1.4 创建工作目录

    mkdir -p /data/gitlab-data
    

    2 注册 Runner

    在项目的settings/ci_cd 页面,或者管理员的 /admin/runners 页面都可以找到 token。

    token 是 Runner 注册的凭证。如果是从项目获取的 token,那么这个 Runner 属于此项目,可以通过配置允许其他项目也可以使用。如果是从管理员页面获取的 token ,那么这个 Runner,所有项目可见,都可以使用。

    下面以项目的 Runner 为例:

    2.1 获取 token

    在项目的 settings/ci_cd 页面

    需要获取图中模糊处理的两个参数:

    2.2 注册 Runner

    运行下面的命令,并按照提示输入相关信息。

    /usr/local/bin/gitlab-runner register
    
    Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
    

    输入 gitlab 的 url 地址

    http://gitlab.yourdomain.com/
    
    Please enter the gitlab-ci token for this runner:
    

    输入 token

    XXXXXXXXXXXXXXXXXXX
    
    Please enter the gitlab-ci description for this runner:
    

    输入 Runner 描述

    MyShellRunner
    
    Please enter the gitlab-ci tags for this runner (comma separated):
    

    输入 Runner 的标签:

    shell, linux
    
    Whether to run untagged builds [true/false]:
    

    是否运行在没有 tag 的 build 上面。在配置 gitlab-ci 时,会有很多 job,每个 job 可以通过 tags 属性来选择 Runner。这里为 true 表示如果 job 没有配置 tags,也执行。

    true
    
    Whether to lock the Runner to current project [true/false]:
    

    是否锁定 Runner 到当前项目

    false
    
    Please enter the executor: parallels, ssh, virtualbox, docker-ssh+machine, kubernetes, docker, docker-ssh, shell, docker+machine:
    

    选择 executor,这里列出了很多 executor

    shell
    
    Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
    

    3 运行 Runner

    /usr/bin/gitlab-runner run --working-directory /data/gitlab-data --config /etc/gitlab-runner/config.toml --service gitlab-runner --user runner >/dev/null 2>&1 &
    

    这里为了不修改 yml 配置,从之前的 Runner 迁移到 新 Runner。直接禁用共享的 Runner,使用 Specific Runner。如果愿意修改 yml,可以通过 tags 参数来控制执行的 Runner。

    剩下的就是在新的 Runner 上,配置合适的 CI 环境,比如 node、npm 即可。

    查看默认启动配置

    cat /etc/systemd/system/gitlab-runner.service
    
    [Unit]
    Description=GitLab Runner
    After=syslog.target network.target
    ConditionFileIsExecutable=/usr/bin/gitlab-runner
    
    [Service]
    StartLimitInterval=5
    StartLimitBurst=10
    ExecStart=/usr/bin/gitlab-runner "run" "--working-directory" "/data/gitlab-data" "--config" "/etc/gitlab-runner/config.toml" "--service" "gitlab-runner" "--syslog" "--user" "runner"
    
    Restart=always
    RestartSec=120
    
    [Install]
    WantedBy=multi-user.target
    

    还可以通过 systemctl 管理 Runner

    systemctl restart gitlab-runner
    

    4. 一些问题

    4.1 注销 Runner

    需要先找到 config.toml 文件中的 token,需要注意的是,这里的 token 和注册时不一样。

    cat /etc/gitlab-runner/config.toml
    concurrent = 1
    check_interval = 0
    
    [[runners]]
      name = "myshell"
      url = "http://gitlab.yourdomain.com/"
      token = "XXXXXXXXXXxxxxxxxxxxxxx"
      executor = "shell"
      [runners.cache]
    
    gitlab-runner unregister --url http://gitlab.yourdomain.com/ --token XXXXXXXXXXxxxxxxxxxxxxx
    

    4.2 SVN Can’t convert string from ‘UTF-8’

    解决svn: Can’t convert string from ‘UTF-8’ to native encoding问题

    locale
    export LC_ALL=zh_CN.UTF-8
    

    5. 参考