gitlab-runner 的安装使用(含 .gitlab-ci.yml 的简单使用)

简介

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

简单理解就是一个服务放在那儿,当你提交代码时,会触发一个开关,然后在那个服务上执行一下相应的脚本。

通常用于代码检测,编译,服务部署等。

安装

linux

  1. 使用脚本,通过 yum 安装
# 添加yum源
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.rpm.sh | sudo bash
# 安装
yum install gitlab-runner
# 查看版本
gitlab-runner -v
  1. 官方提供
# 我当前centos 7 为  Linux x86-64
sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64

# 设置安装目录可执行
sudo chmod +x /usr/local/bin/gitlab-runner

# 直接使用 root 用户权限运行 gitlab-runner (或者其他用户,看需求)
sudo gitlab-runner install --user=root --working-directory=/home/gitlab-runner
#启动
sudo gitlab-runner start

# 如果提示命令  command not found  需要配置环境
# 添加软链接
ln -s -f /usr/local/bin/gitlab-runner /usr/bin/gitlab-runner

# 查看版本
gitlab-runner -v

windows

直接去官网下载编译好的 exe 官网下载 windows 地址

注册

需要从 gitlab 的网页上,选择 settings->CI/CD->Runners,就可以看到注册所需要的 URLtoken
请添加图片描述
然后执行 gitlab-runner register,照着提示输入即可。
请添加图片描述

gitlab-runner list 可查看运行中的 runner

.gitlab-ci.yml 语法

官方文档上的内容很详细,可以直接上官网查看,这里仅提一些较常用的,先看一个例子:

#定义变量
#变量的读取顺序:gitlab 仓库配置的 runner 的 variables -> yml 中定义的 variables -> 环境变量
variables:
  #定义克隆的路径  $CI_BUILDS_DIR 为 runners.builds_dir 设置的路径
  GIT_TEST_PATH: ../test
  TEST_SSH: [email protected]:xxx/test.git
  # 子模块,添加了这个变量后,子模块就会自动拉取了
  GIT_SUBMODULE_STRATEGY: recursive

before_script:
  - echo "每个 job 执行前都会走"

after_script:
  - echo "每个 job 执行后都会走"

# 定义 stage(build, deploy)
stages:
  - build
  - deploy

# job 名称,随意写  
build_job:
  stage: build
  tags:
	- default
  only:
    - dev
  except:
    - main
  script:
    - if [ ! -d "$GIT_TEST_PATH" ]; then
    - git clone -b dev $TEST_SSH $GIT_TEST_PATH
    - else
    - git -C $GIT_TEST_PATH pull
    - fi
    - echo "自己做编译相关脚本"
    - chmod a+x ./build.sh
    - ./build.sh #可以直接执行脚本,脚本中也可以获取到先前定义好的变量

deploy_job:
  stage: deploy
  tags:
    - default
  only:
    - dev
  script:
    - echo "自己做发布相关脚本"
关键字 简介
variables 定义变量
stage 定义 job stage(默认:test
tags 用来指定 job 选择哪个 Runner(同时 Runner 也要设置 tags),一个 git 仓库可以指定多个 Runner,一个 jobtags 也可指定多个
script 必须要有的,是 Runner 执行的命令或脚本
only 指定分支,只有该分支提交时才执行的 job
except 执行 job 的时候排除的分支
before_script 重写一组在作业前执行的命令
after_script 重写一组在作业后执行的命令

变量的读取顺序

官方文档
如果出现同名

  1. gitlab 仓库配置的 runnervariables
    请添加图片描述

  2. yml 中定义的 variables

variables:
  GIT_TEST_PATH: ../test
  1. 编译环境的环境变量
    触发变量或预定的流水线变量。
    项目级别变量或受保护变量。
    组级别变量或受保护变量。
    YAML定义的作业级变量。
    YAML定义的全局变量。
    部署环境变量。
    预定义的环境变量。

问题

  • before_script 每个 job 执行的时候都会走一遍。
  • 上个 stage 生成的文件在下个 stage 中能否看到?是看不到的,下个 stage 开始的时候,会重新 checkout 新分支,执行如下:
Reinitialized existing Git repository in /home/gitlab-runner/builds/8-Hx8YsC/0/sfg/test/.git/
Checking out 1fdc2396 as dev...
Removing master # mster 这个文件就是上个 stage 生成的被删掉了
  • 当前仓库需要使用其他仓库怎么办?官方的建议是使用 git 子模块(具体怎么使用就不在本篇说明了),然后可以配置变量 GIT_SUBMODULE_STRATEGY: recursive 直接更新子模块代码。上面例子中,使用相对路径来克隆模块,也可以使用。
  • 定义多个 job 使用同样的 stage 标签会怎样,相同 stage 标签的 job 会并行执行,没有顺序,但是 stage 会顺序执行,这篇文章的图很直观:.gitlab-ci.yml 自定义多个stages. CI/CD 自定义多个阶段的执行顺序

总结

有一定的服务器经验的人来说,搭建 gitlab-runner 并执行 CI 还是挺容易的,耐心看看官方文档,基本上问题都能解决。

  1. 拥有一台编译服务器(没条件的用 docker 或者 本机都行,保证网络连通),并将相应的环境配好。
  2. 安装 gitlab-runner
  3. 配置 .gitlab-ci.yml 文件

但是实际使用的过程中总会遇到各种各样的问题,可以先搞个测试仓库先研究研究。

参考

猜你喜欢

转载自blog.csdn.net/DisMisPres/article/details/128036681
今日推荐