如何将 Bamboo agent 能力迁移到极狐GitLab tag 上?

news/2024/9/22 18:37:57/

极狐GitLab 是 GitLab 在中国的发行版,专门面向中国程序员和企业提供企业级一体化 DevOps 平台,用来帮助用户实现需求管理、源代码托管、CI/CD、安全合规,而且所有的操作都是在一个平台上进行,省事省心省钱。可以一键安装极狐GitLab,详情可以参考极狐GitLab 下载安装官网。

GitLab 中文版学习资料

  • 驭码CodeRider 官网:https://coderider.gitlab.cn/
  • GitLab 中文版官网:https://gitlab.cn
  • GitLab 中文文档:https://docs.gitlab.cn
  • GitLab 中文下载安装:https://gitlab.cn/install

本文将演示如何使用极狐GitLab Runer tags 来完成复杂 CI/CD 流水线的构建。

CI 流水线通常在开始的时候都比较简单—— 就是一个简单的作业来构建二进制文件并且将它推送到制品库或者某个生产环境上。变更频繁的软件需求就引入了更多的复杂性,比如添加更多的作业来在最终构建作业被执行之前,执行一些特定的检查或者审查一些输出。

当构建预期针对具有不同系统架构或资源需求的不同系统时,这些复杂性会呈指数级增加。这在支持多个部署平台的操作系统、移动应用程序或软件发行版等项目中很明显。为了满足这些类型环境中构建的不同需求,拥有多个满足所需要求的 Runner 是关键,这就是极狐GitLab Runner tag 的用武之地。如果你使用的是 Atlassian 的 Bamboo,它们被称为“代理功能”。

Runner tag 允许通过支持特定用例的 tag 来对 Runner 进行组织管理;然后使用这些 tag 来确保 CI 作业在满足其要求的 Runner 上运行。一项作业可能需要仅少数运行者可用的 GPU 资源;将作业标记到 Runner 的标签允许将其调度到具有 GPU 的 Runner 上。

Bamboo 上的 Agent 功能用于通过指定必须匹配或可用于在 Bamboo agent上运行的作业的二进制文件或自定义标识符来实现相同的功能。在这篇博文中,我们将研究如何将 Bamboo agent 功能转换为极狐GitLab Runner tag。

Bamboo 有不同的 agent 能力:

  • 可执行功能指定代理上可用的可执行文件。

  • JDK 功能指定 Java 开发工具包已安装并可用于构建。

  • 版本控制功能让 Bamboo 了解 agent 上设置的版本控制系统以及客户端应用程序所在的位置。

  • Docker 功能用于定义为 Docker 任务安装 Docker 的agent。

  • 自定义功能使用键/值标识符来标识 agent 提供的独特功能。

极狐GitLab 通过 tag 来识别 Runner 让流程变得更加简单,其中一些可以分配多个 tag 来表示它们可以为作业提供不同的功能。下面来演示如何在极狐GitLab Runner 中使用 tag。

极狐GitLab Runner 中添加 tag

在安装完极狐GitLab 实例以后进行 Runner 注册时,其中一个步骤就是提供一系列用逗号隔开的 tag 的名称。如果在 CI/CD 流水线中的某个 stage 中不提供任何 tag,你通常可以通过编辑 /etc/gitlab-runner/config.toml文件来添加遗漏的 tag。

你还可以通过访问 Runner 的编辑界面并且更新 tags字段来管理极狐GitLab Runner tag。你可以选择让 Runner 只执行有适当 tag 的作业,或者当没有标记 tag 的作业在运行时,Runner 可以执行这些没有 tag 标记的作业。Run untagger jobs需要开启才能完成上面的功能。

gitlabciyml_tag_60">在 .gitlab-ci.yml文件中使用 tag

为了用特定的 Runner 运行作业,在作业的配置中添加相关的 tag 就行,比如:

build_ios:image: macos-13-xcode-14stage: buildscript:- bundle check --path vendor/bundle || bundle install --path vendor/bundle --jobs $(nproc)- bundle exec fastlane buildtags: - saas-macos-medium-m1

在上面的例子中,该作业仅在具有 M1 芯片并且标记为 saas-macos-medium-m1macOS 设备上运行的 Runner 来构建 iOS 应用程序。

使用多个 tag

一个作业可以指定多个 tag 来针对不同范围的 Runner,特别是在软件开发生命周期中运行多个 Fleet Runner 的组织中。仅当找到具有该作业所标记的所有 tag 的 Runner 时,作业才会运行。比如,如果一个作业有 [linux,android,fastlane]这些标签,一个具有 [android,fastlane]或 [linux,android]标签的 Runner 将不会执行该作业,因为没有完整的 tag 能够和 Runner 相匹配。

具有 tag 和变量的动态作业

你可以使用变量来决定 tag 的值,从而来动态影响哪个 Runner 来选择哪个作业。比如:

variables:KUBERNETES_RUNNER: kubernetesjob:tags:- docker- $KUBERNETES_RUNNERscript:- echo "Hello runner selector feature"

在这个例子中,只有具有 kubernetestag 的 Runner 才会执行作业。你还可以进一步的使用 parallel:matrix关键字来处理更复杂的流水线。比如:

deploystacks:stage: deployparallel:matrix:- PROVIDER: awsSTACK: [monitoring, app1]- PROVIDER: gcpSTACK: [data]tags:- ${PROVIDER}-${STACK}environment: $PROVIDER/$STACK

这个例子有三个并行执行的作业,每个作业都有不同的 tag,分别是 aws-monitoringaws-app1gcp-data,这样就正好匹配到了三个不同的 Runner。

极狐GitLab CI 配置中使用 tag 给了用户更多的灵活性,来决定何地以及如何正确构建你的应用程序,也让资源的使用更高效,因为这能够将稀缺资源限定到特定的 Runner 上,并且决定如何将 Runenr 分配到不同的作业上。

极狐GitLab 作为 GitLab 的发行版,专门为中国程序员和企业服务,也是一个一体化的 DevOps 平台,同样具有极狐GitLab CI/CD功能,用法和上面所示一样。


http://www.ppmy.cn/news/1512279.html

相关文章

重构版:链动3+1创新裂变模式解析

链动31模式,作为一种创新的市场扩张策略,专注于通过产品的独特魅力驱动用户自主传播与裂变。与传统的链动21模式相比,它在结构上进行了重大革新,不再局限于传统的太阳线裂变方式,而是引入了四四复制的架构,…

Spring 中StaticListableBeanFactory

StaticListableBeanFactory 是 Spring Framework 中的一个类,位于 org.springframework.beans.factory.support 包中。它是一个简单的 ListableBeanFactory 实现,主要用于提供对静态 bean 的访问。这个类通常用于测量、监控或测试目的,允许被…

《计算机操作系统》(第4版)第2章 进程的描述与控制 复习笔记

第2章 进程的描述与控制 一、前趋图和程序执行 1. 前趋图 (1)定义 前趋图是指一个有向无循环图,可记为DAG, 它用于描述进程之间执行的先后顺序。 (2)图形表示 前趋图如图2-1所示。 图2-1 前趋图 2. 程序的执行 (1)程序顺序执行时的特征 ①顺序性。 ②封闭性。 ③ 可…

接口自动化测试怎么做?该怎么学习

一. 什么是接口测试 顾名思义,接口测试是对系统或组件之间的接口进行测试,主要是校验数据的交换,传递和控制管理过程,以及相互逻辑依赖关系。其中接口协议分为HTTP,WebService,Dubbo,Thrift,Socket等类型,测试类型又主…

EmguCV学习笔记 VB.Net 4.1 颜色变换

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 教程VB.net版本请访问:EmguCV学习笔记 VB.Net 目录-CSDN博客 教程C#版本请访问:EmguCV学习笔记 C# 目录-CSD…

Nginx反向代理功能

反向代理:reverse proxy,指的是代理外网用户的请求到内部的指定的服务器,并将数据返回给用户的 一种方式,这是用的比较多的一种方式。 Nginx 除了可以在企业提供高性能的web服务之外,另外还可以将 nginx 本身不具备的…

架站点云自动拼接

southLidar pro 软件里面的架站点云无目标、无传感器的点云自动拼接算法,该算法的特征是速度快,精度高、稳定性高,大部分的场景都能一键自动拼接成功。速度、稳定性:比RealWorks 12、SCENE 2019等软件都快。精度:高于S…

计算机的错误计算(六十八)

摘要 计算机的错误计算(六十三)探讨了大数的余切函数值的错误计算。本节讨论另外一种类型数值: 附近数 的余切函数的计算精度问题。 例1. 已知 计算 不妨在Visual Studio 2010下计算: double x43.98229715; double y1/t…