为什么 GitLab 管道中的缓存不仅仅适用于特定管道?

问题描述 投票:0回答:1

我想仅在特定管道内使用 GitLab 管道中的缓存,因此其他管道不会访问它。我写了下面的例子来证明我的意思。在此示例中,我想在结果作业中看到两个文件,dist/build 和

dist/test
,但我看不到。

stages:
    - Build
    - Test
    - Result

cache:
    key: $CI_COMMIT_SHA
    paths:
        - dist/

build:
    stage: Build
    script:
        - mkdir -p dist/
        - touch dist/build
    cache:
        - key: $CI_COMMIT_SHA

test:
    stage: Test
    script:
        - mkdir -p dist/
        - touch dist/test
    cache:
        - key: $CI_COMMIT_SHA

result:
    stage: Result
    script:
        - ls dist/
    cache:
        - key: $CI_COMMIT_SHA

尽管设置了缓存,但运行

dist/
时,结果作业找不到
dist/build
目录或文件
dist/test
ls dist/
。为什么在这种情况下 GitLab 无法处理缓存?

gitlab gitlab-ci cicd gitlab-ce gitlab-ee
1个回答
0
投票

根据这个链接

  • 如果你的工作不依赖于前一份工作(即可以产生 它本身,但如果内容已经存在,作业将运行得更快), 然后使用缓存。
  • 如果您的工作确实依赖于前一份工作的输出(即不能 自己生成),然后使用工件和依赖项。

所以这个 gitlab-ci.yml 可以帮助你:

stages:
    - Build
    - Test
    - Result

build:
    tags:
      - Sloth
    stage: Build
    script:
        - mkdir -p dist/
        - touch dist/build
    artifacts:
      paths:
        - dist/

test:
    tags:
      - Sloth
    stage: Test
    script:
        - mkdir -p dist/
        - touch dist/test
    artifacts:
      paths:
        - dist/

result:
    tags:
      - Sloth
    stage: Result
    script:
        - ls dist/
© www.soinside.com 2019 - 2024. All rights reserved.