2017-07-18 5 views
0

J'utiliseTélécharger des fichiers de Artifactory à Teamcity sans en conservant leur chemin complet

  • TeamCity Enterprise 02/01/2017 (build 46812)
  • Artifactory Professional 5.3.1 rev 50046
  • Teamcity a la fiche de Artifactory -Dans installé (ver 2.3.0)

La tâche est simple - télécharger des fichiers de Artifactory à construire Teamcity:

  • De Artifactory MyRepo/RootFolder/ProjectFolder/1.2.3/<files>
  • TC %checkoutdir%/artifacts/<files>

La <files> partie du chemin contient les dossiers et les fichiers et je veux conserver leur structure.

La spécification de téléchargement JSON est:

{ 
    "files": [ 
    { 
     "pattern": "MyRepo/RootFolder/ProjectFolder/1.2.3/", 
     "target": "artifacts/" 
    } 
    ] 
} 

Cependant, les fichiers sont téléchargés dans un autre endroit que j'attendre:

  • Actual: artifacts/RootFolder/ProjectFolder/1.2.3/<files>
  • à prévoir: artifacts/<files>

Le chemin complet d'Artifactory est ajouté après le répertoire cible. Comment puis-je dire au plugin d'utiliser uniquement le chemin relatif des fichiers après la racine spécifiée? J'ai essayé de bidouiller avec des jokers, des barres obliques, etc., mais rien n'a aidé.

J'ai dû créer une étape de construction supplémentaire où je déplace manuellement les fichiers vers la structure que j'attends, mais je préférerais ne pas avoir à le faire.


RÉPONSE DE TRAVAIL:

{ 
    "files": [ 
    { 
     "pattern": "MyRepo/RootFolder/ProjectFolder/1.2.3/(*)", 
     "target": "artifacts/{1}", 
     "flat": "true" 
    } 
    ] 
} 

Répondre

0

Vous pouvez personnaliser votre structure cible en utilisant des espaces réservés dans les spécifications de votre fichier comme décrit here. Les espaces réservés vous permettent de capturer une section spécifique de la valeur de votre propriété "pattern" de fichier, et de l'utiliser dans la valeur de la propriété "target".

Dans votre cas, le téléchargement Spec du fichier doit ressembler à ceci:

{ 
    "files": [ 
    { 
     "pattern": "MyRepo/RootFolder/ProjectFolder/1.2.3/(*)", 
     "target": "artifacts/{1}" 
    } 
    ] 
} 
+0

J'ai essayé cela avant, mais il ne fonctionne pas comme prévu - disons que j'ai un dossier dans appelé 'util'. Votre fichier de spécifications crée cette structure au téléchargement: 'artefacts/util/RootFolder/ProjectFolder/1.2.3/util/' - il place simplement l'arborescence entière dans un dossier correspondant à (*). Sans oublier que cela ne fait rien de différent avec les fichiers. –

+0

Je vois.Donc, si je vous comprends bien, vous souhaitez une mise en page à plat des fichiers sous le répertoire d'artefacts. Je pense que l'ajout de la propriété "flat": "true" à votre fichier d'origine Spec devrait faire l'affaire pour vous. –

+0

Merci de m'avoir poussé dans la bonne direction. J'ai essayé 'flat' avant, mais sans les espaces réservés' (*), {1} '. Utiliser les deux ensemble donne les résultats que je veux. –