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

image

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
image

四、流水线测试

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提交后,就会有流水线
image
image

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

七、参考

posted @ 2021-08-27 08:31  吕林光  阅读(1644)  评论(0编辑  收藏  举报