安装GitLab Runner
官方文档: https://docs.gitlab.com/runner/
GitLab Runner是CI任务的调度者,接到CI任务之后会呼叫Executor(执行者)去执行任务。
本方案让GitLab Runner在Docker内运行。当团队逐渐扩大的时候,CI的压力也会增加,那么直接扩展GitLab Runner的Docker容器是最好的选择。
下面是一种构建GitLab Runner的方法,一样是给出样例:Demo项目仓库
创建Dockerfile
FROM ubuntu:14.04
COPY /sources.list /etc/apt/sources.list
RUN apt-get update -y && \
apt-get upgrade -y && \
apt-get install -y vim htop curl git git-man libedit2 liberror-perl libx11-6 \
libx11-data libxau6 libxcb1 libxdmcp6 libxext6 libxmuu1 openssh-client patch \
rsync xauth && \
curl -sSL https://get.docker.com/ | sh
RUN curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.deb.sh \
| sudo bash && \
apt-get install -y gitlab-ci-multi-runner
RUN apt-get clean && \
rm -rf /var/lib/apt/lists/*
COPY /config.toml /etc/gitlab-runner/config.toml # 需要关注的重点
CMD ["gitlab-runner", "run", "python3-tester"]
创建config.toml
为了让GitLab去识别这个GitLab Runner,需要把这个项目先构建起来,然后完成注册的步骤。生成好config.toml之后就可以完成这个步骤了。
# 构建Docker
docker build -t gitlab-runner:v1 ./
构建的过程中打开项目的CI设置,从这里获取必要的资料。
这里打码的一个是Gitlab的地址,另一个是Gitlab的识别Token,后面的注册要用到。
构建完成之后启动刚才构建的Docker,然后开始注册
# 临时的启动这个Docker然后进入Bash,完成之后删除运行的容器。
docker run -it --rm gitlab-runner:v1 bash
在Docker容器内注册Runner
官方文档: https://docs.gitlab.com/runner/register/index.html
# 开始注册流程
gitlab-runner register
Running in system-mode. Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.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打个Tag,Tag是用来给项目特定Runner用的,这里暂时留空。
Whether to lock Runner to current project [true/false]: [false]:
是否让这个Runner只给这个项目服务? 这里选false. 我们这个Runner比较通用。
Registering runner... succeeded runner=ppYbhAdF Please enter the executor: docker-ssh, parallels, virtualbox, docker+machine, docker-ssh+machine, kubernetes, docker, shell, ss
之前老提到的executor在这里出现了
官方文档: https://docs.gitlab.com/runner/executors/README.html
这里直接输入docker
, 我们让测试的启动和结束都是在干净的虚拟环境里,这样很棒。
Please enter the default Docker image (e.g. ruby:2.1):
这里设置默认Docker镜像,测试项目是Ruby,我就先指定为最新的ruby了ruby:latest
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically > reloaded!
那么注册就完成了,现在我们要把注册流程生成的config.toml拿出来,这样方便我们更改配置
cat /etc/gitlab-runner/config.toml # 生成好的配置文件在Docker虚拟机的这个路径下
# config.toml
concurrent = 1
check_interval = 0
[[runners]]
name = "ruby-tester"
url = "https://example.com/ci"
token = "******"
executor = "docker"
[runners.docker]
tls_verify = false
image = "ruby:latest"
privileged = false
disable_cache = false
volumes = ["/cache"]
shm_size = 0
[runners.cache]
把内容复制到项目的config.toml里, 然后重建镜像
docker build -t gitlab-runner:v2 ./