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

news2025/8/6 6:09:01

简介

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: ../test
  TEST_SSH: git@gitlab.com: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 文件

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

参考

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]java毕业设计在线课程网站

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

腾讯安全SOC+能力图谱正式发布,助力政企构建闭环安全运营体系

随着云计算、人工智能、5G等新兴技术的融合发展,数字化转型正成为企业数字经济时代的重要发展路径。然而,数字化转型过程中IT架构的重塑、安全产品体系化能力不足带来的安全运营挑战,使得企业在业务突破上面临安全瓶颈。 面对网络安全事件频…

做一个微信小程序需要多少钱?

做一个微信小程序需要多少钱? 如果是选择套用小程序模板,自建的方式的话,价格是在698-3498元一年的。 如果是代建小程序的话,需要在自建的费用上,再加上1500-12000元的代建费用。 下面主要给大家讲讲698-3498元这个…

Spring依赖注入源码解析(上)

文章目录前言一、Spring中到底有几种依赖注入的方式?1、手动注入1.1、set方法进行注入1.2、通过构造方法进行注入2、自动注入2.1、XML的autowire自动注入2.2、Autowired注解的自动注入二、autowireByName && autowireByType核心源码分析2.1、autowireByName…

最新最全的JavaScript入门视频,包含小程序和uniapp相关的JavaScript知识学习

写在前面 我们学习JavaScript不仅可以用于web网站开发,也可以用于小程序,uniapp项目的开发,所以我们学习JavaScript很重要。 准备工作 我们这里学习JavaScript用的是小程序开发者工具或者uniapp开发者工具,所以需要你先装好这两…

基于Servlet+jsp+mysql开发javaWeb学生管理系统(学生信息、学生选课、学生成绩、学生签到考勤)

你知道的越多,你不知道的越多 点赞再看,养成习惯 如果您有疑问或者见解,或者没有积分想获取项目,欢迎指教: 企鹅:869192208 文章目录一、开发背景二、 需求分析三、开发环境四、运行效果五、开发流程工程目…

【web前端开发】HTML知识点超详细总结

文章目录什么是网页常用的浏览器及内核VScode和WebStrom使用HTML常用标签文档类型<!DOCTYPE>网页语言lang字符集title标签标题标签段落和换行标签文本格式化标签div和span标签图像标签路径相对路径同一级路径上一级路径:下一级路径绝对路径链接标签超链接标签外部链接:内…

为什么心脏长在左边?

人体各项生命活动的正常维持&#xff0c;都离不开血液循环系统输送营养和代谢废物&#xff0c;而给全身输送血液的动力器官就是心脏。可以说&#xff0c;心脏是人体的发动机。不过&#xff0c;你有没有思考过&#xff0c;为什么心脏会长在我们身体的左边呢&#xff1f; 为了解释…

css ppt操作面板 预览时其中标签定位问题

最近用网页写了一个类似PPT页面板操作功能&#xff0c;就是把文本框和图片放入操作面板后&#xff0c;手动拖动到自定义位置&#xff0c;并可以控制文本框和图片大小&#xff0c;但是在预览时位置怎么都放不对&#xff0c;可能跟我css知识不扎实有关&#xff0c;两天没解决&…

从一道题到贪心入门

今天,我们将从一道题引入贪心算法的认识. 题目 题目描述 又是一年秋季时&#xff0c;陶陶家的苹果树结了 n 个果子。陶陶又跑去摘苹果&#xff0c;这次他有一个 a 公分的椅子。当他手够不着时&#xff0c;他会站到椅子上再试试。 这次与 NOIp2005 普及组第一题不同的是&#x…

搭建ESP8266开发环境

获取工具 安信可一体化开发环境 Source insight (本菜鸟不太喜欢用Eclipse) 安装 安装ESP8266开发环境(Windows) 1)双击运行解压到文件 2)安装方式一:eclipse 双击运行ConfigTool.exe点击 Default 可以检测当前所在路径&#

图神经网络关系抽取论文阅读笔记(三)

1 用于关系提取的注意引导图卷积网络&#xff08;Attention Guided Graph Convolutional Networks for Relation Extraction&#xff0c;2020&#xff09; 论文&#xff1a;Attention Guided Graph Convolutional Networks for Relation Extraction&#xff0c;2020 1.1 引言 依…

笔试强训第一天

选择题&#xff1a; 题目1&#xff1a; 我们对这道题目进行分析&#xff1a;第一个打印的是computer没有什么问题&#xff0c;但是第二个%5.3s我们需要进行分析&#xff1a; %m.ns m表示输出字符串的宽度&#xff0c;这里输出字符串的宽度为5 n表示左起截取目标字符串的n个…

m基于OFDM系统,对比SC算法,Minn算法,PARK算法同步性能matlab仿真分析

目录 1.算法描述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法描述 OFDM系统下对比SC算法&#xff0c;Minn算法&#xff0c;PARK算法同步性能matlab仿真分析。OFDM系统中的定时估计和频率频率算法——时频联合估计的SC算法&#xff0c;由Schmidl和Cox提出…

Python入门自学进阶-Web框架——27、DjangoAdmin项目应用-数据记录操作2

四、对数据记录删除 1、首先是配置整个流程框架&#xff0c;使整个流程运转顺利&#xff1a; 路由项添加&#xff1a;path(<str:app_name>/<str:table_name>/<int:id_num>/delete/,views.rec_obj_delete,namerec_delete), 主要是匹配记录的id和delete字符…

【LeetCode每日一题:809.情感丰富的文字~~~双指针+计数器】

题目描述 有时候人们会用重复写一些字母来表示额外的感受&#xff0c;比如 “hello” -> “heeellooo”, “hi” -> “hiii”。我们将相邻字母都相同的一串字符定义为相同字母组&#xff0c;例如&#xff1a;“h”, “eee”, “ll”, “ooo”。 对于一个给定的字符串 S…

MyBatis核心对象简介说明

转自: MyBatis核心对象简介说明 MyBatis 有三个基本要素&#xff1a; 核心接口和类MyBatis核心配置文件&#xff08;mybatis-config.xml&#xff09;SQL映射文件&#xff08;mapper.xml&#xff09;下面首先介绍 MyBatis 的核心接口和类&#xff0c;如下图 每个 MyBatis 应…

华为云会议网络研讨会,按次订购更方便!

如今&#xff0c;云会议已经成为日常办公协作的常态&#xff0c;但在线发布会、大型培训会、大型招聘会等大型会议&#xff0c;常规云会议由于会议容量有限、人多会控难、角色单一等技术限制&#xff0c;已经无法满足大型会议的需求&#xff0c;此时&#xff0c;网络研讨会便能…

【电商】电商后台系统整体介绍

电商后台系统支撑了电商企业亿万级的交易量&#xff0c;其重要性不言而喻。本文章将从电商后台系统的的各个模块来分析&#xff0c;让大家的后台真正”硬“起来。 当前关于产品经理的文章主要偏向方法论、业界动向、产品分析、用户体验、交互等&#xff0c;关于后台系统的文章比…

m在simulink进行DS-CDMA建模,然后通过MATLAB调用simulink模型进行误码率仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法描述 研究信道编码在噪声和衰落信道条件下传输和保护数据或图像类型源的性能。在工作于AWGN和瑞利衰落信道&#xff08;可根据需要选择信道类型&#xff09;的Simulink中创建二进制PSK&#x…