我在Gitlab CI的.yml文件中有大约5-10个构建。为了节省时间,我想知道是否有一种方法可以不在每个作业之间重新克隆存储库。理想情况下,存储库将被克隆一次,然后所有3个作业都将运行。我也不想将这些作业合并到一个构建中,因为我想单独查看每个作业的结果(当它们组合在一起时,gitlab的“通过/失败”只是最后一个作业的结果)。
我不想简单地做git fetch,因为我想在一开始就有一个新的克隆。
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
...发布于 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位置。
发布于 2019-05-25 19:05:19
我也在摆弄这个话题。
实际上,我首先做了一个签出阶段(使用GIT_STRATEGY: clone),然后是具有多个作业和GIT_STRATEGY: fetch的构建阶段。
这确保了repo在开始时是完全克隆的,并且只为每个构建步骤获取。也许这对你也有帮助。
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\** https://stackoverflow.com/questions/39470006
复制相似问题