将工件上传到gitlab后,如何删除gitlab运行程序上的工件目录?

丹尼·米其林(Danny Michelin)

我正在尝试创建一个gitlab作业,以显示测试代码覆盖率的指标。为此,我正在创建一个.coverage文件并将其放置在上载工件的目录中。在随后的阶段中,工件将被覆盖工具下载并使用,以生成覆盖报告。我注意到,当gitlab运行程序完成工作并膨胀我的文件系统时,不会删除工件。上传工件后如何删除工件目录?

这是我们目前拥有的

stages:
    - test
    - build

before_script:
    - export GITLAB_ARTIFACT_DIR="$(pwd)"/artifacts

[...]

some-test:
    stage: test
    script:
        - [some script that puts something in ${GITLAB_ARTIFACTS_DIR}
    artifacts:
        expire_in: 4 days
        paths:
            - artifacts/
some-other-test:
    stage: test
    script:
        - [some script that puts something in ${GITLAB_ARTIFACTS_DIR}
    artifacts:
        expire_in: 4 days
        paths:
            - artifacts/

[...]
coverage:
    stage: build
    before_script: 
    script: 
        - [our coverage script]
    coverage: '/TOTAL.*\s+(\d+%)$/'
    artifacts:
        expire_in: 4 days
        paths:
            - artifacts/
        when: always
[...]
after_script:
    - sudo rm -rf "${GITLAB_ARTIFACT_DIR}"

根据https://gitlab.com/gitlab-org/gitlab-runner/issues/4146的 after_script规定,不能访问before_scriptscripts环境变量。

尼古拉斯·佩平斯特(Nicolas Pepinster)

一个解决办法是使用cacheartifact同时进行。

此配置将根据$CI_JOB_ID每个作业执行的作业ID(创建一个新目录

stages:
- test

remote:
  stage: test
  script :
      - mkdir cache-$CI_JOB_ID
      - echo hello> cache-$CI_JOB_ID/foo.txt
  cache:
      key: build-cache
      paths:
      - cache-$CI_JOB_ID/
  artifacts:
      paths:
      - cache-$CI_JOB_ID/foo.txt
      expire_in: 1 week

在下一次运行时,先前的cache-$CI_JOB_ID将被删除并替换为新目录(因为目录$CI_JOB_ID将有所不同)。这将只保留一个缓存文件实例,直到执行下一个作业。

注意:您必须在目录名称前加上,cache-否则.gitlab-ci.yml无效。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将水豚截图从gitlab运行程序上传到数字海洋缓存?

将 Gitlab CI 工件上传到 Gitlab 之外的存储

如何在Gitlab CI Shell运行程序上失败

Gitlab自托管:错误:将工件作为“存档”上传到协调器...太大的存档

有没有办法将GitLab CI工件上传到Openshift容器?

使用python将工件上传到工件

如何在程序上命名工件?

停止gitlab运行程序以不删除目录

Linux上的GitLab运行程序工作目录是什么

GitLab:是否可以在特定的运行程序上运行管道?

如何使用AntScript自动将工件上传到GCP?

如何将工件上传到现有版本?

如何使用Jfrog CLI将工件上传到Jfrog Artifactory?

如何设置Jenkinsfile将Maven工件上传到Artifactory

如何在本地运行需要工件的gitlab-runner作业

使用Gradle将工件上传到Artifactory

Jenkins将工件上传到nexus插件

将工件上传到 JFrog Artifactory

如何设置gitlab CI运行程序?

问题将GitLab运行程序与GitLab连接

Gitlab:缺少页面工件

Gitlab运行程序删除服务器上的某些文件/文件夹

在构建过程完成后,如何解决Gitlab运行程序gitlab-ci.yml文件作业失败?

gitlab - 尝试从共享 docker 卷上传文件作为工件

GitLab CI Build没有上传代码接受的工件

Windows上的GitLab运行程序并处理&%ERRORLEVEL%

如何在 gitlab-ci docker executor 中的 AMD 上使用 OpenCL 运行程序

如何在.gitlab-ci.yml中指定通配符工件子目录?

如何将.net核心构建工件上传到JFrog Artifactory Cloud