GitLab发布流水线变量传递问题求助
解决GitLab CI中release块无法读取脚本变量的问题
问题原因
GitLab CI的job配置(包括release关键字块)是在Runner执行脚本之前就由GitLab服务器解析完成的,脚本里定义的nextVersion属于Runner运行时的环境变量,无法被提前解析的release块读取到——这就是硬编码值能生效,但变量不行的核心原因。
解决方案
放弃使用job配置中的release关键字,直接在script阶段调用release-cli命令创建发布。这样脚本里的变量就能正常传递,因为命令是在Runner环境中执行的,此时变量已经存在。
修改后的完整job代码:
release_job: stage: release image: registry.gitlab.com/gitlab-org/release-cli:latest rules: - if: $CI_COMMIT_TAG when: never - if: $CI_COMMIT_BRANCH == 'develop' script: - nextVersion=$(cat version.env) - echo "running release_job for $nextVersion" - | release-cli create --name "Release $nextVersion" \ --tag-name "$nextVersion" \ --description "$nextVersion"
扩展说明
如果需要更复杂的发布描述,可以把内容写入文件,再通过--description-file参数传递:
- echo "### Release $nextVersion\n- 新增功能X\n- 修复Bug Y" > release_notes.md - release-cli create --name "Release $nextVersion" --tag-name "$nextVersion" --description-file release_notes.md
内容的提问来源于stack exchange,提问作者Jatin Panchal
相关产品推荐
相关产品推荐

