【基于 GitLab 的 CI/CD 实践】02、gitlab-runner 实践

目录

一、gitlab-runner 简介

1.1 要求

1.2 特点

二、GitLab Runner 安装

2.1 使用 GItLab 官方仓库安装

2.2 使用 deb/rpm 软件包

2.3 在容器中运行 GitLab Runner

三、GitLab Runner 注册

3.1 GitLabRunner 类型

3.2 获取 runner token

获取 shared 类型 runner token  

​获取 group 类型的 runner token  

​获取 specific 类型的 runner token  

3.3 进行注册

四、GitLab Runner 命令

4.1 启动命令

4.2 注册命令

4.3 服务管理

五、运行流水线任务(效果演示)

5.1 编写一个简单的 yml 文件

5.2 测试流水线


一、gitlab-runner 简介

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

1.1 要求

  • GitLab Runner 是用 Go 编写的,可以作为一个二进制文件运行,不需要特定于语言的要求。它旨在在 GNU/Linux,macOS 和 Windows 操作系统上运行。只要您可以在其他操作系统上编译 Go 二进制文件,其他操作系统就可能会运行。

  • 如果要使用 Docker,请安装最新版本。GitLab Runner 需要最少的 Docker v1.13.0

  • GitLab Runner 版本应与 GitLab 版本同步。尽管较旧的 Runner 仍可以使用较新的 GitLab 版本,反之亦然,但在某些情况下,如果版本存在差异,则功能可能不可用或无法正常工作。在次要版本更新之间可以保证向后兼容性,但是请注意,GitLab 的次要版本更新会引入新功能,这些新功能将要求 Runner 在同一次要版本上使用。

1.2 特点

  • 允许运行:

    • 同时执行多个作业。

    • 对多个服务器(甚至每个项目)使用多个令牌。

    • 限制每个令牌的并行作业数。

  • 可以运行作业:

    • 在本地。

    • 使用 Docker 容器。

    • 使用 Docker 容器并通过 SSH 执行作业。

    • 使用 Docker 容器在不同的云和虚拟化管理程序上自动缩放。

    • 连接到远程 SSH 服务器。

  • 用 Go 编写并以单个二进制文件的形式分发,而没有其他要求。

  • 支持 Bash,Windows Batch 和 Windows PowerShell。

  • 在 GNU / Linux,macOS 和 Windows(几乎可以在任何可以运行 Docker 的地方)上运行。

  • 允许自定义作业运行环境。

  • 自动重新加载配置,无需重启。

  • 易于使用的设置,并支持 Docker,Docker-SSH,Parallels 或 SSH 运行环境。

  • 启用 Docker 容器的缓存。

  • 易于安装,可作为 GNU / Linux,macOS 和 Windows 的服务。

  • 嵌入式 Prometheus 指标 HTTP 服务器。

  • 裁判工作者监视 Prometheus 度量标准和其他特定于工作的数据并将其传递给 GitLab。

二、GitLab Runner 安装

2.1 使用 GItLab 官方仓库安装

参考官方文档:使用官方极狐GitLab 仓库安装极狐GitLab Runner | 极狐GitLab 

2.2 使用 deb/rpm 软件包

清华源下载地址:Index of /gitlab-runner/yum/el7/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

# 安装
rpm -ivh gitlab-runner-15.3.3-1.x86_64.rpm

# 启动服务
systemctl start gitlab-runner

2.3 在容器中运行 GitLab Runner

参考官方文档:在容器中运行极狐GitLab Runner | 极狐GitLab

三、GitLab Runner 注册

官方参考文档:注册 Runner | 极狐GitLab 

大概过程:获取 runner token -> 进行注册 

3.1 GitLabRunner 类型

  • shared:运行整个平台项目的作业(gitlab)

  • group:运行特定 group 下的所有项目的作业(group)

  • specific: 运行指定的项目作业(project)

  • locked:无法运行项目作业

  • paused:不会运行作业

3.2 获取 runner token

获取 shared 类型 runner token  

需要管理员访问极狐 GitLab 管理中心并点击 概览 > Runner。 

获取 group 类型的 runner token  

访问 设置 > CI/CD 并展开 Runner

​ 获取 specific 类型的 runner token  

进入具体的项目 -> Settings -> CI/CD -> Runners -> Specific Runners  

​ 

3.3 进行注册

方式一:交互式注册

官方步骤:注册 Runner | 极狐GitLab 

[root@run01 ~]# gitlab-runner register
Runtime platform                                    arch=amd64 os=linux pid=3293 revision=f767c145 version=15.3.3
Running in system-mode.                            
                                                   
Enter the GitLab instance URL (for example, https://gitlab.com/):
http://192.168.170.133/
Enter the registration token:
GR1348941sUxNyye1qD4HcTSW-TMw
Enter a description for the runner:
[run01]: test
Enter tags for the runner (comma-separated):
build
Enter optional maintenance note for the runner:
this is d test
Registering runner... succeeded                     runner=GR1348941sUxNyye1
Enter an executor: custom, parallels, shell, docker-ssh+machine, docker, docker-ssh, ssh, virtualbox, docker+machine, kubernetes:
shell
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
 
Configuration (with the authentication token) was saved in "/etc/gitlab-runner/config.toml" 

方式二:直接注册

参考官方文档:注册 Runner | 极狐GitLab

效果:注册了一个指定的 runner 并且是锁定状态的

四、GitLab Runner 命令

GitLab Runner 包含一组命令,可用于注册,管理和运行构建。

4.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

4.2 注册命令

gitlab-runner register      # 默认交互模式下使用,非交互模式添加 --non-interactive
gitlab-runner list          # 此命令列出了保存在配置文件中的所有运行程序
gitlab-runner verify        # 此命令检查注册的 runner 是否可以连接,但不验证 GitLab 服务是否正在使用 runner。 --delete 删除
gitlab-runner unregister    # 该命令使用 GitLab 取消已注册的 runner。


# 使用令牌注销
gitlab-runner unregister --url http://xxx/ --token t0kxx

# 使用名称注销(同名删除第一个)
gitlab-runner unregister --name test-runner

# 注销所有
gitlab-runner unregister --all-runners

4.3 服务管理

gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner

# --user 指定将用于执行构建的用户
# --working-directory  指定将使用 Shell executor 运行构建时所有数据将存储在其中的根目录

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

# 也可以是使用 systemctl 管理 runner

五、运行流水线任务(效果演示)

5.1 编写一个简单的 yml 文件

在 gitlab 仓库中项目根目录添加一个 .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"

这个流水线共包含两个 job,分别是 build 和 deploy

  build job 包含一个 stage build。 build stage 配置了在具有 build 标签的 runner 中运行,限制为 master 分支提交,运行构建命令。

  deploy job 包含一个 stage deploy。 deploy stage 配置了在具有 deploy 标签的 runner 中运行,限制为 master 分支提交,运行发布命令。

5.2 测试流水线

编写好 yml 文件之后,开始模拟在 master 分支提交代码,此时会发现流水线正在运行。 

上一篇文章:【基于 GitLab 的 CI/CD 实践】01、GitLab CI/CD 基础概念_Stars.Sky的博客-CSDN博客

下一篇文章:【基于 GitLab 的 CI/CD 实践】03、GitLab Pipeline 实践(上)_Stars.Sky的博客-CSDN博客

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

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

相关文章

Redis双写一致性?

双写一致性&#xff1a;当修改了数据库的数据也要同时更新缓存的数据&#xff0c;缓存和数据库的数据要保持一致。 Redis作为缓存&#xff0c;mysql的数据如何与redis进行同步呢&#xff1f;&#xff08;双写一致性&#xff09; 1.我们当时做排行榜业务时&#xff0c;把历史榜…

RabbitMQ 同样的操作一次成功一次失败

RabbitMQ 是一个功能强大的消息队列系统&#xff0c;广泛应用于分布式系统中。然而&#xff0c;我遇到这样的情况&#xff1a;执行同样的操作&#xff0c;一次成功&#xff0c;一次失败。在本篇博文中&#xff0c;我将探讨这个问题的原因&#xff0c;并提供解决方法。 我是在表…

分布式定时任务组件:XXL-JOB

一、GitHub源码地址 https://github.com/xuxueli/xxl-job 二、部署文档 参考&#xff1a;https://blog.csdn.net/qq798867485/article/details/131415408 三、初始化数据库SQL 1、xxl_job_user XxlJob-用户管理 2、xxl_job_group XxlJob-执行器管理 3、xxl…

AI炒股:用Claude来分析A股2023年中报业绩预告

Claude是和ChatGPT类似的AI大模型&#xff0c;据测试 AI 的水平能力接近 GPT-4&#xff0c;支持高达 100K token 的上下文。Claude只需要到官方网站注册账号后就可以直接免费使用。不过&#xff0c;目前智能美国和英国的 IP 可以注册和使用。 Claude支持上传文档功能&#xff…

基于单片机的蓝牙音乐喷泉的设计与实现

功能介绍 以51单片机作为主控系统&#xff1b;通过HM-18蓝牙音频模块进行无线传输&#xff1b; 通过LM386功放模块对音频信号进行放大&#xff1b;手机端可以直接控制音频播放&#xff0c;并且最远距离可达20米&#xff1b;手机端可以进行任意音乐切换&#xff0c;播报、暂停&a…

Sql构建

Sql构建 SQL 构建对象介绍 之前通过注解开发时&#xff0c;相关 SQL 语句都是直接拼写的&#xff0c;一些关键字写起来比较麻烦、而且容易出错 MyBatis 提供了 org.apache.ibatis.jdbc.SQL 功能类&#xff0c;专门用于构建 SQL 语句 sql拼接测试&#xff1a; public class …

ROS:nodelet

目录 一、前言二、概念三、作用四、使用演示4.1案例简介4.2nodelet 基本使用语法4.3内置案例调用 五、nodelet实现5.1需求5.2流程5.3准备5.4创建插件类并注册插件5.5构建插件库5.6使插件可用于ROS工具链5.6.1配置xml5.6.2导出插件 5.7执行 一、前言 ROS通信是基于Node(节点)的…

SpringCloud学习路线(4)—— Nacos注册中心

一、认识和安装Nacos &#xff08;一&#xff09;概念&#xff1a; Nacos是Alibaba的产品&#xff0c;现在是SpringCloud中的一个组件&#xff0c;相较于Eureka功能更加丰富。 &#xff08;二&#xff09;下载地址&#xff1a; https://github.com/alibaba/nacos/releases &am…

UTM 4.3 发布:在 macOS 上优雅的使用 QEMU 虚拟化 Windows、Linux 和 macOS

UTM 4.3 发布&#xff1a;在 macOS 上优雅的使用 QEMU 虚拟化 Windows、Linux 和 macOS 在 iOS 中虚拟化 Windows、Linux 和 Unix 请访问原文链接&#xff1a;https://sysin.org/blog/utm-4/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xf…

活动页服务端渲染探索

目标 通过采用在服务端渲染激励页的方式&#xff0c;降低页面加载白屏时间&#xff0c;从而提升激励 H5 渲染体验。 架构设计 前端服务框架调研选型 只对比分析以下两种方案&#xff1a; Vue3 Nuxt3 WebpackNext.js React Node.js ’Nuxt3Next.js介绍Nuxt是一个基于Vu…

navicate_windows_14

1.新建文本文档2.输入如下内容 echo off set dnInfo set dn2ShellFolder set rpHKEY_CURRENT_USER\Software\Classes\CLSID :: reg delete HKEY_CURRENT_USER\Software\PremiumSoft\NavicatPremium\Registration14XCS /f %针对<strong><font color"#FF0000"…

文心一言 VS 讯飞星火 VS chatgpt (62)-- 算法导论6.5 1题

文心一言 VS 讯飞星火 VS chatgpt &#xff08;62&#xff09;-- 算法导论6.5 1题 一、试说明 HEAP-EXTRACT-MAX在堆A(15&#xff0c;13&#xff0c;9&#xff0c;5&#xff0c;12&#xff0c;8&#xff0c;7&#xff0c;4&#xff0c;0&#xff0c;6&#xff0c;2&#xff0c…

06-C++ 基本算法 - 二分法

&#x1f4d6; 前言 在这个笔记中&#xff0c;我们将介绍二分法这种基本的算法思想&#xff0c;以及它在 C 中的应用。我们将从一个小游戏猜数字开始&#xff0c;通过这个案例来引出二分法的概念。然后我们将详细讲解什么是二分法以及它的套路和应用。最后&#xff0c;我们还会…

为什么弹性内容交付网络是决定网站性能的关键

如今的用户对于所访问网站都对网站有自己的标准&#xff0c;他们期望访问的网站性能良好&#xff0c;具有快速的页面加载时间和易于访问、新鲜且动态的内容&#xff0c;同时他们还希望享受无缝且安全的体验&#xff0c;无需停机或内容访问受到限制。比如微博等平台每次在网络热…

centos7安装 mongodb

一、rpm安装 1.1、配置MongoDB Enterprise的yum 源文件 [mongodb-enterprise] nameMongoDB Enterprise Repository baseurlhttps://repo.mongodb.com/yum/redhat/$releasever/mongodb-enterprise/3.4/$basearch/ gpgcheck1 enabled1 gpgkeyhttps://www.mongodb.org/static/pgp…

【Python爬虫+可视化案例】采集电商网站商品数据信息,并可视化分析

爬虫可视化案例 &#xff1a;苏宁易购 案例所需要掌握的知识点&#xff1a; selenium的使用html标签数据解析方法 需要准备的环境&#xff1a; python 3.8pycharm 2022专业版selenium python里面的第三方库 可以用来操作浏览器 爬虫代码展示 所需模块 【代码领取 请看文末…

开发工具篇第二十六讲:使用IDEA进行本地调试和远程调试

开发工具篇第二十六讲&#xff1a;使用IDEA进行本地调试和远程调试 Debug用来追踪代码的运行流程&#xff0c;通常在程序运行过程中出现异常&#xff0c;启用Debug模式可以分析定位异常发生的位置&#xff0c;以及在运行过程中参数的变化&#xff1b;并且在实际的排错过程中&am…

C++-string类的模拟实现

本博客基于C官方文档当中给出的string类当中的主要功能实现&#xff0c;来作为参照&#xff0c;简单模拟实现 My-string 。 对于C当中的string类的介绍&#xff0c;在之前的几篇博客当中有说明&#xff0c;如有问题&#xff0c;请参照一下两个博客文章进行参考&#xff1a; (2…

使用 Pytest 运行 yaml 文件来驱动 Appium 自动化测试

目录 前言&#xff1a; 获取 yaml 文件 YamlTest 测试类 Appium 初始化 Pytest 测试类 自定义 runtest demo&#xff1a; 自定义错误输出 Yaml 使用方式规则 前言&#xff1a; 使用Pytest来运行yaml文件来驱动Appium自动化测试是一种方便且灵活的方法。通过将测试数据…

CSS 渐变边框及动画

转载请注明出处&#xff0c;点击此处 查看更多精彩内容 用 CSS 实现渐变边框及动画&#xff0c;下面对关键点进行解释说明&#xff0c;查看完整代码及预览效果请 点击这里。 简单说明原理&#xff1a;使用伪元素 ::before 绘制一个渐变色&#xff0c;然后使用伪元素 ::after 绘…