yaml - tag - ¿Cómo especificar subdirectorios de artefactos comodín en.gitlab-ci.yml?
gitlab runner docker (1)
Estoy usando GitLab CI para construir una solución C # e intento pasar algunos artefactos de construcción de una etapa de construcción a otra.
El problema es que los artefactos no se encuentran en un solo directorio sino en diferentes subdirectorios, que sin embargo todos tienen los mismos nombres
bin/
u
obj/
.
Mi
.gitlab-ci.yml
tiene el siguiente aspecto:
...
stages:
- build
- test
build:
stage: build
script:
CALL %MSBuild% ...
artifacts:
paths:
- /**/bin/
- /**/obj/
expire_in: 6 hrs
test:
stage: test
dependencies:
- build
...
Traté de capturar los artefactos de diferentes maneras, p. Ej.
**/bin/
**/obj/
(sintaxis no válida) o
.*/bin/
.*/obj/
pero ese no encontró ningún artefacto, solo como
/**/bin/
y
/**/obj/
, dándome los siguientes errores:
Uploading artifacts...
WARNING: /**/bin/: no matching files
WARNING: /**/obj/: no matching files
¿Cómo puedo especificar un patrón de subdirectorio para escanear en busca de artefactos? ¿O es esto posible?
Simplemente usando
artifacts:
untracked: true
no es una opción, debido a la gran cantidad de
packages/
subdirectorios sin seguimiento, lo que hace que la carga de artefactos falle debido a un archivo demasiado grande:
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
El gitlab-ci-multi-runner build runner se construye usando Go y actualmente usa filepath.Glob() para escanear cualquier artefacto especificado en file_archiver.go .
Ir no parece apoyar la expresión de doble estrella glob como se discutió en otra pregunta
gitlab-ci-multi-runner
en SO.
Por lo tanto,
parece que no hay forma de usar una expresión
**/bin
con todas las funciones en este momento
.
Sin embargo, porque todos mis proyectos están ubicados en el mismo nivel debajo de la raíz de la solución, todavía es posible usar algo como
artifacts:
paths:
- "*/bin"
- "*/obj"
Tenga en cuenta que las comillas (
"
) parecen ser necesarias, así como
ningún
separador de ruta final al final.
También debería ser posible agregar explícitamente más niveles agregando más expresiones globales (como se describe here ):
paths:
...
- "*/obj"
- "*/*/bin"
- "*/*/obj"
...
GitLab está rastreando este problema aquí , y posiblemente se solucionará en una versión futura.