Gitlab runner 13.1.1 检查提交而不是我的分支
Gitlab runner 13.1.1 checks out a commit and not my branch
我有一个 .gitlab-ci.yml 文件,之前 运行 与 Gitlab 运行ner 12.9.0 没有问题。
运行ner 已更新到 13.1.1,现在它不再签出到我的分支 20-branchname
,而是提交。 (可能是最近的一个)这意味着 运行ner 无法将分支与 master 分支合并以执行一致性检查,因为它会导致 fatal: refusing to merge unrelated histories
。我正在使用 GitLab 13.2.0-pre
当我让 运行ner 执行 git status
时,它会打印出 HEAD 已分离。
我在使用不同版本的 运行ner:
的两个管道的原始日志中发现了这种差异
12.9.0:
[32;1mChecking out 16b0a39c as 20-branchname...[0;m
From {repository url}
* [new ref] refs/pipelines/127602838 -> refs/pipelines/127602838
* [new branch] 20-branchname -> origin/20-branchname
git-lfs/2.8.0 (GitHub; windows amd64; go 1.12.2; git 30af66bb)
13.1.1:
[32;1mChecking out 7410f5aa as 20-branchname...[0;m
git-lfs/2.8.0 (GitHub; windows amd64; go 1.12.2; git 30af66bb)
这是我的 .gitlab-ci.yml
的样子:
.shared_windows_runners:
tags:
- shared-windows
- windows
- windows-1809
stages:
- test
# A few templates that help determine when to run a program
.template_manual_trigger_on_wip_merge_request:
rules: &manual_trigger_on_wip_merge_request
- if: '$CI_MERGE_REQUEST_TITLE =~ /WIP/'
when: manual
allow_failure: false
- when: always
allow_failure: false
.template_run_always:
rules: &run_always
- when: always
allow_failure: false
# Check that the checked in target matches what is being generated.
Coherence Check:
extends:
- .shared_windows_runners
stage: test
rules: *manual_trigger_on_wip_merge_request
before_script:
# Git setup
- git config --global user.email "runner@mail.com"
- git config --global user.name "Runner name"
- git config --global core.safecrlf false
- git submodule sync
- git submodule update --init
- git status
# Results in detached HEAD
script:
- git fetch origin
- git merge origin/master -X ours -m "coherence check merge"
# It fails here with "fatal: refusing to merge unrelated histories"
我也尝试在 .gitlab-ci.yml
中添加一个 git checkout 20-branchname
虽然它确实导致 git status
显示我的分支已被检出而不是提交,但它仍然当它试图与 master 合并时导致不相关的历史错误。
有没有人知道 Gitlab 运行ner 12.9.0 和 13.1.1 之间的区别可能是原因?感谢您的帮助!
原来问题是 git 深度。它默认设置为 50,我最近对我的分支的提交超过了 50。我通过将此添加到 .gitlab-ci.yml
:
来解决它
variables:
GIT_DEPTH: full
我有一个 .gitlab-ci.yml 文件,之前 运行 与 Gitlab 运行ner 12.9.0 没有问题。
运行ner 已更新到 13.1.1,现在它不再签出到我的分支 20-branchname
,而是提交。 (可能是最近的一个)这意味着 运行ner 无法将分支与 master 分支合并以执行一致性检查,因为它会导致 fatal: refusing to merge unrelated histories
。我正在使用 GitLab 13.2.0-pre
当我让 运行ner 执行 git status
时,它会打印出 HEAD 已分离。
我在使用不同版本的 运行ner:
12.9.0:
[32;1mChecking out 16b0a39c as 20-branchname...[0;m
From {repository url}
* [new ref] refs/pipelines/127602838 -> refs/pipelines/127602838
* [new branch] 20-branchname -> origin/20-branchname
git-lfs/2.8.0 (GitHub; windows amd64; go 1.12.2; git 30af66bb)
13.1.1:
[32;1mChecking out 7410f5aa as 20-branchname...[0;m
git-lfs/2.8.0 (GitHub; windows amd64; go 1.12.2; git 30af66bb)
这是我的 .gitlab-ci.yml
的样子:
.shared_windows_runners:
tags:
- shared-windows
- windows
- windows-1809
stages:
- test
# A few templates that help determine when to run a program
.template_manual_trigger_on_wip_merge_request:
rules: &manual_trigger_on_wip_merge_request
- if: '$CI_MERGE_REQUEST_TITLE =~ /WIP/'
when: manual
allow_failure: false
- when: always
allow_failure: false
.template_run_always:
rules: &run_always
- when: always
allow_failure: false
# Check that the checked in target matches what is being generated.
Coherence Check:
extends:
- .shared_windows_runners
stage: test
rules: *manual_trigger_on_wip_merge_request
before_script:
# Git setup
- git config --global user.email "runner@mail.com"
- git config --global user.name "Runner name"
- git config --global core.safecrlf false
- git submodule sync
- git submodule update --init
- git status
# Results in detached HEAD
script:
- git fetch origin
- git merge origin/master -X ours -m "coherence check merge"
# It fails here with "fatal: refusing to merge unrelated histories"
我也尝试在 .gitlab-ci.yml
中添加一个 git checkout 20-branchname
虽然它确实导致 git status
显示我的分支已被检出而不是提交,但它仍然当它试图与 master 合并时导致不相关的历史错误。
有没有人知道 Gitlab 运行ner 12.9.0 和 13.1.1 之间的区别可能是原因?感谢您的帮助!
原来问题是 git 深度。它默认设置为 50,我最近对我的分支的提交超过了 50。我通过将此添加到 .gitlab-ci.yml
:
variables:
GIT_DEPTH: full