GitlabRunner实践

GitlabRunner简介

GItLab Runner是一个开源项目,用于运行您的作业并将结果发送回Gitlab,它与Gitlab CI结合使用,Gitlab CI是gitlab随附的用于协调作业的开源持续集成服务。

  • 特点
    • 允许同时执行多个作业
    • 对多个服务器(甚至每个项目)使用多个令牌
    • 限制每个令牌的并行作业数
    • 可本地、docker容器等执行作业
    • 自动重新加载配置,无需重启

GitLabRunner安装

使用gitlab官方仓库安装
1
2
3
4
5
# 安装最新版
# For RHEL/CentOS/Fedora
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash
# For RHEL/CentOS/Fedora
yum install gitlab-runner -y
1
2
3
4
5
6
7
8
# 安装指定版本
yum list gitlab-runner --showduplicates | sort -r
yum install gitlab-runner-10.0.0-1

# 根新runner
# For RHEL/CentOS/Fedora
sudo yum update
sudo yum install gitlab-runner

GitlabRunner注册

大概过程:获取runner token -> 进行注册

GitlabRunner类型
  • shared: 运行整个平台项目的作业(gitlab)
  • group: 运行特定group下的所有项目的作业(group)
  • specific: 运行指定的项目作业(project)
  • locked: 无法运行项目作业
  • paused: 不会运行作业
获取runner token
获取shared类型run

Admin Area -> Overview -> Runners

mark

获取group类型的runner token

(先创建组)group -> Settings -> CI/CD -> Runners(点击expand) -> Group Runners

mark

获取specific类型的runner token

进入具体的项目 -> Settings -> CI/CD -> Runners -> Specific Runners

mark

进行注册

  • docker
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 方式1: 启动容器交互式注册
docker run --rm -t -i -v ~/data/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner:v12.6.0 register

Runtime platform arch=amd64 os=linux pid=6 revision=ac8e767a version=12.6.0
Running in system-mode.

Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
http://192.168.1.105
Please enter the gitlab-ci token for this runner:
4tutaeWWL3srNEcmHs1s
Please enter the gitlab-ci description for this runner:
[00e4f023b5ae]: devops-service-runner
Please enter the gitlab-ci tags for this runner (comma separated):
build
Registering runner... succeeded runner=4tutaeWW
Please enter the executor: parallels, virtualbox, docker-ssh+machine, kubernetes, docker+machine, custom, docker, docker-ssh, shell, ssh:
shell
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
1
2
3
4
5
6
7
8
9
10
11
# 方式2:直接注册
docker run -itd --rm -v ~/data/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner:v12.6.0 register \
--non-interactive \
--executor "shell" \
--url "http://192.168.1.200:30088/" \
--registration-token "JRzzw2j1Ji6aBjwvkxAv" \
--description "devops-runner" \
--tag-list "build,deploy" \
--run-untagged="true" \
--locked="false" \
--access-level="not_protected"
  • 系统命令行注册
1
2
gitlab-runner register
# 安装提示输入,回车即可

  • 查看注册情况

Gitlab Runner命令

GitLab Runner包含一组命令,可用于注册,管理和运行构建。

  • 启动命令
1
2
3
4
gitlab-runner --debug <command>   #调试模式排查错误特别有用。
gitlab-runner <command> --help #获取帮助信息
gitlab-runner run #普通用户模式 配置文件位置 ~/.gitlab-runner/config.toml
sudo gitlab-runner run # 超级用户模式 配置文件位置/etc/gitlab-runner/config.toml
  • 注册命令
1
2
3
4
5
6
7
8
9
10
11
gitlab-runner register  #默认交互模式下使用,非交互模式添加 --non-interactive
gitlab-runner list #此命令列出了保存在配置文件中的所有运行程序
gitlab-runner verify #此命令检查注册的runner是否可以连接,但不验证GitLab服务是否正在使用runner。 --delete 删除
gitlab-runner unregister #该命令使用GitLab取消已注册的runner。

#使用令牌注销
gitlab-runner unregister --url http://gitlab.example.com/ --token t0k3n
#使用名称注销(同名删除第一个)
gitlab-runner unregister --name test-runner
#注销所有
gitlab-runner unregister --all-runners
  • 服务管理
1
2
3
4
5
6
7
8
9
gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
# --user指定将用于执行构建的用户
# --working-directory 指定将使用**Shell** executor 运行构建时所有数据将存储在其中的根目录

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服务的状态。当服务正在运行时,退出代码为零;而当服务未运行时,退出代码为非零。

运行流水线任务

在gitlab仓库中项目根目录添加一个.gitlab-ci.yml文件,文件内容如下:

  • yaml文件
此流水线共包含两个job,分别是build 和 deploy
  • build job包含一个stage build。build stage配置了在具有build标签的runner(build-test)中运行,限制为master分支提交,运行构建命令。
  • deploy job包含一个stage deploy。 deploy stage配置了在具有deploy标签的runner(build-test)中运行,限制为master分支提交,运行发布命令。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
stages:
- build
- deploy

build:
stage: build
tags:
- build-test
only:
- master
script:
- echo "mvn clean "
- echo "mvn install"

deploy:
stage: deploy
tags:
- build-test
only:
- master
script:
- echo "hello deploy"

# 在mster分支上模式提交代码,查看流水线运行情况

测试流水线

1
2
3
4
touch 1.txt
git add .
git commit -m "xxx"
git push origin master

-------------本文结束感谢您的阅读-------------
原创技术分享,感谢您的支持。