安装GitLab Runner
GitLab Runner
支持多平台、多方式安装,包括GNU/Linux, macOS, FreeBSD
和Windows
平台的安装,以及支持基于docker
的自动扩展式安装。受限于Gitlab
版本,Gitlab-runner
的版本最好和Gitlab
的版本保持一致。注意gitlab-runner
的前身名字叫gitlab-ci-multi-runner
,为了避免一些不必要的冲突,官方建议使用gitlab-runner
这个工具来进行安装。
安装docker
如果runner
需要支持docker
系列的执行器,也就是构建需要在容器里执行,那么需要先安装docker环境,docker安装方式建议参考官网:https://docs.docker.com/engine/install/
1 2 3 curl -sSL https://get.docker.com/ | sh /etc/init.d/docker status [ ok ] Docker is running.
安装gitlab-runner
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 # 添加gitlab官方源 curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash # 添加APT pinning配置文件 cat > /etc/apt/preferences.d/pin-gitlab-runner.pref <<EOF Explanation: Prefer GitLab provided packages over the Debian native ones Package: gitlab-runner Pin: origin packages.gitlab.com Pin-Priority: 1001 EOF # 安装gitlab-runner apt-get update apt-get install gitlab-runner=={gitlab后段版本号} # 比如apt-get install gitlab-runner=11.11.4 # 授权gitlab-runner用户使用docker usermod -aG docker gitlab-runner # 查看授权,gitlab-runner用户下执行 docker info #查看是否有授权 # 更改默认docker的文件目录,注意docker17版本以后,不支持graph参数指定目录。 service docker stop cat /etc/default/docker DOCKER_LOGFILE="/home/gitlab-runner/var/log/docker.log" DOCKER_OPTS="--graph=/home/gitlab-runner/var/lib/docker --log-opt max-size=500m --log-opt max-file=5" # 启动docker service docker start
注册runner
将runner
注册到gitlab
服务器,注册成功会产生一个runner
实例。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 root@gitlab-f1-1000:~# gitlab-runner register Running in system-mode. Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/): https://gitlab.test.com/ci # 输入需要注册到的gitlab服务器地址 Please enter the gitlab-ci token for this runner: xxxxxxxxxx # 项目Runner页面的 Runner Registration token Please enter the gitlab-ci description for this runner: [gitlab-f1-1000.i.nease.net]: mac-runner-1 # runner的名称 Please enter the gitlab-ci tags for this runner (comma separated): docker # 用于pipeline job匹配runner的tag Registering runner... succeeded runner=xxxxx Please enter the executor: docker, shell, virtualbox, docker-ssh+machine, kubernetes, docker-ssh, parallels, ssh, docker+machine: docker # runner执行器 Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
这里注册了一个执行器为shell
的runner
到https://gitlab.test.com/
,注册完后,可以在项目的Runners
页面看到已经注册的runner
。
注意
couldn’t execute POST against https://gitlab.test.com/ci/api/v1/runners/register.json
这个是因为在注册时,runner
所在的机器无法访问gitlab
服务器导致。
某些机器版本gitlab-ci-multi-runner
工具注册可能有问题,返回status 404
,此时可以使用gitlab-runner
命令行工具来尝试注册。
配置runner
确定runner配置文件
配置runner使用docker
当注册了一个docker
类型的runner
后,如果要在该runner
中使用docker
进行构建等任务,则需要增加以下配置,以支持docker in docker
:
1 2 3 4 5 # 挂载宿主docker.sock到容器内,修改对应runner的volumes配置 volumes = ["/cache", "/var/run/docker.sock:/var/run/docker.sock"] # 挂载镜像registry的认证文件到容器内,如果要拉取私有镜像,则需要在容器内部署认证配置,或者在宿主配置,然后挂入容器内。修改对应runner的volumes配置 volumes = ["/cache", "/var/run/docker.sock:/var/run/docker.sock", "/root/.docker/config.json:/root/.docker/config.json"]
全局配置
在创建好的runner的配置之前的配置为全局配置:
1 2 3 4 5 concurrent #全局并发设置,表示使用所有runner全局可以并行运行的构建数,注意"0"并不是表示没有限制 check_interval # 检查新构建任务的间隔时间,单位为秒。默认为3s,如果该值被设置为小于等于0,则使用默认值 log_level # 日志级别,如warning、debug等
runner局部配置
在[[runner]]
里的配置即为具体创建的runner
实例的配置,具体可参考:https://docs.gitlab.com/runner/configuration/advanced-configuration.html
启动runner
注意安装了runner以后,默认会自动启动,手工启动方式为