我正在使用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-多亚军构建亚军是使用内置围棋和目前使用filepath.Glob()扫描在任何指定的文物file_archiver.go。
围棋似乎并不支持双星全局正则表达式中的另一个问题讨论这里的SO。因此,目前似乎无法使用功能齐全的**/bin
表达式。
因为我的所有项目都位于解决方案根目录下的同一级别,所以仍然可以使用类似
artifacts:
paths:
- "*/bin"
- "*/obj"
请注意,"
似乎需要使用引号(),并且末尾没有尾随路径分隔符。
它也应该可以通过增加更多的通配符表达式(如描述明确添加更多的级别在这里):
paths:
...
- "*/obj"
- "*/*/bin"
- "*/*/obj"
...
GitLab正在追踪这个问题在这里,并且有可能被固定在以后的版本。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句