我想仅在特定管道内使用 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-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/