NodeJS gitlab ci上的Nx有时会使用错误的commit ref

rseugnpd  于 2023-04-05  发布在  Node.js
关注(0)|答案(1)|浏览(116)

我目前正在为mono nx repo操作一个gitlab ci pipeline,它大部分运行良好,但有时linting作业在为其基础使用正确的commit ref时会出现问题。
这是我正在运行的脚本的当前部分,以设置我的linting:- if [ "$CI_PIPELINE_SOURCE" == "merge_request_event" ]; then NX_BASE=${CI_MERGE_REQUEST_DIFF_BASE_SHA:-$CI_COMMIT_BEFORE_SHA}; else NX_BASE=HEAD~1; fi - NX_HEAD=HEAD
其次是工作:npx nx affected --base=$NX_BASE --head=$NX_HEAD --target=lint --parallel=3这是发生以下情况时的输出:

$ if [ "$CI_PIPELINE_SOURCE" == "merge_request_event" ]; then NX_BASE=${CI_MERGE_REQUEST_DIFF_BASE_SHA:-$CI_COMMIT_BEFORE_SHA}; else NX_BASE=HEAD~1; fi
$ NX_HEAD=HEAD
$ git show-ref
baf7d995796d6cda3e67e1c8dafe3952d875aa19 refs/pipelines/35035
$ npx nx affected --base=$NX_BASE --head=$NX_HEAD --target=lint --parallel=3
fatal: Not a valid commit name 9e27db2e2ae932d0cdcc7a4a04eddb84201ad045
fatal: No such ref: '9e27db2e2ae932d0cdcc7a4a04eddb84201ad045'

然后,由于nx无法运行,管道失败。
我希望它的行为一直都是一样的。我试图改变跑步者和缓存,但无济于事。

rsl1atfo

rsl1atfo1#

nx affected显然需要访问ref才能计算diff。当$CI_MERGE_REQUEST_DIFF_BASE_SHA指向的引用比GIT_DEPTH设置更落后于HEAD时,就会发生此错误。
默认情况下,GitLab使用的深度为20。因此,如果MR中的提交超过20次,则会失败。
你需要确保你的git深度足够大,以便引用$CI_MERGE_REQUEST_DIFF_BASE_SHA出现在作业的检出仓库中。你可以通过在作业中设置GIT_DEPTH变量来做到这一点:

job:
  variables:
    GIT_DEPTH: "50" # or whatever you need

或者,您可以在作业中调用git命令,以确保存在所需的ref(或多个ref)。

相关问题