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

news/2024/5/8 6:18:07/文章来源:https://blog.csdn.net/DisMisPres/article/details/128036681

简介

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 自定义多个阶段的执行顺序

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_225712.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Revit修改:网格角度,体量轮廓,梁随斜板

一、Revit中使幕墙系统网格改变角度 绘制幕墙系统时,若幕墙系统出现如下图情况: 若想改变该网格的角度,使其与该幕墙上下边界平行或垂直则选中该幕墙,修改属性栏的中的网格角度。如下图所示: 修改完所需角度后&#xf…

【kafka】五、kafka工作流程

kafka工作流程 工作流程 kafka中消息是以topic进行分类的,生产者生产消息,消费者消费消息,都是面向topic的。 topic是逻辑上的概念,而partition是物理上的概念,每一个partition对应一个log文件,该log文件…

QT中的OpenGLWidget

1、在生成的UI中,通过控件OpenGL Widget来布置相应的空间(后续讲通过promoted widget将此控件与派生的OpenGLWidget进行绑定) 2、添加一个widget类,该类派生于 QOpenGLWidget, QOpenGLFunctions_*_*_Core(*代表版本号…

基于VGG与LSTM实现针对图片的问答任务 数据+代码 可以作为毕设

任务描述:本教程将通过深度学习的方式实现一个简单的视觉问答模型,视觉问答的任务内容是将一张图片和一个自然语言问题作为输入,结合这两种信息,机器生成一条自然语言答案。本教程通过数据准备,视觉问答模型构建,视觉问答模型训练,视觉问答模型评估,视觉问答模型预测等…

嵌入式驱动初级-字符设备驱动基础

文章目录前言一、驱动学习预备知识1.什么是设备驱动程序2.向内核添加新功能方法2.1新功能源码与Linux内核源码不在同目录下2.2在Ubuntu下加载和删除ko文件步骤2.3在开发板下加载和删除ko文件步骤2.4内核模块基础代码解析二、字符设备驱动框架2.1Linux内核对设备的分类2.2字符设…

Python(PyQt5)制作帮助文档查看器(可显示后缀名为md的文件)同时显示文本和图片

先看完整效果图: 帮助文档查看器是很多程序中必备要素,而利用Qt中的QTreeView组件可以很方便的查看文件,而QTextBrowser可以直接显示格式化的MarkDown文本。因此可以利用这两个组件制作一个帮助文件查看器。 未优化 效果图: 问题优化: 你会发现QT treeView列宽设置不成功问题…

2023年系统规划与设计管理师-第二章信息技术知识

1. 软件工程 2. 面向对象 3. 开发模型 4. 开发方法 4.1 敏捷开发方法 4.2 RUP 5. 数据仓库和网络技术 5.1 网络七层结构 5.2 各设备位于哪一次 5.3 各层的协议 5.4 TCP分层 5.5 IPv6 VS IPv4 5.6 IPv4 :A类、B类、C类地址的划分 A类地址的第一组数字为1&#xff5…

255-261BFC,媒体的类型,媒体的特性,浏览器前缀,媒体查询,逻辑操作符,

◼ 有时候可能会看到有些CSS属性名前面带有:-o-、-xv-、-ms-、mso-、-moz-、-webkit- ◼ 官方文档专业术语叫做:vendor-specific extensions(供应商特定扩展) ◼ 为什么需要浏览器前缀了?  CSS属性刚开始并没有成为标准,浏览器为了防止后续会修改名字给新的属性添加了浏…

软件测试面试,一定要准备的7个高频面试题(附答案,建议收藏)

收集了2022年最新的面试题后,负责就业的黑马讲师们整理出了7个高频出现的面试题,一起来看看。 高频问题1:请自我介绍下? 高频问题2:请介绍下最近做过的项目? 高频问题3:请介绍下你印象深刻的…

光学测量精度极限—光谱共焦位移传感器的六大行业应用

科技的不断发展,在半导体,高精密制造领域中都是采用微米及以上的加工工艺,并与之匹配高精度测量技术进行品质控制。光谱共焦的测量原理是一束白光经过镜头将不同的波长聚焦到光轴上,色散地形成一条彩虹状分布带,照射到…

力合精密装备科技:操纵盒按键说明

使用摇杆(操纵盒): 不同的控制系统配备不同样式的操作杆,操作杆最常用的功能是用来手动移动机器来进行测量操作; 一般的操作杆上包含以下功能键: 急停按钮:紧急情况时按下急停按钮停止机器运…

ORB-SLAM2 ---- Tracking::TrackReferenceKeyFrame函数

目录 1.函数作用 2.步骤 3.code 4.函数解析 4.1 将当前帧的描述子转化为BoW向量 4.2 总体解释 1.函数作用 用参考关键帧的地图点来对当前普通帧进行跟踪。 2.步骤 Step 1:将当前普通帧的描述子转化为BoW向量 Step 2:通过词袋BoW加速当前帧与参考帧…

Go运行时的内存分配器以及消耗指定大小的内存(C语言)

对于go语言在运行时的一些内存分配,想要详细的了解,我们会用到自带的runtime.MemStats,有很多具体的细节实现,而不是简单的只看任务管理器中的内存分配。 我们先来看下这个记录内存分配器的结构体 type MemStats struct {Alloc …

一文了解 Go 中的指针和结构体

一文了解 Go 中的指针和结构体前言指针指针的定义获取和修改指针所指向变量的值结构体结构体定义结构体的创建方式小结耐心和持久胜过激烈和狂热。 前言 前面的两篇文章对 Go 语言的基础语法和基本数据类型以及几个复合数据类型进行介绍,本文将对 Go 里面的指针和结…

MySQL索引底层数据结构

索引简介 索引是一个排好序的数据结构,包含着对数据表里所有记录的引用指针,如下图所示。索引文件和数据文件一样都存储在磁盘中,数据库索引的目的是在检索数据库时,减少磁盘读取次数。 常见的索引数据结构包括二叉树、红黑树、…

跬智信息 (Kyligence) 荣获信创“大比武”重要奖项,坚持做大做实国产软件

近日,为期两个月的 2022 信创“大比武”活动圆满闭幕。经过层层筛选和考核,跬智信息 (Kyligence) 凭借“企业级智能多维数据分析解决方案”项目脱颖而出,在整体方案的技术架构、服务体系、安全架构、信创生态等方面得到了评委的高度认可&…

iptables应用大全

iptables四表五链: 1、“四表”是指 iptables 的功能 ——filter 表(过滤规则表):控制数据包是否允许进出及转发 ——nat 表(地址转换规则表):控制数据包中地址转换 ——mangle(修改…

NDK 是什么 | FFmpeg 5.0 编译 so 库

前言 NDK 全称 Native Development Kit,也就是原生开发工具包 ,官网对它有详细的 中文介绍 。可能一说到 NDK 或 JNI ,大家脑子里第一反应就是集成 C/C 。其实 JNI 的含义是 Java Native Interface ,这种接口允许 Java 和其他语言…

ovs vxlan 时延和吞吐

设计云时到底要不要用vxlan,如果用vxlan到底要不要购买比较贵的smart nic做offload,采用软件vxlan还是硬件交换机vxlan,很难决策,这儿简单测试一下,给个参考,资源终究是有限的,成本还是有考虑的…

【HDU No. 2586】 树上距离 How far away ?

【HDU No. 2586】 树上距离 How far away ? 杭电 OJ 题目地址 【题意】 有n 栋房屋,由一些双向道路连接起来。 每两栋房屋之间都有一条独特的简单道路(“简单”意味着不可以通过两条道路去一个地方)。人们每天总是喜欢这样问&a…