[英]How to fetch entire repository with GitLab CI/CD?
我目前正在设置 GitLab CI/CD。 我们在项目中使用了 GitVersion,它会抛出以下错误:
/root/.nuget/packages/gitversiontask/5.3.7/build/GitVersionTask.targets(46,9): error: InvalidOperationException: Could not find a 'develop' or 'master' branch, neither locally nor remotely.
根据这个博客,当 CI 服务器没有获取完整的存储库时会发生这种情况(我们既有开发分支,也有主分支,但我正在处理不同的分支)。 对于 Jenkins,我们通过扩展结帐阶段解决了这个问题:
stage("Checkout") { gitlabCommitStatus(name: "Checkout") {
// These are the normal checkout instructions
cleanWs()
checkout scm
// This is the additional checkout to get all branches
checkout([
$class: 'GitSCM',
branches: [[name: 'refs/heads/'+env.BRANCH_NAME]],
extensions: [[$class: 'CloneOption', noTags: false, shallow: false, depth: 0, reference: '']],
userRemoteConfigs: scm.userRemoteConfigs,
])
sh "git checkout ${env.BRANCH_NAME}"
sh "git reset --hard origin/${env.BRANCH_NAME}"
}}
我本质上是在为.gitlab-ci.yml
文件寻找与此等效的东西。
默认情况下,为了速度,跑步者使用“获取”而不是“克隆”下载您的代码,但可以通过多种方式进行配置。 如果您希望项目管道中的所有作业都被克隆而不是获取,您可以在 CI 设置中更改默认值:
如果您不希望克隆所有作业,因为它较慢,您可以在 your.gitlab-ci.yml 中为您的作业更改它:
my_job:
stage: deploy
variables:
GIT_STRATEGY: clone
script:
- ./deploy
您可以在此处阅读有关 GIT_STRATEGY 变量的更多信息: https://docs.gitlab.com/ee/ci/runners/configure_runners.html#git-strategy
注意:您也可以将此变量设置为none
,如果您不需要代码但可能需要以前作业创建的工件,这很有用。 使用它,它不会检查任何代码,而是直接跳到您的脚本。
您应该手动在script
中执行此操作:
script:
- git fetch origin master
- git diff master
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.