CI/CD Catalog 介绍
草稿: 本文因某种原因尚未公开。
CI/CD Catalog(通常特指 GitLab CI/CD Catalog)是现代 CI/CD 平台中用于发现、重用和共享 CI/CD 流水线组件的集中式中心。
介绍
在 GitLab 生态中,CI/CD Catalog 于 2023 年底推出 Beta 版,并在 GitLab 17.0(2024 年 5 月)中正式 GA(普遍可用)。
- 使用最新版本
~latest,更多参考
核心概念
- Component(组件):一个可重用的流水线配置单元(可以是一个 Job,也可以是多个相关联的 Jobs)。
- Inputs(输入参数):组件定义时声明的参数,类似于函数的参数。调用方通过传入不同的值来改变组件的行为(如指定 Docker 镜像版本、部署环境路径等)。
- Catalog Project(目录项目):一个专门用于托管组件的 Git 项目。一个项目最多可以包含数十个紧密相关的组件,并且有特定的目录结构规范(通常在
templates/目录下)。
如何使用 CI/CD Catalog 中的组件?
在应用项目中,只需要使用 include: component 语法即可引入别人写好的流水线模块。
示例:引入一个 Go 语言构建组件
include:
# 语法格式:<平台域名>/<项目路径>/<组件名称>@<版本号>
- component: gitlab.com/my-group/ci-components/golang-build@1.2.0
inputs:
stage: build # 将任务放入 build 阶段
go_version: '1.21' # 覆盖组件的默认输入参数
# 你依然可以定义自己的 Job
deploy_job:
stage: deploy
script:
- echo "Deploying application..."- 版本号 (
@<version>) 的三种写法
GitLab 提供了灵活的版本控制策略,你可以根据不同环境的安全需求选择不同的写法:
| 写法示例 | 说明 | 适用场景 |
|---|---|---|
@1.0.0 |
固定特定版本(严格匹配 Tag)。不管组件作者怎么更新,你的流水线绝对不会因为上游变更而突然挂掉。 | 生产环境(强推) |
@~latest |
始终使用最新版本。GitLab 会自动解析 Catalog 中按 SemVer 排序的最新发布版本。 | 开发、测试环境,或内部强管控的公共组件 |
@main |
使用分支名或 Commit SHA。这实际上跳过了 Catalog 的正式 Release,直接拉取该分支最新代码。 | 组件开发者在测试组件本身时使用 |
如何创建和发布自己的组件?
如果你是 DevOps 工程师,可以通过以下步骤为团队创建一套组件:
步骤一:建立规范的目录结构 在 GitLab 中创建一个新项目,按如下结构组织文件:
my-components/
├── templates/
│ └── build.yml # 组件定义文件
├── README.md # 必须的说明文档,会在 Catalog 界面展示
└── .gitlab-ci.yml # 用于测试该组件并自动发布的自身流水线编写带有 spec:inputs 的组件代码 (templates/build.yml)
spec:
inputs:
image:
default: 'golang:latest' # 定义默认值
description: '要使用的 Go 镜像版本'
---
# 组件具体逻辑
build_app:
image: $[[ inputs.image ]] # 使用插值语法读取输入的参数
script:
- go build -o my_app ./...-
在项目的
.gitlab-ci.yml中添加如下发布配置: yamlstages: - release # 只有在打 Tag 时才会触发创建 Release create-release: stage: release image: registry.gitlab.com/gitlab-org/release-cli:latest rules: - if: $CI_COMMIT_TAG script: - echo "Creating release for $CI_COMMIT_TAG" release: tag_name: $CI_COMMIT_TAG description: 'Release $CI_COMMIT_TAG of components'
开启 CI/CD Catalog 开关
- 在 GitLab 中进入你的项目。
- 在左侧导航栏中,依次点击 Settings (设置) -> General (通用)。
- 找到并点击展开 Visibility, project features, permissions (可见性、项目功能、权限) 面板。
- 向下滚动,找到 CI/CD Catalog project 选项。
- 打开该开关(Toggle On) 并保存。
发布到 Catalog
在项目上打上 Git 语义化标签(如 1.0.0),GitLab 就会自动将其解析并在公共或私有的 Catalog 页面上架,供其他人搜索和阅读 README。
semantic version 版本号格式示例
必须是纯粹的数字加点(可以包含可选的预发布后缀),例如:
1.0.00.1.22.1.0-beta.13.0.0-rc