95 votes

Comment spécifier des sous-répertoires d'artefacts génériques dans le fichier .gitlab-ci.yml?

Je suis l'aide de GitLab CI pour construire une solution C# et essayer de passer un certain de construire des artefacts d'une étape à l'autre.

Le problème, c'est que les artefacts ne sont pas situés dans un seul répertoire, mais dans des sous-répertoires différents, mais tous ont le même nom bin/ ou obj/.

Mon .gitlab-ci.yml se présente comme suit:

...
stages:
  - build
  - test

build:
  stage: build
  script:
    CALL %MSBuild% ...
  artifacts:
    paths:
      - /**/bin/
      - /**/obj/
    expire_in: 6 hrs

test:
  stage: test
  dependencies:
    - build
  ...

J'ai essayé de capturer les objets à l'aide de différentes façons, par exemple

**/bin/
**/obj/

(syntaxe non valide), ou

.*/bin/
.*/obj/

mais que l'on ne trouve pas tout les artefacts, comme /**/bin/ et /**/obj/, me donne des erreurs suivantes:

Uploading artifacts...
WARNING: /**/bin/: no matching files
WARNING: /**/obj/: no matching files

Comment puis-je spécifier un sous-répertoire de modèle à analyser pour les artefacts? Ou est-ce même possible?

Simplement à l'aide de

artifacts:
  untracked: true

n'est pas une option, parce que d'une énorme non chaînée packages/ sous-répertoire, ce qui provoque des artefacts télécharger à l'échec à cause d'une trop grande archive:

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

120voto

buygrush Points 196

Le gitlab-ci-multi-coureur de construire runner est construit à l'aide de Go et utilise actuellement filepath.Glob() pour rechercher un quelconque des artefacts dans file_archiver.aller.

Aller ne semble pas à l'appui de l'étoile double glob expression tel que discuté dans une autre question ici , DONC. Donc, il semble y avoir aucun moyen d'utiliser un plein de fonctionnalités **/bin expression à l'instant.

Parce que cependant tous mes projets sont situés au même niveau en dessous de la solution de la racine, il est encore possible d'utiliser quelque chose comme

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

Notez que les guillemets (") semblent être nécessaires, ainsi que l' absence de fuite séparateur de chemin à la fin.

Il devrait également être possible d'ajouter explicitement plus de niveaux en ajoutant plus d'expansion des expressions (comme décrit ici):

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X