停止 gitlab runner 以不删除目录

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

我有一个在构建期间生成的目录,不应在下一个构建中删除它。我试图在 .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 不首先删除目录?

gitlab gitlab-ci gitlab-ci-runner
2个回答
6
投票

你需要的是使用一个工作神器

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

作业完成后,如果您访问该作业的特定页面,您可以看到有一个用于下载工件档案的按钮。

注意


0
投票

对于 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
在签出源后的默认行为。您可以在变量部分将其设置为globallyper-job

GIT_CLEAN_FLAGS
接受
git clean
命令的所有可能选项。

如果指定了

git clean

GIT_CHECKOUT: "false"
将被禁用。

如果

GIT_CLEAN_FLAGS
是:

  • 未指定,
    git clean
    标志默认为
    -ffdx
    .
  • 给定值
    none
    ,不执行git clean。
© www.soinside.com 2019 - 2024. All rights reserved.