Gitlab管道| ci_commit_before_sha在$ ci_pipeline_source ='web的情况下为零。

发布于 2025-02-01 10:02:35 字数 555 浏览 4 评论 0原文

试图在新主管之前检索主要分支机构的最新提交。

但是使用ci_commit_before_sha其返回始终为零。如果我从gitlab UI运行管道。

如果将其推到主分支,则可以自动触发,如果它自动触发,则可以正常工作。

使用预先定义的gitlab ci变量:</

  • nx_head = $
  • nx_base = $ {ci_merge_request_diff_base_sha: - $ ci_commit_before_sha}

Trying to retrieve latest commit in main branch before the new head.

But using CI_COMMIT_BEFORE_SHA its returning always zero's. In case, if I run pipeline from the GitLab UI.

It working fine if its trigged automatically in case of a push to main branch.

Pipline Custome Variables using Predefined Gitlab CI variables:--

  • NX_HEAD=$CI_COMMIT_SHA
  • NX_BASE=${CI_MERGE_REQUEST_DIFF_BASE_SHA:-$CI_COMMIT_BEFORE_SHA}

enter image description here

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

就此别过 2025-02-08 10:02:35

检查这是否与问题12850 /code>在合并请求管道中均为零”。
问题28252 ci_merge_request_target_branch_sha在分离的合并请求管道中“

尝试一个简单的测试,以查看您当前版本的gitlab:是否可以更好地工作:

image: node:8

test-ci-vars:
  only:
    - master
    - merge_requests
  script:
    - echo CI_COMMIT_REF_NAME=${CI_COMMIT_REF_NAME}
    - echo CI_MERGE_REQUEST_SOURCE_BRANCH_SHA=${CI_MERGE_REQUEST_SOURCE_BRANCH_SHA}
    - echo CI_MERGE_REQUEST_TARGET_BRANCH_SHA=${CI_MERGE_REQUEST_TARGET_BRANCH_SHA}
    - echo CI_MERGE_REQUEST_SOURCE_BRANCH_NAME=${CI_MERGE_REQUEST_SOURCE_BRANCH_NAME}
    - echo CI_MERGE_REQUEST_TARGET_BRANCH_NAME=${CI_MERGE_REQUEST_TARGET_BRANCH_NAME}

Check if this is related to issue 12850 "CI_COMMIT_BEFORE_SHA is all zero in a merge request pipeline".
Or issue 28252 "Expose CI_MERGE_REQUEST_SOURCE_BRANCH_SHA and CI_MERGE_REQUEST_TARGET_BRANCH_SHA in detached merge request pipelines"

Try a simple test to see if that would work better with your current version of GitLab:

image: node:8

test-ci-vars:
  only:
    - master
    - merge_requests
  script:
    - echo CI_COMMIT_REF_NAME=${CI_COMMIT_REF_NAME}
    - echo CI_MERGE_REQUEST_SOURCE_BRANCH_SHA=${CI_MERGE_REQUEST_SOURCE_BRANCH_SHA}
    - echo CI_MERGE_REQUEST_TARGET_BRANCH_SHA=${CI_MERGE_REQUEST_TARGET_BRANCH_SHA}
    - echo CI_MERGE_REQUEST_SOURCE_BRANCH_NAME=${CI_MERGE_REQUEST_SOURCE_BRANCH_NAME}
    - echo CI_MERGE_REQUEST_TARGET_BRANCH_NAME=${CI_MERGE_REQUEST_TARGET_BRANCH_NAME}

梦旅人picnic 2025-02-08 10:02:35

我猜想您的管道的灵感来自使用gitlab and nx 配置CI。

如果是这样,您可以将git_depth设置为0,该根据文档应该禁用浅克隆。不幸的是,看来这是无法预期的,请参见 a>。

因此,也许您想更改

variables:
  GIT_DEPTH: 0

variables:
  GIT_DEPTH: 100

以便最后100个提交(而不是默认),然后希望它会导致$ ci_commit_before_sha在非MR Pipeline中定义。

此博客可能也很有趣。

I am guessing your pipeline is inspired by Configuring CI Using GitLab and Nx.

If so, you might have set GIT_DEPTH to 0 which according to the docs should disable the shallow cloning. Unfortunately, it looks like this doesn't work as expected, see issues 292470.

Therefore, maybe you'd like to change

variables:
  GIT_DEPTH: 0

to

variables:
  GIT_DEPTH: 100

so that the last 100 commits (instead of the default) are available, which then hopefully will result in $CI_COMMIT_BEFORE_SHA being defined in a non-MR pipeline.

This blog might also be interesting.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文