惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

月光博客
月光博客
云风的 BLOG
云风的 BLOG
小众软件
小众软件
雷峰网
雷峰网
博客园 - 【当耐特】
V
V2EX
WordPress大学
WordPress大学
IT之家
IT之家
Last Week in AI
Last Week in AI
罗磊的独立博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Apple Machine Learning Research
Apple Machine Learning Research
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
V
Visual Studio Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
有赞技术团队
有赞技术团队
The Cloudflare Blog
Jina AI
Jina AI
博客园 - 司徒正美
阮一峰的网络日志
阮一峰的网络日志
博客园 - 聂微东
大猫的无限游戏
大猫的无限游戏
博客园 - 三生石上(FineUI控件)
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com

陈少文的网站

巨变与机遇的未来十年 Kubernetes 平台管理软件压力测试方案 使用镜像部署 Hexo 静态页面 终于等到你 - GitHub 镜像仓库服务(ghcr.io) 一起来学 Go --(6)Interface 一起来学 Go --(5)Goroutine 和 Channel 什么是函数式编程 如何在 Kubernetes 集群集成 Kata 柯里化与偏函数 使用 PyGithub 自动创建 Label 软件产品是团队能力的输出 Helm 2 、Helm 3 比较 IoT 变现 Kubernetes 中的 DNS 服务 国内的 Helm 镜像源 Harbor 使用自签证书支持 Https 访问 DevOps 工具链之 Prow 如何使用 kfctl 安装 Kubeflow VS Code 无法下载 Go 插件的工具包 工程师更应具有服务精神 你不知道的 Docker 使用技巧 使用 Docker 运行 Tensorflow 论中国 什么是左移 如何清空 Git 仓库全部历史记录 一禅小和尚 有风吹过厨房 时间的玫瑰 如何在 CentOS 安装 GPU 驱动 开发 Tips(19)
GitLab CI 配置 Runner
2018-05-08 · via 陈少文的网站

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