Как указать подкаталоги артефактов подстановочных знаков в.gitlab-ci.в формате YML?
Я использую 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
1 ответ:
GitLab-ci-multi-runner build runner построен с использованиемGo и в настоящее время использует filepath.Glob () для поиска любых указанных артефактов в file_archiver.иди .
Go, похоже, не поддерживает выражение double star Globe, как обсуждалось в другом вопросездесь в SO. Так что на данный момент нет возможности использовать полнофункциональное
**/bin
выражение.Потому что, однако, все мои проекты расположены на одном уровне ниже корень решения, все еще можно использовать что-то вроде
Обратите внимание, что кавычки (artifacts: paths: - "*/bin" - "*/obj"
"
) кажутся обязательными, а также нет разделителя пути в конце.Также должно быть возможно явно добавить больше уровней, добавив больше глобирующих выражений (как описано здесь):
paths: ... - "*/obj" - "*/*/bin" - "*/*/obj" ...