2017-09-13 9 views
2

Est-il possible qu'une définition de génération VSTS interroge les messages de validation git et se déclenche uniquement si l'un des messages de validation contient du texte prédéfini?Génération de déclencheur si les messages de validation contiennent du texte

Alternativement, est-il possible d'avoir une tâche dans la définition de construction qui arrêtera la construction si le texte prédéfini n'existe pas dans un message de validation?

+0

Résolvez-vous le problème avec la solution de jessehouwing? –

+0

Oui, je viens de le marquer comme la réponse – Slicc

Répondre

1

C'est une question en deux parties:

  1. Non, il n'y a pas de filtre lors de la validation des messages.
  2. Oui, cela est plus facile à faire, bien qu'il ne soit pas garanti qu'une génération se déclenche à chaque validation, car plusieurs validations peuvent être générées dans des groupes. Et le lotage côté serveur peut être validé par lots lorsqu'une génération est en cours.

Vous pouvez insérer un petit script qui exécute git log -1 --pretty=%B et inspecte la sortie; puis utilise le format de journalisation spécial pour échouer la construction. Par exemple, dans PowerShell cela enregistre une erreur et l'échec de la construction:

Write-Host "##vso[task.logissue type=error;]Build token missing, aborting." 
Write-Host "##vso[task.complete result=Failed;]Cancelled" 

Pour plus de détails sur les commandes spéciales, voir: https://github.com/Microsoft/vsts-tasks/blob/master/docs/authoring/commands.md

La commande git ne fonctionne que dans le pipeline de construction, l'information est n'est pas disponible dans le pipeline de mise à jour, sauf si vous clonez le repo pendant la publication.

Vous pouvez définir la version de construction pour inclure une sorte de suffixe dans le cadre de la génération, puis utiliser cette information dans le pipeline de version. Les mêmes commandes magiques comprennent un pour définir la Build.BuildNumber:

Write-Host "##vso[build.updatebuildnumber]1.1.7-Release" 

Ensuite, dans votre pipeline de sortie, vérifiez le numéro de version.

Ou utilisez la tâche Trigger a Release dans votre définition de construction et conditionnez son exécution en fonction de la sortie de la PowerShell que vous avez déjà créée.