0
votes

Gérer un pipeline CI / CD à partir d'un autre pipeline - Azure Devops

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.


2 commentaires

comment déclenchez-vous B?


@ShaykiAbramczyk: B dépend des changements de branche maître


3 Réponses :


1
votes

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.

  1. Vous pouvez utiliser l'API REST avec PowerShell pour contrôler vos builds: Builds - Liste .
  2. Pour désactiver le déclencheur, ajoutez scip ci dans votre message de validation: Ignorer les CI pour les commits individuels

1 commentaires

Merci. J'accepte la solution de @Levi car elle est plus élaborée.



1
votes

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


0 commentaires

1
votes

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>


0 commentaires