gitlab-runner 的安装使用(含 .gitlab-ci.yml 的简单使用)
创始人
2024-02-14 10:09:39
0

简介

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

注册

需要从 gitlab 的网页上,选择 settings->CI/CD->Runners,就可以看到注册所需要的 AURLtoken
请添加图片描述
然后执行 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: ../testTEST_SSH: git@gitlab.com:xxx/test.git# 子模块,添加了这个变量后,子模块就会自动拉取了GIT_SUBMODULE_STRATEGY: recursivebefore_script:- echo "每个 job 执行前都会走"after_script:- echo "每个 job 执行后都会走"# 定义 stage(build, deploy)
stages:- build- deploy# job 名称,随意写  
build_job:stage: buildtags:- defaultonly:- devexcept:- mainscript:- 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: deploytags:- defaultonly:- devscript:- 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 文件

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

参考

  • 官方文档
  • .gitlab-ci.yml 自定义多个stages. CI/CD 自定义多个阶段的执行顺序

相关内容

热门资讯

华塑控股:与南充荣耀企业管理有... 有投资者在互动平台向华塑控股提问:“请问公司及南充华塑型材与南充荣耀企业管理有限公司的案件,高审裁定...
金通灵证券虚假陈述案作出先行判... 2025年12月31日,南京中院对金通灵证券虚假陈述责任纠纷特别代表人诉讼案作出判决,4.3万余名投...
**广州婚姻律师专业靠谱资深律... 广州婚姻律师专业靠谱资深律师2025推荐,资深律师团队专精高净值人群复杂案件解析 在婚姻家事领域,尤...
南京中院就金通灵证券虚假陈述特... 证监会有关部门负责人答记者问。问:近日,南京中院就金通灵证券虚假陈述特别代表人诉讼案件依法作出一审先...
李强主持召开国务院常务会议 听... 新华社北京12月31日电 国务院总理李强12月31日主持召开国务院常务会议,听取国家水网建设情况汇报...
原创 宋... 首尔西部地方检察厅昨日官宣,以违反《兵役法》嫌疑对宋旻浩不拘留起诉!作为社会服务要员的他,被指工作态...
北京警方严打违规改装销售不合格... 央广网北京12月31日消息(记者 朱冠安)为打击整治违规拼改装、销售不合格电动自行车违法犯罪行为,近...
实现商事调解“零”的突破!枣庄... 齐鲁晚报·齐鲁壹点 林佩瑶 12月31日下午,枣庄市“贸促助企、服务攻坚”—赋能企业发展新闻发布会召...
AI赋能教育政策明年落地,有望... 12月30日,教育部科学技术与信息化司司长周大旺在新闻发布会上透露,下一步,教育部将继续深入推进人工...