concourse/semver-resourceSemver Resource 是一个 Concourse CI/CD 资源镜像,用于管理语义化版本号(Semantic Versioning)。其核心用途是在 CI/CD 管道中自动化版本号的获取、递增与持久化,并支持将版本号存储到多种后端存储系统,确保版本追踪的一致性。
1.2.3、2.0.0-alpha.1),提供主版本(major)、次版本(minor)、补丁版本(patch)的自动递增能力。get 步骤获取当前版本,put 步骤更新版本(递增或自定义版本号)。1.0.0-beta.1)和构建元数据(如 1.0.0+build.42)的灵活配置。pipeline.yml)的编写规范。在 Concourse 管道中,需先定义 Semver Resource 作为资源类型:
yamlresource_types: - name: semver type: docker-image source: repository: concourse/semver-resource tag: latest # 建议指定具体版本,如 v1.1.0
定义资源实例时,通过 source 字段配置后端存储及版本规则。以下为常见后端示例:
yamlresources: - name: app-version type: semver source: driver: git # 后端驱动类型 uri: [***] # Git 仓库地址 branch: main # 分支名 file: VERSION # 存储版本号的文件名(仓库根目录下) initial_version: 1.0.0 # 初始版本(文件不存在时使用) private_key: ((git-private-key)) # 私有仓库 SSH 密钥(可选)
yamlresources: - name: app-version type: semver source: driver: s3 # 后端驱动类型 bucket: my-version-bucket # S3 桶名 key: versions/app # S3 对象键(版本文件路径) access_key_id: ((s3-access-key)) # AWS 访问密钥 ID secret_access_key: ((s3-secret-key)) # AWS 密钥 region_name: us-east-1 # AWS 区域(可选) initial_version: 0.1.0
在作业中通过 get 和 put 步骤使用资源:
yamljobs: - name: get-current-version plan: - get: app-version # 获取当前版本 params: output_file: current-version.txt # 可选,指定版本输出文件(默认 .version)
执行后,app-version 目录下生成版本文件(如 current-version.txt),内容为当前版本(如 1.0.0)。
通过 put 步骤递增版本或自定义版本:
示例 1:自动递增版本
yamljobs: - name: bump-minor-version plan: - get: app-version - put: app-version # 更新版本并推送到后端 params: bump: minor # 递增规则:major/minor/patch pre: beta.1 # 可选,添加预发布版本(如 1.1.0-beta.1) build: build.42 # 可选,添加构建元数据(如 1.1.0+build.42) message: "Bump version to {{version}}" # Git 后端提交信息({{version}} 为新版本)
示例 2:自定义版本号(通过文件指定)
yamljobs: - name: set-custom-version plan: - task: generate-version config: platform: linux image_resource: type: docker-image source: {repository: alpine} outputs: - name: version-file run: path: sh args: ["-c", "echo '2.0.0' > version-file/custom-version.txt"] - put: app-version params: file: version-file/custom-version.txt # 从文件读取目标版本号
| 参数 | 说明 | 可选值/示例 | 是否必填 |
|---|---|---|---|
driver | 后端存储驱动类型 | git、local、s3、gcs | 是 |
initial_version | 初始版本号(后端文件不存在时使用) | 1.0.0、0.1.0-alpha | 否 |
| Git 驱动特有 | |||
uri | Git 仓库 URL | [***] | 是 |
branch | Git 分支名 | main、version-track | 是 |
file | 存储版本号的文件名(仓库根目录下) | VERSION、version.txt | 是 |
private_key | Git 私有仓库 SSH 密钥(PEM 格式) | -----BEGIN RSA PRIVATE KEY-----... | 否 |
| S3 驱动特有 | |||
bucket | S3 桶名 | my-version-bucket | 是 |
key | S3 对象键(版本文件路径) | versions/app | 是 |
access_key_id | AWS 访问密钥 ID | - | 是 |
secret_access_key | AWS 密钥 | - | 是 |
region_name | AWS 区域 | us-east-1、eu-west-1 | 否 |
| 参数 | 说明 | 可选值/示例 | 是否必填 |
|---|---|---|---|
bump | 版本递增规则(与 file 互斥) | major、minor、patch | 否 |
file | 包含目标版本号的文件路径(与 bump 互斥) | path/to/version.txt | 否 |
pre | 预发布版本号 | alpha.1、beta | 否 |
build | 构建元数据(添加到版本号 + 之后) | build.42、ci.123 | 否 |
message | Git 后端提交信息(支持 {{version}} 变量) | "Bump to {{version}}" | 否(Git) |
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务