从 gitlab-ci.yaml 中的文件内容设置发布 tag_name

问题描述 投票:0回答:2

我有以下发布配置:

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}'
gitlab yaml environment-variables gitlab-ci release
2个回答
1
投票

不能直接将变量与release关键字一起使用(请参阅此问题https://gitlab.com/gitlab-org/gitlab/-/issues/237893

替代方案1:

  • 忘记“release”关键字,而是使用
    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:


0
投票

在gitlab CI中不能直接使用“动态变量”。

作为解决方法,您可以创建动态管道:

1-作业:生成管道

script:
- export VERSION=$(cat VERSION)
  echo """
   stage: release

   release:
      stage: release
      variables:
        VERSION: $VERSION
      release: ...

2-作业:执行此管道

© www.soinside.com 2019 - 2024. All rights reserved.