如何使用极狐GitLab CI/CD Component Catalog?【上】

news2024/11/10 11:22:20

极狐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

关联阅读

  • include 语法减少 CI/CD Pipeline 代码冗余,提升构建效率
  • 极狐GitLab 企业级 CI/CD 规模化落地实践指南(一)

计算机中的所有问题都可以通过增加一个间接层来解决。

                                                                         —— David Wheeler(大卫·惠勒)

编写 CI/CD 流水线是 DevOps 工程师最常见的工作。当有新功能、新工具需要添加到 CI/CD 流水线中时,DevOps 工程师就要去改造流水线;当有新项目启动时,DevOps 工程师就需要从零到一构建新的流水线。

很多时候,快速构建流水线的方法往往是copy --> paste --> modification。虽然项目不同,但是 CI/CD 流水线的步骤都很相似(构建、测试、部署等)。克隆一份既有项目的流水线,再根据新项目的不同点做一些改动,就能完成新流水线的打造。

当然,如果新项目少的时候,这种方式也是一种很快乐的方式,毕竟 copy & paste 是一种费体力而不费脑力的劳作方式,而且很容易出成绩(一个项目的流水线可以洋洋洒洒搞出上百行甚至几百行的流水线代码)。

但是随着新项目数量的增加,这种手工劳作方式容易体力不支;如果 copy 的模版出现了问题,则需要对所有的流水线都去做修改,这时候就容易升天,更别说对所有流水线进行版本管理、安全补丁等日常维护了。

复用性:CI/CD 工具的必选项

上面的问题体现了 CI/CD 流水线构建的核心诉求之一 —— 复用。简单理解复用,就是将有共性的流水线块抽象出来(比如 Java 项目的构建、容器镜像的构建),将它们当作“模版”,其他人无需重复造轮子(copy & paste),只要简单引用就能使用这些流水线块来快速构建流水线,而且后期的维护也会变得很简单。这就是文章开头大卫·惠勒的名言在 DevOps 领域的实践了。

极狐GitLab CI 是一款成熟、用户体量超大的 CI/CD 工具。复用性也是其这几年 CI/CD 功能演进的一个重要方向。之前就有 template 功能,方便用户引用不同的模版来快速构建流水线,而且极狐GitLab 本身还内置了很多安全检测的模版,比如 SAST、DAST、容器镜像扫描等,用户可以直接用 include: template 语法来在 CI/CD 中引用。关于 include 的详细用法,可以参考过往的技术内容 include 语法减少 CI/CD Pipeline 代码冗余,提升构建效率。

关注极狐GitLab 公众号,后台回复“白皮书”关键字,免费领取极狐GitLab CI/CD 企业级实践白皮书。

为了进一步提升 CI/CD 流水线的复用性、可用性,极狐GitLab 在过去的几个版本中又引入了两个堪称王炸级别的功能 —— CI/CD component 和 CI/CD Catalog。

CI/CD component

极狐GitLab 自 16.0 版本引入 component 功能(Experimental),在 16.6 版本中将其升级为 Beta 版本。目前最新版本为 16.8。

component 是一种 CI/CD 流水线块(block),可以将某一个作业设置为一个 component,然后发布到 component 仓库中,这样其他用户就可以通过 include: component 语法来直接使用此 component 了。component 有三个要素:component 仓库、component 的发布以及 component 的引用。component 仓库有特殊的目录结构,可以在一个仓库中放多个 component。一个 component 仓库一般包含:

  • README.md:详细描述此仓库中的 component 以及对应的功能和用法。
  • templates 目录:所有的 component 配置都包含在此目录下。可以将包含 component 内容的 YAML 文件直接放置在 template 根目录下,也可以新建一个子目录,放置在子目录下。
  • .gitlab-ci.yml文件:实现 component 的测试和发布自动化。
  • LICENSE.md:许可证信息,标明该仓库的许可使用信息。比如使用 Apache 2.0 或 MIT。
templates
├── LICENSE.md
├── README.md
├── second-component
│   └── template.yml
├── docker-build-image.yml
└── third-component
   ├── backend
   │   └── template.yml
   └── frontend
       └── template.yml

上述的目录结构包含了 4 个可用的 component,每一个 YAML 文件都代表一个 component。比如根目录下的 template.yml文件内容为:

spec:
  inputs:
    stage:
      default: test
    image:
      default: docker:20.10.7-dind
    image_tag:
      default: 1.0.0
    tags:
      default: jh-gitlab
---
component-job-build-image:
  image: $[[ inputs.image ]]
  stage: $[[ inputs.stage ]]
  tags:
    - $[[ inputs.tags ]]
  script:
    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
    - docker build -t dllhb/cicd-component:$[[ inputs.image_tag ]] .
    - docker push dllhb/cicd-component:$[[ inputs.image_tag ]]

这是一个构建 docker 容器镜像并将其推送到极狐GitLab 内置的容器镜像仓库的 component。其他用户可以使用jh.instance.url/org-name/component-repo-name路径来将此 component 引用到自己的流水线中。在 .gitlab-ci.yml文件写入如下内容即可完成该 component 的引用:

include:
  - component: jihulab.com/jh-xiaomage-devops/cicd-catalog/docker-image-build@main
    inputs:
      stage: build      
      image: docker:20.10.7-dind      
      tags: jh 
      image_tag: 1.0.0

触发 CI/CD 流水线可以看到具体的构建过程。

在这里插入图片描述
关于 CI/CD component 的详细使用和解读,可查看技术文章极狐GitLab 企业级 CI/CD 规模化落地实践指南(一)。component 能够让用户在构建 CI/CD 流水线时,不用再重复造轮子,但是如何让优秀、安全的 component 让更多的用户看到并使用呢?答案就是下一篇文要讲的 CI/CD Catalog。

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

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

相关文章

SQL进阶技巧:Hive如何巧解和差计算的递归问题?【应用案例2】

目录 0 问题描述 1 数据准备 2 问题分析 3 小结 0 问题描述 有如下数据:反应了每月的页面浏览量 现需要按照如下规则计算每月的累计阅读量,具体计算规则如下: 最终结果如下: 1 数据准备 with data as( select 2024-01 as month ,2 as pv union all select 2024-02 …

使用MongoDB构建AI:Jina AI将突破性开源嵌入模型变为现实

Jina AI创立于2020年,总部位于德国柏林,主要从事提示工程和嵌入模型业务,已迅速成长为多模态AI领导者。Jina AI积极推动开源和开放研究,致力于弥合先进AI理论与开发者及数据科学家构建的AI驱动型真实世界应用程序之间的差距。目前…

卷积神经网络 - 池化(Pooling)篇

序言 在深度学习的广阔领域中,卷积神经网络( CNN \text{CNN} CNN)以其卓越的特征提取能力,在图像识别、视频处理及自然语言处理等多个领域展现出非凡的潜力。而池化( Pooling \text{Pooling} Pooling)作为…

智慧水务项目(四)django(drf)+angular 18 配置REST_FRAMEWORK

一、说明 建立了几个文件 二、一步一步来 1、建立json_response.py 继承了 Response, 一共三个函数,成功、详情,错误 from rest_framework.response import Responseclass SuccessResponse(Response):"""标准响应成功的返回…

springboot共享汽车租赁管理系统-计算机毕业设计源码99204

目 录 第 1 章 引 言 1.1 选题背景及意义 1.2 研究前期调研 1.3 论文结构安排 第 2 章 系统的需求分析 2.1 系统可行性分析 2.1.1 技术方面可行性分析 2.1.2 经济方面可行性分析 2.1.3 法律方面可行性分析 2.1.4 操作方面可行性分析 2.2 系统功能需求分析 2.3 系统…

机械学习—零基础学习日志(高数18——无穷小与无穷大)

零基础为了学人工智能,真的开始复习高数 学习速度加快! 无穷小定义 这里可以记住,无穷小有一个特殊,那就是零。 零是最高阶的无穷小,且零是唯一一个常数无穷小。 张宇老师还是使用了超实数概念来讲解无穷小。其实是…

《马拉松名将手记:42.195公里的孤独之旅》大迫杰之舞

《马拉松名将手记:42.195公里的孤独之旅》大迫杰之舞 大迫杰,日本田径长跑选手。2020年3月1日,在东京马拉松赛上,以2小时5分29秒获得日本本土冠军,刷新自己保持的日本国家记录,并拿下东京奥运会马拉松项目入…

UE5 从零开始制作跟随的鸭子

文章目录 二、绑定骨骼三、创建 ControlRig四、创建动画五、创建动画蓝图六、自动寻路七、生成 goose八、碰撞 和 Physics Asset缺点 # 一、下载模型 首先我们需要下载一个静态网格体,这里我们可以从 Sketchfab 中下载:Goose Low Poly - Download Free …

黑暗之魂和艾尔登法环有什么联系吗 黑暗之魂和艾尔登法环哪一个好玩 苹果电脑怎么玩Windows游戏 apple电脑可以玩游戏吗

有不少游戏爱好者对于艾尔登法环与经典游戏黑魂之间是否存在关系产生了疑问。在新旧元素的融合中,艾尔登法环注定成为一场别具匠心的冒险之旅。在实机演示中类魂的玩法以及黑魂相似的画风让不少玩家想要了解本作与黑魂是否有联系,今天,我们将…

SAP生产版本维护以及注意事项

事务代码:C223/MM02,CS01,CA01 步骤: CS01创建BOM CA01创建工艺路线 C223/MM02创建生产版本 选择BOM清单 注意: 1、该生产版本与BOM清单绑定在一起,后续如果BOM有多个,需要添加或修改这个生产版本 2、…

进化版:一个C++模板工厂的编译问题的解决。针对第三方库的构造函数以及追加了的对象构造函数。牵扯到重载、特化等

原始版本在这里 一个C模板工厂的编译问题的解决。针对第三方库的构造函数以及追加了的对象构造函数。牵扯到重载、特化等-CSDN博客 问题 1、关于类型的判断&#xff0c;适应性不强 比如template <typename T>IsFarElementId<>&#xff0c;目前只能判断FarElemen…

达梦数据库的系统视图v$cacheitem

达梦数据库的系统视图v$cacheitem 达梦数据库的系统视图V$CACHEITEM的作用是显示缓存中的项信息&#xff0c;在 ini 参数 USE_PLN_POOL !0 时才统计。这个视图帮助数据库管理员监控和分析缓存的使用情况&#xff0c;优化数据库性能。通过查询V$CACHEITEM视图&#xff0c;可以获…

ai web 1.0靶机漏洞渗透详解

一、导入靶机 解压下载好的靶机&#xff0c;然后打开VMware&#xff0c;点击文件》打开》找到刚刚解压的靶机点击下面的文件》打开 确认是靶机的网络连接模式是NAT模式 二、信息收集 1、主机发现 在本机的命令窗口输入ipconfig查看VMnet8这块网卡&#xff0c;这块网卡就是虚…

案例分享—国外优秀ui设计作品赏析

国外UI设计创意迭出&#xff0c;融合多元文化元素&#xff0c;以极简风搭配动态交互&#xff0c;打造沉浸式体验&#xff0c;色彩运用大胆前卫&#xff0c;引领界面设计新风尚 同时注重用户体验的深度挖掘&#xff0c;通过个性化定制与智能算法结合&#xff0c;让界面不仅美观且…

代码随想录第十八天|动态规划(2)

目录 01背包问题——二维数组 01背包问题——一维数组 LeetCode 416. 分割等和子集 LeetCode 1049. 最后一块石头的重量 II LeetCode 494. 目标和 LeetCode 474. 一和零 总结 01背包问题——二维数组 有n件物品和一个最多能放入重量为w的背包。第i件物品的重量是weight…

web基础之CSS

web基础之CSS 文章目录 web基础之CSS一、CSS简介二、基本用法2、CSS应用方式2.1 行内样式2.2内部样式2.3外部样式 三、选择器1、标签选择器2、类选择器3、ID选择器4、选择器的优先级 四、常见的CSS属性1、字体属性2、文本属性3、背景属性4、表格属性5、盒子模型的属性6、定位 总…

LabVIEW激光主动探测系统

开发了一种基于LabVIEW的高性能激光主动探测控制与处理系统的设计与实现。该系统充分利用了LabVIEW的多线程和模块化设计优势&#xff0c;提供了一套功能完整、运行高效且稳定的解决方案&#xff0c;适用于高精度激光探测领域。 项目背景 激光主动探测技术利用激光作为主动光源…

dp专题(二)

洛谷&#xff1a;B3626 跳跃机器人 题目描述 地上有一排格子&#xff0c;共 nn 个位置。机器猫站在第一个格子上&#xff0c;需要取第 nn 个格子里的东西。 机器猫当然不愿意自己跑过去&#xff0c;所以机器猫从口袋里掏出了一个机器人&#xff01;这个机器人的行动遵循下面…

【面试题】【C语言】寻找两个正序数组的中位数

寻找两个正序数组的中位数 仅供学习 题目 算法时间复杂度 二分查找算法&#xff0c;时间复杂度为 O(log(min(m, n)))&#xff0c;其中 m 和 n 分别是两个数组的长度。 子函数 查找两个数字的最大值 int max(int a, int b) {return a > b ? a : b; }查找两个数字的最小…

ubuntu20.04搭建RUST开发环境并与C语言交互

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 ubuntu20.04搭建RUST开发环境并与C语言交互 前言开战一、确认环境版本二、环境搭建三、hello world&#xff01;四、跟c语言进行交互1.rust调用C静态库2.C调用rust库 总结参考…