首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gitlab CI:仅在管道中首次构建之前克隆存储库

Gitlab CI:仅在管道中首次构建之前克隆存储库
EN

Stack Overflow用户
提问于 2016-09-13 20:23:08
回答 2查看 3.2K关注 0票数 3

我在Gitlab CI的.yml文件中有大约5-10个构建。为了节省时间,我想知道是否有一种方法可以不在每个作业之间重新克隆存储库。理想情况下,存储库将被克隆一次,然后所有3个作业都将运行。我也不想将这些作业合并到一个构建中,因为我想单独查看每个作业的结果(当它们组合在一起时,gitlab的“通过/失败”只是最后一个作业的结果)。

我不想简单地做git fetch,因为我想在一开始就有一个新的克隆。

代码语言:javascript
复制
stages:
  - run

job1:
  stage: run
  script: 
    - pwd
    - make all TEST=job1

job2:
stage: run
script: 
    - pwd
    - make all TEST=job2

job3:
stage: run
script: 
    - pwd
    - make all TEST=job3

...
EN

回答 2

Stack Overflow用户

发布于 2017-05-26 21:29:15

这可能会有所帮助,假设您使用的是一个足够新的gitlab版本和runner:https://docs.gitlab.com/ce/ci/yaml/README.html#git-strategy

您可以将git-strategy设置为none,然后在before_script部分中手动克隆存储库。

这仍然会有一些困难-因为不同的runner可以服务于不同的工作,如果你没有一个专门的runner用于这个项目,所有的runner都需要访问repo位置。

票数 2
EN

Stack Overflow用户

发布于 2019-05-25 19:05:19

我也在摆弄这个话题。

实际上,我首先做了一个签出阶段(使用GIT_STRATEGY: clone),然后是具有多个作业和GIT_STRATEGY: fetch的构建阶段。

这确保了repo在开始时是完全克隆的,并且只为每个构建步骤获取。也许这对你也有帮助。

代码语言:javascript
复制
stages:
  - checkout
  - build

checkout:
  variables:
    GIT_STRATEGY: clone
    GIT_SUBMODULE_STRATEGY: recursive

  stage: checkout
  script: '@echo Checking out...'

build:commander:
  stage: build
  variables:
    GIT_STRATEGY: fetch  
  script:
    - _Publish.bat commander
  artifacts:
    paths:
      - BuildArtifacts\Commander\**    

build:login:
  stage: build
  variables:
    GIT_STRATEGY: fetch  
  script:
    - _Publish.bat login
  artifacts:
    paths:
      - BuildArtifacts\Login\**    

build:cli:
  stage: build
  variables:
    GIT_STRATEGY: fetch  
  script:
    - _Publish.bat cli
  artifacts:
    paths:
      - BuildArtifacts\Cli\**    
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39470006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档