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

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

极狐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: testimage:default: docker:20.10.7-dindimage_tag:default: 1.0.0tags: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@maininputs: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。

相关文章:

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

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

详解Xilinx FPGA高速串行收发器GTX/GTP(3)--GTX的时钟架构

目录 1、参考时钟 2、时钟方案 2.1、单个外部参考时钟驱动单个QUAD中的多个transceiver 2.2、单个外部参考时钟驱动多个QUAD中的多个transceiver 2.3、同一个Quad中,多个GTX Transceiver使用多个参考时钟 2.4、不同Quad中,多个GTX Transceiver 使用多个参考时钟 3、QP…...

简单搭建dns服务器

目录 一.安装服务 二.编写子配置文件 三.编写主配置文件 四.编写文件 五.重启服务测试 配置端:IP地址为172.25.254.100、主机名为node1.rhel9.org 测试端:IP地址为172.25.254.101、主机名为node2.rhel9.org 一.安装服务 [rootnode1 ~]# dnf inst…...

大数据进阶(Advanced Big Data)

大数据进阶(Advanced Big Data) 目录 引言大数据架构 Lambda架构Kappa架构 大数据技术栈 数据采集与预处理数据存储与管理数据处理与分析数据可视化与展示 大数据分析方法 机器学习深度学习自然语言处理图数据分析 大数据在工业中的应用 制造业能源管理…...

微信小程序开发优惠券制作源码

微信小程序开发优惠券制作源码。制作一个自带流量的小程序商城,功能强大玩法新,轻松实现引流,推广,卖货,分销,会员管理,直播等多种功能需求需要哪些编辑代码源码呢?http://m.bokequ.com/list/124-2.html 代码分享 <!DOCTYPE HTML> <html xmlns"http://www.w3.o…...

mongodb的安装操作记录

mongodb的安装操作记录 1 上传软件包&#xff0c;并解压 [rootmonitor local]# tar -xvf mongodb-linux-x86_64-rhel70-7.0.12.tgz mongodb-linux-x86_64-rhel70-7.0.12/LICENSE-Community.txt mongodb-linux-x86_64-rhel70-7.0.12/MPL-2 mongodb-linux-x86_64-rhel70-7.0.1…...

C++客户端Qt开发——多线程编程(二)

多线程编程&#xff08;二&#xff09; ③线程池 Qt中线程池的使用 | 爱编程的大丙 1>线程池 我们使用线程的时候就去创建一个线程&#xff0c;这样实现起来非常简便&#xff0c;但是就会有一个问题&#xff1a;如果并发的线程数量很多&#xff0c;并且每个线程都是执行…...

ubuntu20复现NBV探索

官网代码 后退地平线下一个最佳景观规划师 这个代码有些久远&#xff0c;issue里面有人已经在ubuntu20里面使用了3dmr&#xff0c;但是他那个代码我也运行不成功&#xff0c;docker网络一直也不佳&#xff0c;所以还是自己重新修改源码靠谱。 最终实现的代码等有时间上传到gi…...

【51单片机仿真】基于51单片机设计的温湿度采集检测系统仿真源码文档视频——文末资料下载

演示 目录 1.系统功能 2.背景介绍 3.硬件电路设计 4.软件设计 4.1 主程序设计 4.2 温湿度采集模块程序设计 4.3 LCD显示屏程序设计 5.系统测试 6.结束语 源码、仿真、文档视频等资料下载链接 1.系统功能 该系统通过与AT89C51单片机、LCD1602显示屏和DHT11温湿度传感器…...

【Hadoop-驯化】一文学会hadoop访问hdfs中常用命令使用技巧

【Hadoop-驯化】一文学会hadoop访问hdfs中常用命令使用技巧 本次修炼方法请往下查看 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合&#xff0c;智慧小天地&#xff01; &#x1f387; 免费获取相关内容文档关注&am…...

【Spring】Bean详细解析

1.Spring Bean的生命周期 整体上可以简单分为四步&#xff1a;实例化 —> 属性赋值 —> 初始化 —> 销毁。初始化这一步涉及到的步骤比较多&#xff0c;包含 Aware 接口的依赖注入、BeanPostProcessor 在初始化前后的处理以及 InitializingBean 和 init-method 的初始…...

决策树总结

决策树总结 决策树是一种广泛应用的机器学习算法&#xff0c;它模拟了人类进行决策时的逻辑思维过程&#xff0c;通过构建一棵树状结构来进行数据的分类或回归预测。决策树模型因其直观易懂、易于解释、能够处理多类问题以及无需进行复杂的特征缩放等优点&#xff0c;在数据挖…...

通俗易懂!495页看漫画学Python入门教程(全彩版)Git首发破万Star

前言 在编程的世界里&#xff0c;Python无疑是一颗璀璨的明星。从最初作为打发圣诞节闲暇时间的项目&#xff0c;到如今成为最受欢迎的程序设计语言之一&#xff0c;Python以其简洁、易学、强大的特点吸引了无数编程爱好者。然而&#xff0c;对于初学者来说&#xff0c;编程的…...

websocket实现简易聊天室

websocket实现简易聊天室 又做了一个关于websocket广播和在线人数统计的练习&#xff0c;实现一个简易的聊天室。 前端vue3 前端里的内容主要包含&#xff1a; 1.css的animation来实现公告从右到左的轮播。 2.websocket的onmessage里对不同消息的处理。 <template>&l…...

vulhub-wordpress

1.打开wordpress关卡&#xff0c;选择简体中文 添加信息——点击安装WordPress 安装完成——登录 点击外观——编辑主题 可以加入一句话木马&#xff0c;但是我写入的是探针文件 也可以去上传一个带有木马的主题 上传之后会自动解压 1.php就是里面的木马文件...

【机器学习算法基础】(基础机器学习课程)-10-逻辑回归-笔记

一、模型的保存与加载 逻辑回归是一种常见的机器学习算法&#xff0c;广泛用于分类问题。为了在不同的时间或环境下使用训练好的模型&#xff0c;我们通常需要将其保存和加载。 保存模型 训练模型&#xff1a;首先&#xff0c;你需要用你的数据训练一个逻辑回归模型。例如&…...

自动驾驶行业知识汇总

应届生月薪2W的自动驾驶开发、机器人、后端开发&#xff0c;软件开发该如何学习相关技术栈_哔哩哔哩_bilibili 两万字详解自动驾驶开发工具链的现状与趋势 (qq.com) 九章智驾 - 2023年度文章大合集 (qq.com) 九章 - 2022年度文章大合集 (qq.com)...

C#根据反射操作对象

前言 反射使用&#xff0c;让我们的程序可以动态增加一些功能&#xff0c;让原本固化的步骤逻辑变得动态&#xff0c;这是它的优点。当然使用反射首次加载会有性能损耗以及使用复杂&#xff1b;但是现在大家都在讲动态&#xff0c;使用好它应该是一个重要的编程理念提升。MVC、…...

打包python脚本(flask、jinja2)为exe文件

20240803 概述 在我很早时候学习python的时候&#xff0c;就利用过某个工具将其打包为exe文件&#xff0c;然后在没有python环境的机器上运行&#xff0c;这样可以减少安装python环境和各种库的过程。 最近在开发一个在虚拟机上运行的程序的时候就遇到了打包一些环境的问题&…...

嵌入式初学-C语言-练习三

#部分题目可能在之前的博客中有&#xff0c;请谅解&#xff0c;保证常见题型均被发出# 1.计算n以内所有正奇数的和 ? n值通过键盘输入 代码&#xff1a; 1 /*2 需求&#xff1a;计算n以内所有正奇数的和 ? n值通过键盘输入3 */4 #include <stdio.h>5 6 int main()7 …...

最新版Sonible Plugins Bundle v2024 winmac,简单智能,持续更新长期有效

一。Sonible Plugins Bundle v2024 win&mac Sonible Plugins Bundle是一款以创作者为中心的智能音频插件系列。这些工具的特点是易于使用&#xff0c;搭配高级处理和优质音质。pure:bundle的所有插件都由sonible的智能插件系列中使用的技术驱动&#xff0c;但在设计时考虑到…...

J032_实现简易版的B/S架构

一、需求描述 实现简易版的B/S架构 1.1 Server package com.itheima.tcp4;import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.Executors; import java.uti…...

【前端面试】五、框架

目录 1 Vue2 2 Vue3 3 React 4 Angular 1 Vue2 Vue2 是目前仍被广泛使用的前端框架之一&#xff0c;其特点包括响应式数据绑定、组件化开发等。 响应式系统&#xff1a;Vue2 使用 Object.defineProperty 来实现数据的响应式。每个组件实例在创建时&#xff0c;会将 dat…...

C语言 | Leetcode C语言题解之第316题去除重复字母

题目&#xff1a; 题解&#xff1a; char* removeDuplicateLetters(char* s) {int vis[26], num[26];memset(vis, 0, sizeof(vis));memset(num, 0, sizeof(num));int n strlen(s);for (int i 0; i < n; i) {num[s[i] - a];}char* stk malloc(sizeof(char) * 27);int stk…...

本地部署 Llama-3-EvoVLM-JP-v2

本地部署 Llama-3-EvoVLM-JP-v2 0. 引言1. 关于 Llama-3-EvoVLM-JP-v22. 本地部署2-0. 克隆代码2-1. 安装依赖模块2-2. 创建 Web UI2-3.启动 Web UI2-4. 访问 Web UI 0. 引言 Sakana AI 提出了一种称为进化模型合并的方法&#xff0c;并使用该方法创建大规模语言模型&#xff…...

Evaluating the Generation Capabilities of Large Chinese Language Models

文章目录 题目摘要相关工作CG-Eval实验 题目 评估大型中文语言模型的生成能力 论文地址&#xff1a;https://arxiv.org/abs/2308.04823 项目地址&#xff1a;http://cgeval.besteasy.com/ 摘要 本文介绍了 CG-Eval&#xff0c;这是有史以来第一个全面的自动化评估框架&#xf…...

YOLOv8添加注意力模块并测试和训练

YOLOv8添加注意力模块并测试和训练 参考bilibili视频 yolov8代码库中写好了注意力模块&#xff0c;但是yolov8的yaml文件中并没用使用它&#xff0c;如下图的通道注意力和空间注意力以及两者的结合CBAM&#xff0c;打开conv.py文件可以看到&#xff0c;其中包含了各种卷积块的…...

「Unity3D」自动布局LayoutElement、ContentSizeFitter、AspectRatioFitter、GridLayoutGroup

布局元素与布局控制器 布局元素实现ILayoutElement接口&#xff0c;布局控制器实现ILayoutController接口&#xff0c;后者根据前者的属性控制具体布局——有些布局控制器也是布局元素&#xff0c;即同时实现这两个接口&#xff0c;如LayoutGroup。 public interface ILayout…...

【Golang 面试 - 进阶题】每日 3 题(十六)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/UWz06 &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏…...

Redis2

为什么Redis要给缓存数据设置过期时间&#xff1f; 内存是有限的&#xff0c;如果缓存中的所有数据都是一直保存&#xff0c;很容易OOM Redis如何判断数据是否过期&#xff1f; 通过过期字典来保存数据的过期时间 过期删除策略 Redis采用的是定期删除惰性删除 Redis内存淘…...

兰州网站设计/应用商店下载

一家名为Firewall Leak Tester的个人防火墙软件开发公司推出首个专门屏蔽微软正版验证程序WGA“给微软家里打电话”的工具软件&#xff0d;&#xff0d;RemoveWGA。 “一旦微软的WGA认证工具确定你使用的是正版Windows&#xff0c;微软就再没有理由接连将你的计算机信息传给微…...

一页网站首页图如何做/seo网站优化流程

[整理III]微软等100题系列V0.1版之三&#xff1a;栈、堆、队列面试题集锦 July 2.设计包含min函数的栈。定义栈的数据结构&#xff0c;要求添加一个min函数&#xff0c;能够得到栈的最小元素。要求函数min、push以及pop的时间复杂度都是O(1)。 29.栈的push、pop序列题目&#…...

视频网站内容规划/网站制作郑州

二叉树的遍历方式是最基本&#xff0c;也是最重要的一类题目&#xff0c;我们将从「前序」、「中序」、「后序」、「层序」四种遍历方式出发&#xff0c;总结他们的递归和迭代解法。 一、二叉树定义 二叉树&#xff08;Binary tree&#xff09;是树形结构的一个重要类型…...

重庆网站建设网页设计/百度营销推广

获取和设置非标准HTML属性&#xff1a;Element类型还定义了getAttribute&#xff08;&#xff09;个setAttribute&#xff08;&#xff09;方法来查询和设置非标准的HTML属性。也可以用来查询和设置XML文档中元素上的属性。这些方法和前面的基于API之间的区别有&#xff1a;1&a…...

网站建设与运营策划书/简述搜索引擎优化的方法

在 Markdown 中&#xff0c;可以使用3个以上的 *、-或者_来实现一个分隔线。 语法规则&#xff1a; ***或---或___分隔线至少使用3个 *、-或者_。行内可以加空格&#xff0c;即使加在*/-/_之间也没问题。行内不能出现其他字符。 示例&#xff1a; 我是第一段。下面使用星号…...

地方生活门户网站/怎样联系百度客服

在设计系统实际运用中&#xff0c;设定采集周期为&#xff11;&#xff15;分钟&#xff0c;意味着每隔&#xff11;&#xff15;分钟向终端节点发送一次指令&#xff0c;采集完成后发送数据&#xff0c;最后进入睡眠模式。一个采集周期损耗可以表示为为&#xff1a;&#xff2…...