阿里云云效流水线构建镜像并推送时获取 Tag 版本号

2025-05-13 10:56

构建镜像并推送时镜像的版本号可以使用 ${CI_COMMIT_REF_NAME} 获取当前分支名称或 Tag 版本号,取决于如何触发流水线。使用 Tag 触发流水线,可以取到 Tag 版本号,但这个版本号前面通常带 v(如 v1.0.2),而 Docker 镜像版本号通常不带 v

云效流水线环境变量:https://help.aliyun.com/zh/yunxiao/user-guide/environment-variables

去除 Tag 版本号的前缀 v

echo "Tag version: ${CI_COMMIT_REF_NAME#v}"
TAG_NO_PREFIX=${CI_COMMIT_REF_NAME#v}
echo "Tag without prefix: ${TAG_NO_PREFIX}"

获取 pom.xml 版本号

如果想获取 pom.xml 里的 version 版本号。可以使用命令,通过执行 mvn 获取 pom.xml 里面的 version:

export VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)
echo "pom.xml 版本号: $VERSION"

流水线环境变量传递

上述方式获取的环境变量值并不能给下一步骤使用,更不能给下一任务使用。也就是存在任务内和任务间共享变量的问题。

注意:在云效流水线里,不同的构建环境,设置环境变量的语法不同。分为 默认环境 指定容器环境和默认VM环境,通常使用的是 指定容器环境

指定容器环境和默认VM环境

任务内共享:

echo "yaojia_Test=myParam" >> "$FLOW_ENV"
# 将获取到的 pom.xml 版本号放到环境变量
echo "VERSION=${VERSION}" >> "$FLOW_ENV"

任务间共享。完成上述环境变量注入后,添加步骤 > 工具 > 批量设置变量,将环境变量设置为流水线级别。

image.png

默认环境

默认环境的语法为 echo 'USER_abc=123' > .env。注意:在 .env 文件中的环境变量需要以 USER_ 开头。其它和 指定容器环境和默认VM环境 的一样。

echo 'USER_abc=123' > .env
# 将获取到的 pom.xml 版本号放到环境变量
echo "VERSION=${VERSION}" > .env
0791-85271700
QQ咨询:1779755751
QQ交流群:626599871
微信咨询
微信扫码咨询
微信交流群
微信交流群
Powered by UJCMS © 2010-2025 All Rights Reserved
QQ咨询
电话
微信
微信扫码咨询