Nouvelle tentative d'une action qui a échoué dans CodePipeline - AWS CodePipeline

Nouvelle tentative d'une action qui a échoué dans CodePipeline

Dans AWS CodePipeline, une action est une tâche réalisée sur un artefact dans une étape. Un échec est une action d'une étape qui n'a pas abouti. Vous pouvez utiliser l'interface de ligne de commande pour relancer manuellement l'action ayant échoué avant la fin de l'étape (pendant que d'autres actions sont toujours en cours). Si une étape se termine avec une ou plusieurs actions en échec, l'étape échoue et l'exécution du pipeline ne passe pas à l'étape suivante du pipeline.

Vous pouvez retenter les dernières actions ayant échoué dans une étape sans avoir besoin d'exécuter à nouveau un pipeline dès le début. Pour ce faire, retentez l'étape contenant ces actions. Vous pouvez retenter une étape immédiatement après l'échec de l'une des actions. Toutes les actions qui sont encore en cours poursuivent leur exécution et les actions qui ont échoué sont déclenchées à nouveau.

Si vous utilisez la console pour afficher un pipeline, un bouton Réessayer apparaît sur l'étape dont les actions ayant échoué peuvent être retentées.


            Une étape qui contient une ou plusieurs actions ayant échoué affiche un bouton Réessayer

Si vous utilisez l'interface de ligne de commande AWS, vous pouvez utiliser la commande get-pipeline-state pour savoir si des actions ont échoué.

Note

Dans les cas suivants, vous ne pouvez pas retenter les actions :

  • La structure globale du pipeline a été modifiée après l'échec d'une action.

  • Une autre tentative est déjà en cours dans l'étape.

Nouvelle tentative d'actions ayant échoué (console)

  1. Connectez-vous à la AWS Management Console et ouvrez la console CodePipeline à l'adresse http://console.aws.amazon.com/codesuite/codepipeline/home.

    Les noms de tous les pipelines associés à votre compte AWS s'affichent.

  2. Dans Name, choisissez le nom du pipeline.

  3. Recherchez l'étape contenant l'action ayant échoué, puis choisissez Retry.

    Note

    Pour identifier les actions de l'étape qui peuvent être retentées, passez votre souris sur le bouton Retry.

    Si toutes les actions retentées dans l'étape aboutissent avec succès, le pipeline continue de s'exécuter.

Nouvelle tentative d'actions ayant échoué (interface de ligne de commande)

Option 1 : Réessayer les actions ayant échoué à l'aide des paramètres de la commande de l'interface de ligne de commande

Pour utiliser l'AWS CLI afin de relancer les actions ayant échoué, exécutez la commande retry-stage-execution avec les paramètres suivants :

--pipeline-name <value> --stage-name <value> --pipeline-execution-id <value> --retry-mode <value>
Note

La seule valeur que vous pouvez utiliser pour retry-mode est FAILED_ACTIONS.

  • Dans un terminal (Linux, macOS, or Unix) ou une invite de commande (Windows), exécutez la commande retry-stage-execution, comme illustré dans l'exemple suivant pour un pipeline nommé MyPipeline.

    aws codepipeline retry-stage-execution --pipeline-name MyPipeline --stage-name Deploy --pipeline-execution-id b59babff-5f34-EXAMPLE --retry-mode FAILED_ACTIONS

    La sortie renvoie l'ID d'exécution :

    { "pipelineExecutionId": "b59babff-5f34-EXAMPLE" }

Option 2 : Réessayer les actions ayant échoué à l'aide d'un fichier d'entrée JSON pour la commande de l'interface de ligne de commande

Vous pouvez également exécuter la commande avec un fichier d'entrée JSON. Vous devez d'abord créer un fichier JSON identifiant le pipeline, l'étape contenant les actions ayant échoué et la dernière exécution du pipeline dans cette étape. Exécutez la commande retry-stage-execution avec le paramètre --cli-input-json. Pour récupérer les informations dont vous avez besoin pour le fichier JSON, le plus simple est d'utiliser la commande get-pipeline-state.

  1. Depuis un terminal (Linux, macOS, or Unix) ou une invite de commande (Windows), exécutez la commande get-pipeline-state sur un pipeline. Par exemple, pour un pipeline nommé MyFirstPipeline, vous devez saisir quelque chose de semblable à ce qui suit :

    aws codepipeline get-pipeline-state --name MyFirstPipeline

    La réponse à la commande inclut des informations sur l'état du pipeline pour chaque étape. Dans l'exemple suivant, la réponse indique qu'une ou plusieurs actions a/ont échoué lors de l'étape Intermédiaire :

    { "updated": 1427245911.525, "created": 1427245911.525, "pipelineVersion": 1, "pipelineName": "MyFirstPipeline", "stageStates": [ { "actionStates": [...], "stageName": "Source", "latestExecution": { "pipelineExecutionId": "9811f7cb-7cf7-SUCCESS", "status": "Succeeded" } }, { "actionStates": [...], "stageName": "Staging", "latestExecution": { "pipelineExecutionId": "3137f7cb-7cf7-EXAMPLE", "status": "Failed" } } ] }
  2. Dans un éditeur de texte brut, créez un fichier où vous enregistrerez ce qui suit, au format JSON :

    • Le nom du pipeline qui contient les actions ayant échoué

    • Le nom de l'étape qui contient les actions ayant échoué

    • L'identifiant de la dernière exécution du pipeline dans l'étape

    • Le mode de nouvelle tentative. (Actuellement, la seule valeur prise en charge est FAILED_ACTIONS)

    Pour l'exemple MyFirstPipeline précédent, votre fichier ressemblera à ce qui suit :

    { "pipelineName": "MyFirstPipeline", "stageName": "Staging", "pipelineExecutionId": "3137f7cb-7cf7-EXAMPLE", "retryMode": "FAILED_ACTIONS" }
  3. Enregistrez le fichier avec un nom tel que retry-failed-actions.json.

  4. Utilisez le fichier que vous avez créé lorsque vous avez exécuté la commande retry-stage-execution. Par exemple :

    Important

    N'oubliez pas d'inclure file:// avant le nom du fichier. Il est nécessaire dans cette commande.

    aws codepipeline retry-stage-execution --cli-input-json file://retry-failed-actions.json
  5. Pour voir les résultats d'une nouvelle tentative, ouvrez la console CodePipeline et choisissez le pipeline qui contient les actions ayant échoué, ou utilisez à nouveau la commande get-pipeline-state. Pour plus d'informations, consultez la section Affichage des détails et de l'historique d'un pipeline dans CodePipeline.