[参考文章]
1. 在虚拟机或服务器运行gitlab-runner容器
docker run -d --name gitlab-runner --restart always
-v /var/run/docker.sock:/var/run/docker.sock
-v /srv/gitlab-runner/config:/etc/gitlab-runner
gitlab/gitlab-runner:latest
2. 新建测试项目,并复制token
3. 注册项目runner
docker exec -it gitlab-runner gitlab-runner register
- 配置完成后会生成config.toml,如注册时输入有误可以手动修改错误后重启gitlab-runner,注意:这里要手动添加一行
pull_policy = "never"
(缩进用4个空格,不能用tab),意思是不从docker仓库拉取镜像,只从本地拉取(具体参考Chengzi_comm的专栏)这里的token跟第2步的token不是同一个东西,不要混淆。
vim /srv/gitlab-runner/config/config.toml
- 回到第2步的页面就可以看到注册的runner了, 禁用共享的runners(如图页面)
- 启用Auto DevOps
4. 至此,runner注册好了也启用auto devops了,但此时你修改项目文件并提交修改就会触发auto devop,但是会失败,因为没有.gitlab-ci.yml文件在项目的根目录
5. 所以我们要编写.gitlab-ci.yml,并调用刚注册好的Specific Runners,注意:要将此文件放在项目根目录!
stages:
- build
- test
build:
stage: build
image: gbuild:latest
script:
- echo "info> sample build complete"
only:
- master
tags:
- Specific Runners
test:
stage: test
image: gtest:latest
script:
- echo "info> sample test complete"
only:
- master
tags:
- Specific Runners
6. 而第5步需要用到docker image:gbuild:latest和image:gtest:latest,这2个镜像是自定义的镜像在docker仓库是没有的,
- 可以参考Chengzi_comm的专栏的第二步(2)用dockerfile build 2个自定义名字的镜像替换掉我这里的gtest:latest等,
- 也可以拉个系统镜像,然后运行一个容器,在里面安装需要的工具,之后将容器打包成自定义的镜像。
- 也可以拉我的镜像来测试
docker pull vickeywu/gbuild
,我只上传了一个镜像,如果需要多个,只需自己拉下来重新打个tag就行,参考如何将docker 镜像上传到docker hub仓库