View a markdown version of this page

Configuration d'une nouvelle tentative d'étape pour une étape ayant échoué ou des actions ayant échoué - AWS CodePipeline

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Configuration d'une nouvelle tentative d'étape pour une étape ayant échoué ou des actions ayant échoué

Vous pouvez réessayer une étape qui a échoué sans avoir à réexécuter un pipeline depuis le début. Pour ce faire, vous pouvez essayer de nouveau les actions qui ont échoué dans une étape ou en réessayant toutes les actions de l'étape en commençant par la première action de la phase. Lorsque vous réessayez les actions qui ont échoué au cours d'une étape, toutes les actions encore en cours continuent de fonctionner et les actions qui ont échoué sont à nouveau déclenchées. Lorsque vous réessayez une étape qui a échoué à partir de la première action de la phase, aucune action ne peut être en cours pour cette étape. Avant qu'une étape puisse être réessayée, toutes les actions doivent avoir échoué ou certaines actions ont échoué et d'autres ont réussi.

Important

Réessayer une étape ayant échoué recommence toutes les actions de la phase depuis la première action de la phase, et réessayer les actions qui ont échoué permet de réessayer toutes les actions qui ont échoué de la phase. Cela remplace les artefacts de sortie des actions précédemment réussies lors de la même exécution.

Bien que les artefacts puissent être remplacés, l'historique des exécutions des actions précédemment réussies est toujours conservé.

Si vous utilisez la console pour visualiser un pipeline, un bouton de phase Réessayer ou un bouton Réessayer les actions ayant échoué apparaît sur l'étape qui peut être réessayée.

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

Note

Dans les cas suivants, il se peut que vous ne puissiez pas réessayer une étape :

  • Toutes les actions de l'étape ont réussi et la phase n'est donc pas en état d'échec.

  • La structure globale du pipeline a changé après la défaillance de l'étape.

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

Considérations relatives à une nouvelle tentative

Les considérations relatives à une nouvelle tentative d'étape sont les suivantes :

  • Vous ne pouvez configurer une nouvelle tentative automatique en cas d'échec de l'étape que pour une seule nouvelle tentative.

  • Vous pouvez configurer une nouvelle tentative automatique en cas d'échec de l'étape pour toutes les actions, y compris les Source actions.

Réessayer manuellement une étape ayant échoué

Vous pouvez réessayer manuellement une étape ayant échoué à l'aide de la console ou de l'interface de ligne de commande.

Vous pouvez également configurer une étape pour une nouvelle tentative automatique en cas d'échec, comme indiqué dansConfigurer une étape pour une nouvelle tentative automatique en cas d'échec.

Réessayer manuellement une étape ayant échoué (console)

Pour réessayer une étape ayant échoué ou des actions ayant échoué dans une étape, console
  1. Connectez-vous à Console de gestion AWS et ouvrez la CodePipeline console à l'adresse http://console.aws.amazon.com/codesuite/codepipeline/home.

    Les noms de tous les pipelines associés à votre AWS compte sont affichés.

  2. Dans Name, choisissez le nom du pipeline.

  3. Localisez l'étape sur laquelle l'action a échoué, puis choisissez l'une des options suivantes :

    • Pour réessayer toutes les actions de la phase, choisissez Réessayer la phase.

    • Pour ne réessayer que les actions ayant échoué au cours de l'étape, choisissez Réessayer les actions ayant échoué.

    Exemple de pipeline avec une étape CodeCommit source et une étape de CodeDeploy déploiement ayant échoué

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

Réessayer manuellement une étape ayant échoué (CLI)

Pour réessayer une étape ayant échoué ou des actions ayant échoué dans une étape - CLI

Pour AWS CLI réessayer toutes les actions ou toutes les actions ayant échoué, exécutez la retry-stage-execution commande avec les paramètres suivants :

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

Les valeurs que vous pouvez utiliser pour retry-mode sont FAILED_ACTIONS etALL_ACTIONS.

  1. Sur un terminal (Linux, macOS ou Unix) ou une invite de commande (Windows), exécutez la retry-stage-execution commande, comme indiqué 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" }
  2. 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. Sur un terminal (Linux, macOS ou Unix) ou une invite de commande (Windows), exécutez la get-pipeline-state commande sur un pipeline. Par exemple, pour un pipeline nommé MyFirstPipeline, vous devez taper quelque chose de similaire à 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.

      Dans l' MyFirstPipeline exemple précédent, votre fichier ressemblerait à ceci :

      { "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:// devant 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 afficher les résultats de la nouvelle tentative, ouvrez la CodePipeline console et choisissez le pipeline contenant les actions qui ont échoué, ou utilisez à nouveau la get-pipeline-state commande. Pour de plus amples informations, veuillez consulter Afficher les pipelines et les détails dans CodePipeline.

Configurer une étape pour une nouvelle tentative automatique en cas d'échec

Vous pouvez configurer une étape pour une nouvelle tentative automatique en cas d'échec. L'étape effectuera une nouvelle tentative et affichera l'état de la nouvelle tentative pour l'étape ayant échoué sur la page Afficher le pipeline.

Vous pouvez configurer le mode de nouvelle tentative en spécifiant que l'étape doit automatiquement réessayer soit toutes les actions de la phase ayant échoué, soit uniquement les actions ayant échoué de la phase.

Configurer une étape pour une nouvelle tentative automatique en cas d'échec (console)

Vous pouvez utiliser la console pour configurer une étape pour une nouvelle tentative automatique.

Configurer une étape pour une nouvelle tentative automatique (console)
  1. Connectez-vous à Console de gestion AWS et ouvrez la CodePipeline console à l'adresse http://console.aws.amazon.com/codesuite/codepipeline/home.

    Les noms et l'état de tous les pipelines associés à votre AWS compte sont affichés.

  2. Dans Name, choisissez le nom du pipeline que vous souhaitez modifier.

  3. Sur la page des détails du pipeline, choisissez Edit.

  4. Sur la page Modifier, pour l'action que vous souhaitez modifier, choisissez Modifier l'étape.

  5. Choisissez Configuration automatique de l'étape :, puis choisissez Activer la nouvelle tentative automatique en cas d'échec de la phase. Enregistrez les modifications apportées à votre pipeline.

  6. Dans Configuration automatique de l'étape :, choisissez l'un des modes de nouvelle tentative suivants :

    • Pour spécifier que le mode réessaiera toutes les actions de la phase, choisissez Retry failed stage.

    • Pour spécifier que le mode ne réessaiera que les actions ayant échoué au cours de l'étape, choisissez Réessayer les actions ayant échoué.

    Enregistrez les modifications apportées à votre pipeline.

    Un exemple d'écran d'édition pour configurer une nouvelle tentative automatique en cas d'échec de l'étape dans CodePipeline.
  7. Une fois votre pipeline exécuté, si l'étape échoue, une nouvelle tentative automatique sera effectuée. Les exemples suivants montrent une étape de construction qui a été réessayée automatiquement.

    Exemple de pipeline dont l'étape a échoué et qui a été réessayée une fois.
  8. Pour afficher les détails de la nouvelle tentative, choisissez. La fenêtre s'affiche.

    Exemple de fenêtre de métadonnées de la phase de nouvelle tentative montrant qu'il y a eu une tentative.

Configurer une étape pour une nouvelle tentative automatique (CLI)

Pour configurer une étape AWS CLI afin de réessayer automatiquement en cas d'échec, utilisez les commandes pour créer ou mettre à jour un pipeline comme indiqué dans Créez un pipeline, des étapes et des actions etModifier un pipeline dans CodePipeline.

  • Ouvrez un terminal (Linux, macOS ou Unix) ou une invite de commande (Windows) et exécutez la AWS CLI update-pipeline commande en spécifiant la condition de défaillance dans la structure du pipeline. L'exemple suivant configure une nouvelle tentative automatique pour une étape nommée : S3Deploy

    { "name": "S3Deploy", "actions": [ { "name": "s3deployaction", "actionTypeId": { "category": "Deploy", "owner": "AWS", "provider": "S3", "version": "1" }, "runOrder": 1, "configuration": { "BucketName": "static-website-bucket", "Extract": "false", "ObjectKey": "SampleApp.zip" }, "outputArtifacts": [], "inputArtifacts": [ { "name": "SourceArtifact" } ], "region": "us-east-1" } ], "onFailure": { "result": "RETRY", "retryConfiguration": { "retryMode": "ALL_ACTIONS", }, }

Configurez une étape pour une nouvelle tentative automatique (CloudFormation)

Pour configurer une étape pour une nouvelle tentative automatique en cas d'échec, utilisez le paramètre de cycle de vie de la OnFailure phase. CloudFormation Utilisez le RetryConfiguration paramètre pour configurer le mode de nouvelle tentative.

OnFailure: Result: RETRY RetryConfiguration: RetryMode: ALL_ACTIONS
  • Mettez à jour le modèle comme indiqué dans l'extrait suivant. L'exemple suivant configure une nouvelle tentative automatique pour une étape nommée : Release

    AppPipeline: Type: AWS::CodePipeline::Pipeline Properties: RoleArn: Ref: CodePipelineServiceRole Stages: - Name: Source Actions: - Name: SourceAction ActionTypeId: Category: Source Owner: AWS Version: 1 Provider: S3 OutputArtifacts: - Name: SourceOutput Configuration: S3Bucket: Ref: SourceS3Bucket S3ObjectKey: Ref: SourceS3ObjectKey RunOrder: 1 - Name: Release Actions: - Name: ReleaseAction InputArtifacts: - Name: SourceOutput ActionTypeId: Category: Deploy Owner: AWS Version: 1 Provider: CodeDeploy Configuration: ApplicationName: Ref: ApplicationName DeploymentGroupName: Ref: DeploymentGroupName RunOrder: 1 OnFailure: Result: RETRY RetryConfiguration: RetryMode: ALL_ACTIONS ArtifactStore: Type: S3 Location: Ref: ArtifactStoreS3Location EncryptionKey: Id: arn:aws:kms:useast-1:ACCOUNT-ID:key/KEY-ID Type: KMS DisableInboundStageTransitions: - StageName: Release Reason: "Disabling the transition until integration tests are completed" Tags: - Key: Project Value: ProjectA - Key: IsContainerBased Value: 'true'

    Pour plus d'informations sur la configuration de la nouvelle tentative d'étape en cas d'échec, consultez OnFailure le Guide StageDeclaration de l'CloudFormation utilisateur ci-dessous.