yml tag run oficial yaml gitlab-ci gitlab-8

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.