docker安装gitlab-runner
一、简介
1、GitLab-CI
GitLab-CI就是一套配合GitLab使用的持续集成系统(当然,还有其它的持续集成系统,同样可以配合GitLab使用,比如Jenkins)。而且GitLab8.0以后的版本是默认集成了GitLab-CI并且默认启用的。
2、GitLab-Runner
GitLab-Runner是配合GitLab-CI进行使用的。一般地,GitLab里面的每一个工程都会定义一个属于这个工程的软件集成脚本,用来自动化地完成一些软件集成工作。当这个工程的仓库代码发生变动时,比如有人push了代码,GitLab就会将这个变动通知GitLab-CI。这时GitLab-CI会找出与这个工程相关联的Runner,并通知这些Runner把代码更新到本地并执行预定义好的执行脚本。
所以,GitLab-Runner就是一个用来执行软件集成脚本的东西。你可以想象一下:Runner就像一个个的工人,而GitLab-CI就是这些工人的一个管理中心,所有工人都要在GitLab-CI里面登记注册,并且表明自己是为哪个工程服务的。当相应的工程发生变化时,GitLab-CI就会通知相应的工人执行软件集成脚本
二、安装gitlab-runner
1、安装镜像
docker pull gitlab/gitlab-runner:v13.12.0
2、新建目录
mkdir -p /home/apps/gitlab-runner/config
3、创建并启动
docker run -d --name gitlab-runner \
-v /home/apps/gitlab-runner/config:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
--net=host \
--restart always \
--privileged=true \
gitlab/gitlab-runner:v13.12.0
三、注册gitlab-runner
1、查看地址和token
-
进入某一个项目
-
设置->CI/CD->Runner->Specific runners
2、注册runner
# 进入容器
docker exec -it gitlab-runner /bin/bash
# 注册runner
gitlab-runner register
# gitlab地址
Enter the GitLab instance URL (for example, https://gitlab.com/):
http://192.168.3.11/
# token
Enter the registration token:
XXXXX-XXXXX-XXXXX
# 输入runner描述
Enter a description for the runner:
my-runner
# gitlab-runner标签名称tag
Enter tags for the runner (comma-separated):
build,deploy
# 选择执行gitlab-runner的执行程序。因为我要用docker实现自动部署,所以输入docker
Enter an executor: custom, docker-ssh, parallels, kubernetes, docker, shell, ssh, virtualbox, docker+machine, docker-ssh+machine:
docker
# 如果选择docker作为执行程序,那要定义一个默认镜像的名称
Enter the default Docker image (for example, ruby:2.6):
alpine:latest
3、查看runner
四、流水线测试
1、在maven项目下新建gitlab-ci.yml文件
stages:
- build
- deploy
build:
stage: build
tags:
- build
only:
- master
script:
- echo "mvn clean "
- echo "mvn install"
deploy:
stage: deploy
tags:
- deploy
only:
- master
script:
- echo "hello deploy"
2、commit提交后,就会有流水线
五、gitlab-ci.yml使用
1、什么是gitlab-ci.yml文件
- 将.gitlab-ci.yml文件添加到存储库的根目录,并将GitLab项目配置为使用Runner,则每次提交或推送都会触发CI 管道
2、参数说明
关键字 | 描述 |
---|---|
stages | 定义流水线所有的阶段,如果未定义stages,则默认有build、test、deploy三个阶段 |
stage | 定义一个作业阶段(默认值:)test |
script | 必须参数,由runner执行的shell脚本 |
image | 使用Docker image镜像 |
services | 使用Docker services镜像 |
before_script | 执行作业之前执行的一段shell脚本 |
after_script | 执行完作业执行一段的shell脚本 |
only | 限制作业在什么时候创建 |
except | 限制作业在什么时候不创建 |
tags | 作用使用的Runner运行器的标签列表 |
allow_failure | 允许作业失败,失败的作业不影响提交的状态 |
when | 什么时候运行作业 |
environment | 作用部署的环境名称 |
cache | 指定需要在job之间缓存的文件或目录 |
artifacts | 归档文件列表,指定成功后应附加到job的文件和目录的列表 |
dependencies | 当前作业依赖的其他作业,你可以使用依赖作业的归档文件 |
coverage | 作业的代码覆盖率 |
retry | 作业失败时,可以自动执行多少次 |
parallel | 指定并行运行的作业实例 |
trigger | 定义下游流水线的触发器 |
include | 作业加载其他YAML文件 |
extends | 控制实体从哪里继承 |
pages | 上传GitLab Pages的结果 |
retry | 作业失败时,可以自动执行多少次 |
variables | 定义环境变量 |
六、gitlab-runner常用命令
1、启动命令
gitlab-runner --debug <command> #调试模式排查错误特别有用。
gitlab-runner <command> --help #获取帮助信息
gitlab-runner run #普通用户模式 配置文件位置 ~/.gitlab-runner/config.toml
sudo gitlab-runner run # 超级用户模式 配置文件位置/etc/gitlab-runner/config.toml
2、注册命令
gitlab-runner register #注册
gitlab-runner list #列出所有运行程序
gitlab-runner verify #检查注册的runner是否可以连接。 --delete 删除
gitlab-runner verify --delete #删除
gitlab-runner unregister #取消已注册的runner
#使用令牌注销
gitlab-runner unregister --url http://gitlab.example.com/ --token t0k3n
#使用名称注销(同名删除第一个)
gitlab-runner unregister --name test-runner
#注销所有
gitlab-runner unregister --all-runners
3、服务管理
gitlab-runner uninstall #停止运行并从服务中卸载GitLab Runner
gitlab-runner start #启动GitLab Runner服务
gitlab-runner stop #停止GitLab Runner服务
gitlab-runner restart #重启GitLab Runner服务
gitlab-runner status #显示GitLab Runner服务的状态。当服务正在运行时,退出代码为零;而当服务未运行时,退出代码为非零