簡體   English   中英

如何使用 GitLab CI/CD 獲取整個存儲庫?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM