如何匹配分支名称变量?如果将变量设置为1.1.0,我希望它仅匹配该版本的发行分支。我似乎无法在此处或正则表达式中进行变量替换(如注释所示)。有什么选择吗? 1.1.0实际上将来自项目变量,而不是文件中的硬编码,因此在这里硬编码实际上不是一个选择。
这似乎没有进行变量替换。
stages:
- build
variables:
buildNum: $CI_PIPELINE_ID
stagingVersion: 1.1.0
before_script:
- export MYTEAM_BUILD_NUM=${buildNum}
- export MYTEAM_VERSION=${stagingVersion}
build_staging:
stage: build
only:
- release/v${stagingVersion}@myTeam/myProject
# - /^release\/v${stagingVersion}@myTeam\/myProject$/
script:
- doStuff
答案 0 :(得分:0)
我能够提出一个hacky解决方案来实现这一目标。这不是很好,但是可以完成工作。它将使符合分支条件但不符合分支版本条件的作业失败:
only:
- /^release\/v\d+.\d+.\d+$/@myTeam/myProject
script:
- if ! [ "${CI_COMMIT_REF_NAME}@${CI_PROJECT_PATH}" = "release/v${stagingVersion}@myTeam/myProject" ]; then echo "Staging branch? NO; Exiting"; exit 1; else echo "Staging branch? YES; Continuing"; fi
only
部分首先向下过滤到与release/v0.0.0@myTeam/myProject
格式匹配的分支stagingVersion
(在gitlab项目变量中设置为暂存环境的当前版本)与$CI_COMMIT_REF_NAME
exit 1
并导致构建失败