Cómo especificar los subdirectorios de artefactos comodín en.gitlab-ci.yml?


Estoy usando GitLab CI para construir una solución de C# y tratar de pasar algunos artefactos de construcción de una etapa de construcción a otra.

El problema es que los artefactos no están ubicados en un solo directorio sino en diferentes subdirectorios, que sin embargo todos tienen los mismos nombres bin/ o obj/.

Mi .gitlab-ci.yml se parece a lo siguiente:

...
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 usando diferentes maneras, por ejemplo, {[13]]}

**/bin/
**/obj/

(sintaxis no válida), o

.*/bin/
.*/obj/

Pero ese no encontré ningún artefacto, al igual que /**/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 ser escaneado en busca de artefactos? ¿O es esto posible?

Simplemente usando

artifacts:
  untracked: true

No es una opción, debido a un enorme subdirectorio sin seguimiento packages/, 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
Author: buygrush, 2016-06-24

1 answers

El gitlab-ci-multi-runner build runner se construye usando Go y actualmente usa filepath.Glob () para buscar cualquier artefacto especificado en file_archiver.go .

Go no parece apoyar la expresión de doble estrella glob como se discutió en otra pregunta aquí en SO. Así que parece que no hay manera de usar una expresión **/bin completa en este momento.

Porque sin embargo todos mis proyectos se encuentran en el mismo nivel por debajo la raíz de la solución, todavía es posible utilizar algo como

artifacts:
  paths:
    - "*/bin"
    - "*/obj"

Tenga en cuenta que las comillas (") parecen ser necesarias, así como no separador de ruta final al final.

También debería ser posible agregar explícitamente más niveles agregando más expresiones globbing (como se describe aquí):

paths:
  ...
  - "*/obj"
  - "*/*/bin"
  - "*/*/obj"
  ...
 40
Author: buygrush,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:10:23