- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 GitLab CI 构建 C# 解决方案,并尝试将一些构建工件从一个构建阶段传递到另一个构建阶段。
问题是,这些工件并不位于单个目录中,而是位于不同的子目录中,但这些子目录都具有相同的名称 bin/
或 obj/
。
我的 .gitlab-ci.yml
如下所示:
...
stages:
- build
- test
build:
stage: build
script:
CALL %MSBuild% ...
artifacts:
paths:
- /**/bin/
- /**/obj/
expire_in: 6 hrs
test:
stage: test
dependencies:
- build
...
我尝试使用不同的方式捕获工件,例如
**/bin/
**/obj/
(无效语法),或
.*/bin/
.*/obj/
但是那个没有找到任何工件,就像 /**/bin/
和 /**/obj/
一样,给了我以下错误:
Uploading artifacts...
WARNING: /**/bin/: no matching files
WARNING: /**/obj/: no matching files
如何指定要扫描工件的子目录模式?或者这根本有可能吗?
简单地使用
artifacts:
untracked: true
不是一个选项,因为有一个巨大的未跟踪的 packages/
子目录,这会导致工件上传因存档太大而失败:
Uploading artifacts...
untracked: found 4513 files
ERROR: Uploading artifacts to coordinator... too large archive id=36 responseStatus=413 Request Entity Too Large token=...
FATAL: Too large
最佳答案
gitlab-ci-multi-runner构建运行器是使用 Go 构建的目前使用 filepath.Glob()扫描 file_archiver.go 中任何指定的工件.
Go 似乎不支持另一个问题 here 中讨论的双星 glob 表达式。在这样。所以目前似乎没有办法使用全功能的**/bin
表达式。
因为我的所有项目都位于解决方案根目录下的同一级别,所以仍然可以使用类似的东西
artifacts:
paths:
- "*/bin"
- "*/obj"
请注意,引号 ("
) 似乎是必需的,并且末尾无尾随路径分隔符。
还应该可以通过添加更多通配表达式来显式添加更多级别(如here所述):
paths:
...
- "*/obj"
- "*/*/bin"
- "*/*/obj"
...
GitLab 正在跟踪此问题 here ,并且可能会在未来版本中修复。
UPD:由于提到issue已关闭,由于 documentation ,从 GitLab runner 13.0 开始,它支持 doublestar.Glob .
所以现在可以写这样的东西:
paths:
- "**/bin"
- "**/obj"
它将包括工件中名为 bin
和 obj
的所有嵌套目录
关于yaml - 如何在 .gitlab-ci.yml 中指定通配符工件子目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38009869/
我是一名优秀的程序员,十分优秀!