我正在尝试将版本验证/更新步骤集成到我们的管道中。(windows runner,powershell)
版本1将确保版本文件已更改。已尝试可用
solution
但变量$CI_MERGE_REQUEST_DIFF_BASE_SHA未解析/展开
check-version:
stage: validate
rules:
- if: ($CI_PIPELINE_SOURCE == "merge_request_event") && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "pre-release")
script:
- 'git fetch'
- '$FILES_CHANGED = @(git diff --name-only $CI_MERGE_REQUEST_DIFF_BASE_SHA...HEAD)'
- './validate-version.ps1 $FILES_CHANGED'
(尝试了以下文字:${VAR}、$VAR、“$VAR”、“${VAR}”)
版本2将直接更新版本并将其添加到合并提交中。基于提交消息,它传递不同的参数来更新脚本
version-update:
stage: merge
variables:
UPDATE: 'patch'
rules:
- if: ($CI_PIPELINE_SOURCE == "merge_request_event") && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "pre-release") && ($CI_MERGE_REQUEST_TITLE =~ /[mM][aA][jJ][oO][rR]/)
variables:
UPDATE: 'major'
- if: ($CI_PIPELINE_SOURCE == "merge_request_event") && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "pre-release") && ($CI_MERGE_REQUEST_TITLE =~ /[mM][iI][nN][oO][rR]/)
variables:
UPDATE: 'minor'
- if: ($CI_PIPELINE_SOURCE == "merge_request_event") && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "pre-release")
script:
- './update-version.ps1 $UPDATE' # update version in file
- 'git config user.email "***'
- 'git config user.name "Gitlab CI"'
- 'git remote set-url --push git@gitlab:$CI_PROJECT_PATH'
- 'git add ****'
- 'git commit -m "Version update"'
- 'git push HEAD:$CI_COMMIT_REF_NAME'
此作业被完全忽略,没有日志条目(即使使用与检查版本相同的规则)。
日志:
Fetching changes with git depth set to 20...
Reinitialized existing Git repository in ****
Checking out 91c37042 as detached HEAD (ref is refs/merge-requests/4/head)...
git-lfs/2.13.3 (GitHub; windows amd64; go 1.16.2; git a5e65851)
Skipping Git submodules setup
Executing "step_script" stage of the job script 00:01
Job succeeded
此外,只有在创建合并请求时才能创建作业。目前,这两个版本都是在每次推送到源分支时运行的。
如果您对这些作业配置中的错误/问题有任何提示,我们将不胜感激。
(注:这两个阶段都是在全球阶段下定义的)