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 |
|
增加执行权限
1
|
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 创建工作目录
1
|
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
页面
需要获取图中模糊处理的两个参数:
- URL: http://gitlab.yourdomain.com/
- token: XXXXXXXXXXXXXXXXXXX
2.2 注册 Runner
运行下面的命令,并按照提示输入相关信息。
1
|
/usr/local/bin/gitlab-runner register
|
Please enter the gitlab-ci coordinator URL (e.g. https:
输入 gitlab 的 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]:
是否运行在没有 tag 的 build 上面。在配置 gitlab-ci 时,会有很多 job,每个 job 可以通过 tags 属性来选择 Runner。这里为 true 表示如果 job 没有配置 tags,也执行。
Whether to lock the Runner to current project [true/false]:
是否锁定 Runner 到当前项目
Please enter the executor: parallels, ssh, virtualbox, docker-ssh+machine, kubernetes, docker, docker-ssh, shell, docker+machine:
选择 executor,这里列出了很多 executor
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
3 运行 Runner
1
|
/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 即可。查看默认启动配置
| 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 | | 8 | | 9 | | 10 | | 11 | | 12 | | 13 | | 14 | | 15 | | 16 | | 17 |
|
| 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
1
|
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] |
|
1
|
gitlab-runner unregister --url http:
|
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. 参考
- https://docs.gitlab.com.cn/runner/register/