J'ai un pipeline (Dites A). J'y ai écrit un script PowerShell qui m'aide à mettre à jour un package particulier dans la solution. Après avoir fusionné le code modifié avec la branche principale à l'aide de ce script PowerShell, il déclenche automatiquement un autre pipeline (par exemple B) dont le déclenchement dépend des modifications apportées à master. Je dois contrôler le déclenchement de ce pipeline B à partir du pipeline A - comme obtenir l'état du pipeline déclenché B, désactiver le déclencheur du pipeline B à partir de A, etc. Veuillez m'aider avec ce scénario.
3 Réponses :
Je dois contrôler le déclenchement de ce pipeline B à partir du pipeline A - comme obtenir l'état du pipeline déclenché B, désactiver le déclencheur du pipeline B à partir de A, etc.
scip ci
dans votre message de validation: Ignorer les CI pour les commits individuels Merci. J'accepte la solution de @Levi car elle est plus élaborée.
Vous pouvez utiliser la variable de sortie dans la tâche PowerShell. Et sur cette base, vous pouvez contrôler le prochain travail à exécuter. De cette façon, vous n'avez pas à utiliser plusieurs pipelines de construction à la place de plusieurs tâches dans un seul pipeline.
Vous pouvez consulter le document Microsoft ici
Vous pouvez utiliser une tâche PowerShell pour appeler build rest api pour obtenir le statut d'un autre pipeline (par exemple. Pipeline B).
D'abord pour obtenir la dernière version du Pipeline B, vous pouvez utiliser ci-dessous rest api.
OBTENEZ https://dev.azure.com/{organization}/{project}/_apis/build/builds?definitions={definitions}&$top={$top} & api-version = 5.1
Voici l'exemple de script en ligne dans la tâche PowerShell pour obtenir l'état de la construction.
$build = $result.value[0] $uriupdate = "$(System.TeamFoundationCollectionUri)$(System.TeamProject)/_apis/build/builds/$($build.id)?api-version=5.1" $build.status = "cancelling" $body = $build | ConvertTo-Json -Depth 10 $update = Invoke-RestMethod -Uri $uriupdate -Headers @{Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"} -ContentType "application/json" -Method patch -Body $body
$ env: SYSTEM_ACCESSTOKEN
est le variable prédéfinie avec laquelle vous pouvez faire référence au jeton d'accès directement dans les scripts.
Pour annuler le pipeline B dans le pipeline A, vous pouvez appeler update Build rest api . Voir l'exemple ci-dessous. Commencez par récupérer la compilation à partir de l'API ci-dessus, puis mettez à jour le status
en annulation
$uri = "$(System.TeamFoundationCollectionUri)$(System.TeamProject)/_apis/build/builds?definitions={definitionId}&`$top=1&api-version=5.1" Â $result =Invoke-WebRequest -Uri $uri -Method Get -ContentType "application/json" -Headers $headers = @{ Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"} $status = $result.value[0].status
Pour ignorer une compilation en poussant le changements, vous pouvez simplement inclure [skip ci]
dans le message de commit comme Shamrai l'a mentionné.
git commit -m message [skip ci]
p>
comment déclenchez-vous B?
@ShaykiAbramczyk: B dépend des changements de branche maître