Comment spécifier les sous-répertoires d'artéfacts de Joker.gitlab-ci.yml?

J'utilise GitLab CI pour construire une solution C# et essayer de passer quelques artefacts de construction d'une étape à l'autre.

le problème est que les artefacts ne sont pas localisés dans un seul répertoire mais dans des sous-répertoires différents, qui ont cependant tous les mêmes noms bin/ ou obj/ .

Mon .gitlab-ci.yml ressemble à ce qui 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 artéfacts en utilisant différents voies, p.ex.

**/bin/
**/obj/

(syntaxe non valide), ou

.*/bin/
.*/obj/

mais qu'on n'a pas trouvé d'artefacts, tout comme /**/bin/ et /**/obj/ , me donnant les erreurs suivantes:

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

Comment puis-je spécifier un motif de sous-répertoire à balayer à la recherche d'artefacts? Ou est-ce même possible?

utilisation simple

artifacts:
  untracked: true

n'est pas une option, à cause d'un énorme sous-répertoire packages/ non suivi, qui fait échouer le téléchargement d'artefacts à cause d'une archive trop 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
30
demandé sur buygrush 2016-06-24 12:22:40

1 réponses

le gitlab-ci-multi-runner build runner est construit en utilisant Go et utilise actuellement filepath.Glob () pour rechercher tout artefact spécifié dans file_archiver.allez .

Go ne semble pas soutenir l'expression double étoile glob comme discuté dans une autre question ici à SO. Donc il semble qu'il n'y ait aucun moyen d'utiliser un **/bin expression à l'instant .

parce que cependant tous mes projets sont situés au même niveau sous la solution root, il est encore possible d'utiliser quelque chose comme

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

notez que les guillemets ( " ) semblent nécessaires, ainsi que Non séparateur de sillon de fuite à la fin.

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

paths:
  ...
  - "*/obj"
  - "*/*/bin"
  - "*/*/obj"
  ...
40
répondu buygrush 2017-05-23 12:10:23