我有以下发布配置:
release:
stage: Release
script:
- echo "Release running"
release:
tag_name: $VERSION
name: 'Release $VERSION'
description: 'Release created using the Gitlab release-cli.'
我正在尝试将
tag_name
设置为 VERSION.txt
的内容,这是一个语义版本号:
1.56.0
Gitlab 似乎不允许您从脚本创建变量,例如这不起作用:
variables:
VERSION: $(cat VERSION.txt)
从作业的
script
键导出变量似乎不起作用(它在 tag_name
内不可用,并且解析为空。
script:
- export VERSION="$(cat VERSION.txt)"
- echo $VERSION # outputs 1.56.0
release:
tag_name: '${VERSION}' # $VERSION is empty
before_script
也是如此:
before_script:
- export VERSION="$(cat VERSION.txt)"
- echo $VERSION # outputs 1.56.0
release:
tag_name: '${VERSION}' # $VERSION is empty
我也在
cat VERSION.txt
内尝试过tag_name
,但这没有执行:
release:
tag_name: '${cat VERSION.txt}' # Tag is literally '${cat VERSION.txt}'
不能直接将变量与release关键字一起使用(请参阅此问题https://gitlab.com/gitlab-org/gitlab/-/issues/237893)
替代方案1:
release-cli
:release_job:
stage: release
image: registry.gitlab.com/gitlab-org/release-cli:latest
script:
- read -r versionNumberYouWant < ./path/to/your/file
- echo "Launching the release $versionNumberYouWant"
- release-cli create --description "Your description" --tag-name $versionNumberYouWant
替代方案2:
在gitlab CI中不能直接使用“动态变量”。
作为解决方法,您可以创建动态管道:
1-作业:生成管道
script:
- export VERSION=$(cat VERSION)
echo """
stage: release
release:
stage: release
variables:
VERSION: $VERSION
release: ...
2-作业:执行此管道