我目前正在为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无法运行,管道失败。
我希望它的行为一直都是一样的。我试图改变跑步者和缓存,但无济于事。
1条答案
按热度按时间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
变量来做到这一点:或者,您可以在作业中调用
git
命令,以确保存在所需的ref(或多个ref)。