代码之家  ›  专栏  ›  技术社区  ›  Puschie

Gitlab ci作业在合并创建时验证/更新版本

  •  0
  • Puschie  · 技术社区  · 3 年前

    我正在尝试将版本验证/更新步骤集成到我们的管道中。(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
    

    此外,只有在创建合并请求时才能创建作业。目前,这两个版本都是在每次推送到源分支时运行的。

    如果您对这些作业配置中的错误/问题有任何提示,我们将不胜感激。 (注:这两个阶段都是在全球阶段下定义的)

    0 回复  |  直到 3 年前