本文基于Docker实现了Gitlab之CI/CD持续集成流程,不牵涉理论,作为流程的记录,相关技术的深入讲解将在下一篇详细介绍。
一、Docker安装gitlab runner
1、拉取Runner镜像并启动
docker run -d --name gitlab-runner --restart always -v /srv/gitlab-runner/config:/etc/gitlab-runner -v /var/run/docker.sock:/var/run/docker.sock gitlab/gitlab-runner:latest
当前最新版本是14.6.0
2、进入Runner容器内
docker exec -it gitlab-runner bash
3、注册runner
gitlab-runner register
- 输入Gitlab实例的地址(Gitlab runner设置时指定的URL)
> Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com )
- 输入token(Gitlab Runner 注册的令牌)
> Please enter the gitlab-ci token for this runner
- 输入Runner的描述,比如my-runner
> Please enter the gitlab-ci description for this runner
- 输入与Runner关联的标签
> Please enter the gitlab-ci tags for this runner (comma separated):
标签是为了让后期在CI脚本中指定选择某个或者多个Runner,这里我们设置他的标签为test,你们可以设置其他的
- 输入Runner的执行器
> Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell:
docker
由于我们都是基于Docker,所以这里选择执行器为Docker
- 设置执行器的版本
> Please enter the Docker image (eg. ruby:2.1):
如alpine:latest
4、查看Gitlab Runner
- 项目中查看
5、注意事项
- 设置运行没有标签的作业
二、.gitlab-ci.yml文件配置
.gitlab-ci.yml文件中指定了CI的触发条件、工作内容、工作流程,编写和理解此文件是CI实战中最重要的一步,该文件指定的任务内容总体构成了1个pipeline、1个pipeline包含不同的stage执行阶段、每个stage包含不同的具体job脚本任务。
以下是一个完整的例子:
# 定义 stages
stages:
- build
- test
# 定义 job
job1:
tags:
- my-common-tag
stage: test
script:
- echo "I am job1"
- echo "I am in test stage"
# 定义 job
job2:
tags:
- my-common-tag
stage: build
script:
- echo "I am job2"
- echo "I am in build stage"
三、实际执行效果
参考文档
基于GitLab+docker的前端自动化构建部署(CI/CD)流程