web-dev-qa-db-fra.com

Construction VSTS à partir de plusieurs référentiels

J'ai deux référentiels - un dans TFVC et un autre dans Git. Il existe des raisons techniques spécifiques pour les séparer.

Le code dans TFVC est construit sur un agent de build privé et le code dans Git est construit sur un agent hébergé. Donc, actuellement, j'ai deux versions indépendantes et leurs résultats sont déployés ensemble dans une définition de version.

Je cherche à créer des builds qui peuvent être en mesure d'obtenir la source à partir des deux référentiels afin d'avoir une seule définition de build à gérer.

Existe-t-il un moyen d'y parvenir?

12
Kangkan

Pour l'instant, il n'y a aucun moyen de spécifier plusieurs référentiels à l'étape Obtenir les sources. Et il y a une voix d'utilisateur Autoriser la construction de TFS à dépendre de plusieurs référentiels qui suggère une fonctionnalité similaire, vous pouvez voter et suivre.

La solution de contournement pour l'instant est d'obtenir manuellement les fichiers de l'autre référentiel .

Par exemple, si vous spécifiez le dépôt TFVC à l'étape Obtenir les sources, vous pouvez ajouter une tâche PowerShell au début des tâches et cloner l'autre git repo par git clone <repo URL> etc.

14
Marina Liu

TFVC

Et l'inverse de la réponse de Marina est également possible. Après avoir lié votre définition de build à Git par défaut, vous pouvez ajouter un script PowerShell pour mapper un espace de travail et récupérer les sources:

tf workspace /new /noprompt /location:local /permission:private <name>
tf workfold /map $/Server/Path "$(Agent.BuildDirectory)\tfvc" /workspace:<name>
tf get "$(Agent.BuildDirectory)\tfvc"

Et ajoutez une "tâche toujours exécutée" pour nettoyer l'espace de travail par la suite:

tf workspace /delete <name>
rd /s /q "$(Agent.BuildDirectory)\tfvc"

Télécharger l'artefact

Une autre option consiste à utiliser la tâche Télécharger un artefact pour télécharger les artefacts à partir de l'extension suivante: TFS Artifacts for Release Management .

Ou la tâche de téléchargement d'artefact fournie avec VSTS, bien que celle-ci nécessite un lien vers une définition de build à télécharger, ce qui signifie que vous pouvez avoir un CI sur Git ou TFVC qui construit les sources, ou attache simplement le répertoire des sources, puis récupérer ceux de la "autre" version.

5
jessehouwing

Voulez-vous réellement construire les deux dépôts simultanément et mélanger les artefacts de construction? Ou voulez-vous simplement utiliser la même définition pour cibler différentes sources?

Si vous voulez vraiment le premier, vous pouvez créer un script pour récupérer les sources pendant la construction, comme l'ont indiqué les autres réponses. Cependant, si la construction de Git sur hébergé et de TFVC sur privé est une exigence difficile, la construction simultanée des deux ensembles de sources échouera.

Je recommanderais de créer un Task Group avec les tâches que vous avez en commun. Créez ensuite des définitions de build distinctes qui référencent le groupe de tâches.

3
Brian Cristante