1. 下载并配置 Runner
1.1 下载 Runner
GitLab-CI 的 Runner 是一个 Go 写的程序包,可以去官网下载到本地。
1
2
|
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 账户运行。
1
2
|
groupadd -g 1234 runner
useradd runner -u 1234 -g 1234
|
1.3 修改 pip 源
1
2
3
4
|
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.com/):
输入 gitlab 的 url 地址
1
|
http://gitlab.yourdomain.com/
|
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 和注册时不一样。
1
2
3
4
5
6
7
8
9
10
|
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://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问题
1
2
|
locale
export LC_ALL=zh_CN.UTF-8
|
5. 参考
- https://docs.gitlab.com.cn/runner/register/