Comment résoudre le problème d'AWS CodePipeline lorsqu'il s'exécute deux fois ?

Dernière mise à jour : 12/06/2020

Mon service AWS CodePipeline s'exécute deux fois. Comment puis-je résoudre ce problème ?

Brève description

Commencez par lire la section Comprendre le comportement par défaut du paramètre PollForSourceChanges.

Ensuite, en fonction de la situation, effectuez les étapes indiquées dans l'une des sections suivantes :

  • Si vous avez créé votre pipeline avec AWS CloudFormation, suivez les étapes de la section Mettre à jour votre modèle AWS CloudFormation.
  • Si vous avez créé votre pipeline avec l'interface de ligne de commande AWS (AWS CLI), suivez les étapes de la section Mettre à jour votre pipeline avec un fichier JSON.
  • Si vous avez créé votre pipeline avec le kit SDK AWS, suivez les étapes de la section Mettre à jour votre pipeline en fonction de la syntaxe de configuration de votre langage.

Si votre pipeline s'exécute encore deux fois après avoir terminé les étapes décrites dans les sections précédentes, suivez les étapes de la section Vérifier vos règles Amazon CloudWatch Events.

Important : Mettez à jour votre pipeline à l'aide de la même méthode que celle que vous avez utilisée pour le créer. Évitez d'apporter des modifications hors bande à votre pipeline et veillez à suivre les étapes de la section qui s'applique à votre scénario uniquement. Par exemple, si vous avez créé votre pipeline avec AWS CloudFormation, suivez strictement et uniquement la section Mettre à jour votre modèle AWS CloudFormation.

Résolution

Comprendre le comportement par défaut du paramètre PollForSourceChanges

Tenez compte des éléments suivants :

  • Le comportement par défaut du paramètre PollForSourceChanges est déterminé par la méthode utilisée pour créer le pipeline.
  • Dans de nombreux cas, la valeur de PollForSourceChanges est définie sur true par défaut et doit être désactivée.
  • Si vous créez votre pipeline avec la console CodePipeline, alors la méthode de détection de source est automatiquement définie sur Amazon CloudWatch Events (le moyen recommandé de détecter les modifications apportées à votre source).
  • Si vous créez votre pipeline avec AWS CloudFormation, l'interface de ligne de commande AWS ou le kit SDK AWS et que vous ne spécifiez pas la méthode de détection des modifications, alors PollForSourceChanges est défini sur true par défaut (selon la méthode de création).
  • Si vous créez votre pipeline à l'aide d'une méthode autre que la console CodePipeline, puis que vous mettez à jour votre pipeline hors bande en utilisant la console, alors CodePipeline crée automatiquement une règle CloudWatch Events supplémentaire.
  • Si vous créez une règle CloudWatch Events dans votre modèle AWS CloudFormation ou si vous créez un webhook pour votre référentiel GitHub et que vous ne définissez pas le paramètre PollForSourceChanges, vous obtenez alors deux façons de détecter les modifications dans la source. Et votre pipeline s'exécute ainsi deux fois.

Mettre à jour votre modèle AWS CloudFormation

Dans votre modèle AWS CloudFormation ou fichier de configuration de pipeline, définissez le paramètre PollForSourceChanges sur false.

Remarque : Le paramètre PollForSourceChanges est défini sur true par défaut.

Pour plus d'informations, consultez Créer un webhook pour une source GitHub (modèle AWS CloudFormation).

Mettre à jour votre pipeline avec un fichier JSON

1.    Copiez la structure de votre pipeline dans un fichier JSON :

$ aws codepipeline get-pipeline --name NAME_OF_YOUR_PIPELINE  > pipeline.json

2.    Ouvrez le fichier pipeline.json dans un éditeur de texte, puis ajoutez le paramètre PollForSourceChanges à la section de configuration. Définissez le paramètre sur false.

Remarque : pour plus d'informations, consultez Modifier un pipeline (interface de ligne de commande AWS).

3.    Enregistrez le fichier pipeline.json, puis exécutez la commande suivante pour appliquer les modifications au fichier :

$ aws codepipeline update-pipeline --cli-input-json file://pipeline.json

Pour obtenir un exemple, consultez Créer un webhook pour une source GitHub.

Mettre à jour votre pipeline en fonction de la syntaxe de configuration de votre langage

Pour plus d'informations sur la mise à jour de votre pipeline, consultez la documentation du kit SDK correspondant à votre langage.

Par exemple, si vous avez déployé votre pipeline avec Python, vous pouvez définir PollForSourceChanges sur false dans la section de configuration de votre pipeline.

Vérifier vos règles Amazon CloudWatch Events

Vérifiez s'il existe des règles CloudWatch Events ayant la même cible que votre pipeline, puis supprimez ou désactivez les règles en double.


Cet article vous a-t-il été utile ?

Cette page peut-elle être améliorée ?


Vous avez besoin d'aide ?