从 gitlab-ci dir 中获取所有工件并使其成为工件

Posted

技术标签:

【中文标题】从 gitlab-ci dir 中获取所有工件并使其成为工件【英文标题】:Grab all artifacts from gitlab-ci dir and make them an artifact 【发布时间】:2021-06-29 15:52:08 【问题描述】:

我正在尝试在特定目录中显示所有工件 .html 文件: $TOOLS_PATH/terraform_results/html 在我的 gitlab 管道运行时在构建作业阶段生成。

当它在gitlab 管道中运行时,我收到警告: Uploading artifacts... WARNING: tools/terraform_results/html/*: no matching files

我通过 gitlab-ci.yml 文件通过以下方式调用它:

  artifacts:
    paths:
    - "$TOOLS_PATH/terraform_results/html/*"

我做错了什么?

【问题讨论】:

刚刚跟进,您解决了这个问题吗?如果是,请选择一个答案。谢谢! 【参考方案1】:

仅适用于 .html 文件

artifacts:
  paths:
    - $TOOLS_PATH/terraform_results/html/*.html

【讨论】:

【参考方案2】:

删除引号和通配符并缩进路径列表。这将压缩html 文件夹中的所有内容。如果需要,您可以使用诸如*.html 之类的通配符来过滤文件名:

artifacts:
    paths:
      - $TOOLS_PATH/terraform_results/html/

如果这不起作用,请阅读artifacts:paths 上的 gitlab-ci.yml 参考,以确保您没有遗漏任何内容。例如:

路径是相对于项目目录 ($CI_PROJECT_DIR) 的,不能直接链接到项目目录之外。

确保tools 目录位于项目目录的根目录中。您可以通过将ls $CI_PROJECT_DIR 添加到您的scripts 部分并检查运行器日志来确认该目录存在。

【讨论】:

以上是关于从 gitlab-ci dir 中获取所有工件并使其成为工件的主要内容,如果未能解决你的问题,请参考以下文章

如何创建一个工件,以便它可以在 .gitlab-ci.yml 中下载

gitlab-ci 运行器中具有不同到期时间的多条路径

gitlab-ci.yml、before_script 和 artifact

在gitlab-ci.yml上动态设置工件路径/文件夹结构

Gitlab CI 中缓存/工件的正确用法是啥?

通过 CI runner 将文件推送到 gitlab-ci