当前位置: 首页 > news >正文

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

极狐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需要开启才能完成上面的功能。

在 .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功能,用法和上面所示一样。

相关文章:

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

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

正则表达式入门:Python ‘ re ‘ 模块详解

正则表达式(Regular Expression,简称 re)是一种强大而灵活的工具,广泛用于字符串匹配、替换和分割等操作,尤其在处理网页爬虫数据时非常有用。Python 提供了 " re " 模块来支持正则表达式的使用,…...

thinkphp8.0+aliapy(支付宝)pc网站支付

环境&#xff1a;宝塔-centOS8.5,php8.3 第一步&#xff1a;安装alipay v3版本的安装依赖包&#xff1b; composer require alipaysdk/openapi:dev第二步&#xff1a;根据官方文档,把支付相关的类引用进来&#xff1b; <?php declare (strict_types 1);namespace app\p…...

高速信号的眼图、加重、均衡

目录 高速信号的眼图、加重、均衡眼图加重均衡线性均衡器CTLE判决反馈均衡器DFE 高速信号的眼图、加重、均衡 眼图 通常用示波器观察接收信号波形的眼图来分析码间串扰和噪声对系统性能的影响&#xff0c;从而估计系统优劣程度&#xff0c;因而眼图分析是高速互连系统信号完整…...

2024年PMP考前冲刺必背的学习笔记,整理好给你!

项目的四大特点:临时性、独特性、变革驱动性和创造商业价值。 项目管理&#xff1a;将知识、技能、工具与技术应用于项目活动&#xff0c;以满足项目的要求 Pestle&#xff1a;P政治&#xff0c;E经济&#xff0c;S社会&#xff0c;T技术&#xff0c;L法律&#xff0c;E环境 …...

增加服务器带宽可以提高资源加载速度吗?

答案是可以的 &#xff0c;增加服务器带宽通常能够提高资源加速速度。带宽是服务器与互联网之间传输数据的速率&#xff0c;它决定了在单位时间内可以传输的数据量。以下是增加带宽如何提高资源加速速度的几个方面&#xff1a; 1.更快的数据传输&#xff1a;带宽增加后&#xf…...

汽车EDI: NAVISTAR EDI对接

Navistar International Corporation 是一家美国商用车辆制造公司&#xff0c;总部位于伊利诺伊州的Lisle。公司以生产中型和重型卡车、公共汽车、柴油发动机和底盘闻名&#xff0c;其产品广泛应用于运输、建筑、和农业等行业。Navistar 的历史可以追溯到1831年&#xff0c;由国…...

【Word多级标题完整设置】设置各级标题样式将多级列表链接到各级标题样式中

Word多级标题完整设置 一、设置各级标题样式主标题样式设置中英文字体、字形以及字号设置段落设置&#xff08;缩进、间距和行距&#xff09; 一级标题样式设置中英文字体、字形以及字号设置段落设置&#xff08;缩进、间距和行距&#xff09; 二级标题样式设置中英文字体、字形…...

不同分辨率下vue页面的高度自适应

1. 使用视口单位 .element { height: 100vh; /* 使得元素高度等于视口高度的100% */ /* 可以减去一部分高度以适应页眉或页脚 */ height: calc(100vh - 100px); } 2. 使用百分比&#xff08;%&#xff09;高度 .parent { height: 100vh; /* 父元素高度等于视口高度 */…...

“野生钢铁侠 “ 稚晖君一连亮出5 款智元人形机器人,地表最强!

打麻将、拆快递、纽扣穿针&#xff0c;还能做 30KG 重物提拉&#xff01; 沉寂一年&#xff0c;稚晖君带着他的二代机器人全家桶重磅回归&#xff0c;秀出的各种新技能令人眼前一亮。 智东西 8 月 18 日报道&#xff0c;今日&#xff0c;" 野生钢铁侠 " 稚晖君一连亮…...

JSON Web Token (JWT): 理解与应用

JWT&#xff08;JSON Web Token&#xff09;是一种开放标准&#xff08;RFC 7519&#xff09;&#xff0c;它定义了一种紧凑且自包含的方式&#xff0c;用于在各方之间以JSON对象的形式安全地传输信息。JWT通常用于身份验证和授权目的&#xff0c;因为它可以使用JSON对象在各方…...

LeetCode面试题Day12|LC209 长度最小的子数组、LC30 串联所有单词的子串

题目一&#xff1a; 指路&#xff1a; . - 力扣&#xff08;LeetCode&#xff09;209 长度最小的子数组 思路与分析&#xff1a; 滑动窗口&#xff0c;目的在于降低算法的时间复杂度&#xff0c;每次只维护一定长度的数组而非原数组的全部元素。那么既然需要长度&#xff0…...

【开端】JAVA泛型类的使用

一、这是一个类 public class CommonVo<D extends CommonDao> implements Serializable { 我们来探讨一样 CommonVo<D extends CommonDao> 这个尖括号里到底能写啥。 首先这是一个泛型类型D &#xff0c;D类继承了CommonDao&#xff0c;说明尖括号里只要放入一…...

mp3转换器免费有哪些?6个音频转换器助你一键转换各种音频

音乐如同生活的调味剂&#xff0c;让每一个平凡瞬间都跃动着不凡的旋律。 但有时候&#xff0c;当你想把这些歌曲放到你的设备上时&#xff0c;却发现格式不兼容&#xff0c;无法播放。 别担心&#xff01;接下来&#xff0c;我们将介绍几款免费mp3转换工具&#xff0c;它们能…...

力扣爆刷第174天之TOP200五连刷136=140(最小k数、字典序、跳跃游戏)

力扣爆刷第174天之TOP200五连刷136140&#xff08;最小k数、字典序、跳跃游戏&#xff09; 文章目录 力扣爆刷第174天之TOP200五连刷136140&#xff08;最小k数、字典序、跳跃游戏&#xff09;一、LCR 159. 库存管理 III二、450. 删除二叉搜索树中的节点三、440. 字典序的第K小…...

蚁群算法原理与实战(Python、MATLAB、C++)

蚁群算法 1.蚁群算法来源 蚁群算法&#xff08;Ant Colony Optimization&#xff0c;简称ACO&#xff09;是一种模拟自然界中蚂蚁寻找食物路径行为的优化算法&#xff0c;主要用于解决组合优化问题。它的灵感来源于意大利学者Marco Dorigo在1992年提出的蚂蚁系统模型。 蚁群算…...

HTML静态网页成品作业(HTML+CSS)——非遗阜阳剪纸介绍设计制作(1个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有1个页面。 二、作品演示 三、代…...

如何做萤石开放平台的物联网卡定向?

除了用萤石自带的4G卡外&#xff0c;我们也可以自己去电信、移动和联通办物联网卡连接萤石云平台。 1、说在前面 注意&#xff1a;以下流程必须全部走完&#xff0c;卡放在设备上才能连接到萤石云平台。 2、大致流程 登录官网→下载协议→盖章&#xff08;包括骑缝章&#…...

ptrade排坑日记——定时任务执行后,文件权限会变化。

前言 今天要和大家分享的是使用ptrade的定时任务过后&#xff0c;执行的时候&#xff0c;文件权限会发生变化&#xff01; 一、问题描述 定时任务执行后&#xff0c; /home/fly/data/fundamentals_daily/all.pickle、/home/fly/data/valuation_new/all.pickle 文件权限会从…...

TILs 评分:TCGA 肿瘤浸润淋巴细胞病理切片深度学习评分!图片下载与可视化

生信碱移 病理切片的TILs评分 TCGA 数据库是最大的肿瘤组学公开数据库之一。尽管如此&#xff0c;更多的研究往往仅局限于关注 TCGA 中各类肿瘤样本的上游组学信息或基本病理特征&#xff0c;而忽略了对样本数字化 H&E 病理染色图像的进一步应用。 ▲ TCGA中肿瘤样本的病…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢&#xff0c;博主的学习进度也是步入了Java Mybatis 框架&#xff0c;目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学&#xff0c;希望能对大家有所帮助&#xff0c;也特别欢迎大家指点不足之处&#xff0c;小生很乐意接受正确的建议&…...

基于服务器使用 apt 安装、配置 Nginx

&#x1f9fe; 一、查看可安装的 Nginx 版本 首先&#xff0c;你可以运行以下命令查看可用版本&#xff1a; apt-cache madison nginx-core输出示例&#xff1a; nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式&#xff08;Singleton Pattern&#…...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析&#xff1a;CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展&#xff0c;AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者&#xff0c;分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

华硕a豆14 Air香氛版,美学与科技的馨香融合

在快节奏的现代生活中&#xff0c;我们渴望一个能激发创想、愉悦感官的工作与生活伙伴&#xff0c;它不仅是冰冷的科技工具&#xff0c;更能触动我们内心深处的细腻情感。正是在这样的期许下&#xff0c;华硕a豆14 Air香氛版翩然而至&#xff0c;它以一种前所未有的方式&#x…...

Spring是如何解决Bean的循环依赖:三级缓存机制

1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间‌互相持有对方引用‌,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...

嵌入式学习笔记DAY33(网络编程——TCP)

一、网络架构 C/S &#xff08;client/server 客户端/服务器&#xff09;&#xff1a;由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序&#xff0c;负责提供用户界面和交互逻辑 &#xff0c;接收用户输入&#xff0c;向服务器发送请求&#xff0c;并展示服务…...

Python Ovito统计金刚石结构数量

大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...