在Gitlab CI/CD中如何在流水线过程中切换到另一个分支?

3
我想在合并请求管道中检出到dev分支,该管道已经打开以将其与其他分支合并到dev。我将在此作业中检查一些内容,然后根据此作业的成功情况继续进行一些其他作业。是否可能做到这样的事情,还是我总是必须使用管道触发的分支进行工作?
我添加了gitlab配置的相关部分。

variables:
  GIT_STRATEGY: clone

checksomething:
  rules:
    - if: $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "dev"
    - if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS
      when: never
    - if: $CI_COMMIT_BRANCH
  environment:
    name: development
  before_script:
    - git checkout dev
  script:
    - !reference [.check-something-on-dev]

但是我遇到了这个错误:
$ git checkout dev
error: pathspec 'dev' did not match any file(s) known to git```
2个回答

6
实际上这很简单:

    before_script:
    - git fetch origin dev
    - git checkout dev

3
好的发现。已点赞。我猜测refspec没有获取所有分支,迫使你获取你需要的那个。 - VonC
在GitLab中弄清楚如何检出一个分支需要付出很多努力,他们应该更好地自己记录这一点。这对我也解决了问题。 - undefined

0

首先尝试执行 git branch -avv 命令,查看通过 GitLab-CI 作业克隆/检出可用的分支。

根据使用的refspec,克隆的存储库可能不会引用任何origin/dev分支,从而防止猜测模式的git checkout(或者说,更现代的checkout替代品git switch)工作。


1
git branch -avv 只返回了 * (HEAD detached at 8ee41cf) 8ee41cf check branches 2 :/ - iRestMyCaseYourHonor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接