英文:
Nx on gitlab ci sometimes uses wrong commit ref
问题
这是您要翻译的内容:
"我目前正在为一个主要运行良好的单一 nx 存储库(repo)操作 GitLab CI 流水线,但有时 linting 任务在使用正确的提交引用时会出现问题。
这是我正在运行的设置 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 无法运行。
我期望它会一直表现相同。我尝试更改运行器和缓存,但无济于事。"
英文:
i am currently operating a gitlab ci pipeline for a mono nx repo which is mostly running fine but sometimes the linting job is having problems with useing the right commit ref for its base.
This is the current part of the script i am running to setup my 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
Followed by the job:
npx nx affected --base=$NX_BASE --head=$NX_HEAD --target=lint --parallel=3
This is the output when this occures:
$ 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'
Which is then followed by the pipeline failing since nx can't run.
I expect that it will behave the same all the time. I tried to change runners and cache but to no avail.
答案1
得分: 0
nx affected
显然需要访问引用以计算差异。当$CI_MERGE_REQUEST_DIFF_BASE_SHA
指向比你的GIT_DEPTH
设置的HEAD更远的引用时,可能会发生此错误。
默认情况下,GitLab使用深度为20。因此,如果您的合并请求中有超过20个提交,将会失败。
您需要确保您的git深度足够大,以使引用$CI_MERGE_REQUEST_DIFF_BASE_SHA
在作业中的检出库中存在。您可以通过在作业中设置GIT_DEPTH
变量来实现这一点:
job:
variables:
GIT_DEPTH: "50" # 或者您需要的任何值
或者,您可以在作业中调用git
命令,以确保您需要的引用(或引用)存在。
英文:
nx affected
will obviously need to access to the ref to be able to calculate a diff. This error can happen when $CI_MERGE_REQUEST_DIFF_BASE_SHA
points to a reference that is farther behind HEAD than your GIT_DEPTH
setting.
By default, GitLab uses a depth of 20. So if there's more than 20 commits in your MR, this will fail.
You need to make sure your git depth is large enough such that the reference $CI_MERGE_REQUEST_DIFF_BASE_SHA
is present in the checked out repo in the job. You can do this by setting the GIT_DEPTH
variable in your job:
job:
variables:
GIT_DEPTH: "50" # or whatever you need
Alternatively, you can invoke git
commands in your job to ensure the ref (or refs) you need are present.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论