重试时Gitlab ci缓存为空

时间:2018-04-20 09:55:02

标签: docker gitlab gitlab-ci

我遇到了gitlab-ci多跑者的问题。我的设置有几个阶段。让我们假装构建,测试。构建工作正常,但是当涉及到测试阶段时,由于某些基础架构问题,作业失败。然后我解决了失败的原因,并且只想重复最后一步,假设阶段之间的缓存是活着的。但由于空缓存,它再次失败。这是一个演示我的布局的例子

例如

stages:
  - build
  - test

build_step:
  stage: build
  tags:
    - docker
  cache:
    key: ${CI_PIPELINE_ID}
    untracked: true
    paths:
    - bld/
  script:
    - rm -rf bld
    - mkdir -p bld
    - cd bld
    - touch build_here

test:
  stage: test
  cache:
    key: ${CI_PIPELINE_ID}
    untracked: true
    paths:
    - bld/
  tags:
    - docker
  script:
    - cd bld
    - ls -all

这是我的gitlab-runner版本:

# gitlab-ci-multi-runner --version
Version:      9.5.1
Git revision: 96b34cc
Git branch:   9-5-stable
GO version:   go1.8.3
Built:        Wed, 04 Oct 2017 16:26:27 +0000
OS/Arch:      linux/amd64

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

缓存以尽力而为的方式提供;通过您需要使用工件的作业传递数据,如documentation

中所述
  
      
  • cache - 用于项目依赖项的临时存储。对于保存中间构建结果(如jar或apk文件)没有用。缓存旨在用于加速对给定作业的后续运行的调用,通过保留依赖项(例如,npm包,Go供应商包等),因此不必从公共中重新获取它们互联网。虽然可以滥用缓存来在阶段之间传递中间构建结果,但可能存在工件更适合的情况。
  •   
  • artifacts - 用于将在各阶段之间传递的阶段结果。工件被设计为上传构建的一些编译/生成位,并且可以由任意数量的并发运行器获取它们。它们保证可用,并且可以在作业之间传递数据。它们也可以从UI下载。
  •   

您需要使用dependenciesartifacts来获得您想要的内容