GitLab-Runner 的安装(Docker)
官方文档
1. 下载 gitlab-runner 镜像
docker pull gitlab-runner
2. 启动容器
docker run --rm -t -i --name gitlab-runner -d \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /srv/gitlab-runner/config:/etc/gitlab-runner \
gitlab/gitlab-runner register
# 进行注册,这一步的信息可以在 gitlab 项目的 setting->ci/cd->runner中找到
## 第一步:填写gitlab服务器地址
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com )
https://gitlab.com
## 第二步:填写你的访问token
Please enter the gitlab-ci token for this runner
xxx
## 第三步:描述信息
Please enter the gitlab-ci description for this runner
my-runner
## 第四步:该 runner 的标签,可在 .gitlab-ci.yml 文件中使用指令 tags 使用,指定任务运行在特定的标记 tag 的服务器中
Please enter the gitlab-ci tags for this runner (comma separated):
my-tag,another-tag
## 第五步:选择执行环境
Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell:
docker
## 第六步:选择 excutor 的执行镜像
Please enter the Docker image (eg. ruby:2.1):
maven:3.3.9-jdk-8
3. gitlab runner 进行相关配置
我们启动gitlab runner 时,挂载了一个 /srv/gitlab-runner/config:/etc/gitlab-runner
的 volume,里面有 gitlab-runner的配置文件 config.toml
concurrent = 1
check_interval = 0
[session_server]
session_timeout = 1800
[[runners]]
name = "t"st
url = "https://gitlab.com/"
token = "xxxxxxx"
executor = "docker"
[runners.custom_build_dir]
[runners.docker]
tls_verify = false
image = "maven:3.3.9-jdk-8"
privileged = false
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = ["/cache", "/root/.m2:/root/.m2:rw"]
shm_size = 0
[runners.cache]
[runners.cache.s3]
[runners.cache.gcs]
由于每次构建,gitlab runner 都会运行一个全新的 excutor,所以为避免每次构建时,excutor 都去线上下载依赖包,这里我们为 excutor 配置挂载了本地的 /root/.m2:/root/.m2
。但由于 excutor 的镜像为maven:x.x.x-jdk
,他默认的maven repository 在 /usr/share/maven/ref/repository
, 所以我们需要更改 excuter 或 本地中的/root/.m2/docker-setting.xml
文件,把 <localRepository>
中的值改为 /root/.m2/repository
如果你的 java 项目需要打包成 docker 镜像,则还需要在 volumes 中配置挂载本地 docker.sock,如 /var/run/docker.sock:/var/run/docker
, 则 executor 的镜像构建成果会出现在本机中,在 config.toml 的文件中
Gitlab Runner Cache
还有一种避免每次下载依赖包的方法,就是使用 gitlab runner cache
使用cache时,需要在 .gitlab-ci.yml 文件中使用指令 cache,如:
image: maven:3.3.9-jdk-8
cache:
key: maven-repository-cache
paths:
- .m2
variables:
MAVEN_OPTS: "-Dmaven.repo.local=.m2"
stages:
- build
build:
stage: build
script:
- mvn clean install -DskipTests
tags:
- test
cache 位于 excutor 的 /cache
文件夹下,使用时我们需要指定 path 和 key。
当我们构建时,如果 key 指定的内容不存在,则会构建完成后把 path下的内容打包成 cache.zip
如果刚开始构建时, key 命中,则会使用 path 里面的内容
cache 中 key 的使用需要注意一些问题,请看Cache文档,
每次构建完,其产物会保存在 excutor 的/build
文件夹下
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。