我有一个在构建期间生成的目录,不应在下一个构建中删除它。我试图在 .gitlab-ci.yml 中使用缓存保留目录:
cache:
key: "$CI_BUILD_REF_NAME"
untracked: true
paths:
- target_directory/
build-runner1:
stage: build
script:
- ./build-platform.sh target_directory
在第一个构建中生成了一个 cache.zip,但对于下一个构建,target_directory 被删除并提取了 cache.zip,这需要很长时间。这是第二次构建的日志:
Running with gitlab-ci-multi-runner 1.11.
on Runner1
Using Shell executor...
Running on Runner1...
Fetching changes...
Removing target_directory/
HEAD is now at xxxxx Update .gitlab-ci.yml
From xxxx
Checking out xxx as master...
Skipping Git submodules setup
Checking cache for master...
Successfully extracted cache
有没有办法让 gitlab runner 不首先删除目录?
你需要的是使用一个工作神器:
Artifacts 是附加到一个文件和目录的列表 成功完成后的工作。
.gitlab-ci.yml
文件:
your job:
before_script:
- do something
script:
- do another thing
- do something to generate your zip file (example: myFiles.zip)
artifacts:
paths:
- myFiles.zip
作业完成后,如果您访问该作业的特定页面,您可以看到有一个用于下载工件档案的按钮。
对于 Gitlab Runner >= 11.10,您可以使用
GIT_CLEAN_FLAGS
.gitlab-ci.yml
:
variables:
GIT_CLEAN_FLAGS: -ffdx -e target_directory/
script:
- ls -al target_directory/
根据您发布的日志,是
git clean
删除了您的target_directory
.
所以你可以告诉
git clean
不要通过设置变量target_directory
删除你的GIT_CLEAN_FLAGS
。
GIT_CLEAN_FLAGS
变量用于控制 git clean
在签出源后的默认行为。您可以在变量部分将其设置为globally或per-job。
GIT_CLEAN_FLAGS
接受git clean
命令的所有可能选项。
如果指定了git clean
,
GIT_CHECKOUT: "false"
将被禁用。
如果
GIT_CLEAN_FLAGS
是:
git clean
标志默认为-ffdx
.none
,不执行git clean。