[英]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.