Please enable Javascript to view the contents

GitLab CI 配置 Runner

 ·  ☕ 2 分钟

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 页面

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

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

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

输入 Runner 描述

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

输入 Runner 的标签:

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

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

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

是否锁定 Runner 到当前项目

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

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

1
shell
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. 参考


微信公众号
作者
微信公众号