View a markdown version of this page

Configurazione del nuovo tentativo di fase per una fase fallita o per azioni non riuscite - AWS CodePipeline

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Configurazione del nuovo tentativo di fase per una fase fallita o per azioni non riuscite

È possibile riprovare una fase non riuscita senza dover eseguire nuovamente una pipeline dall'inizio. Puoi farlo riprovando le azioni fallite in una fase o riprovando tutte le azioni nella fase a partire dalla prima azione della fase. Quando si riprovano le azioni non riuscite in una fase, tutte le azioni ancora in corso continuano a funzionare e le azioni fallite vengono nuovamente attivate. Quando si riprova una fase fallita partendo dalla prima azione della fase, nella fase non è possibile eseguire alcuna azione. Prima che una fase possa essere ritentata, è necessario che tutte le azioni siano fallite oppure che alcune azioni non siano riuscite e altre siano riuscite.

Importante

Riprovare una fase fallita riprova tutte le azioni nella fase partendo dalla prima azione della fase, mentre riprovare con le azioni fallite riprova tutte le azioni non riuscite nella fase. Ciò sovrascrive gli artefatti di output delle azioni precedentemente riuscite nella stessa esecuzione.

Sebbene gli artefatti possano essere sovrascritti, la cronologia delle esecuzioni delle azioni precedentemente riuscite viene comunque conservata.

Se si utilizza la console per visualizzare una pipeline, sullo stage viene visualizzato il pulsante Riprova fase o Riprova azioni non riuscite che è possibile ritentare.

Se si utilizza la AWS CLI, è possibile utilizzare il get-pipeline-state comando per determinare se alcune azioni sono fallite.

Nota

Nei seguenti casi, potresti non essere in grado di riprovare una fase:

  • Tutte le azioni della fase sono state eseguite correttamente, pertanto lo stato della fase non è fallito.

  • La struttura generale della pipeline è cambiata dopo il fallimento della fase.

  • È già in corso un altro tentativo di ripetizione nella fase.

Considerazioni sul nuovo tentativo

Le considerazioni relative alla ripetizione della fase sono le seguenti:

  • È possibile configurare il nuovo tentativo automatico in caso di fallimento dello stage solo per un tentativo di nuovo tentativo.

  • È possibile configurare il ritentativo automatico in caso di errore sullo stage per tutte le azioni, incluse le azioni. Source

Riprova manualmente una fase fallita

È possibile riprovare manualmente una fase non riuscita utilizzando la console o la CLI.

È inoltre possibile configurare una fase per riprovare automaticamente in caso di errore, come descritto in. Configura una fase per il ritentativo automatico in caso di errore

Riprova manualmente una fase fallita (console)

Per riprovare una fase fallita o eseguire azioni non riuscite in una fase: console
  1. Accedi a Console di gestione AWS e apri la CodePipeline console all'indirizzo http://console.aws.amazon.com/codesuite/codepipeline/home.

    Vengono visualizzati i nomi di tutte le pipeline associate al tuo AWS account.

  2. In Name (Nome), scegli il nome della pipeline.

  3. Individua la fase con l'azione non riuscita, quindi scegli una delle seguenti opzioni:

    • Per riprovare tutte le azioni nella fase, scegli Riprova fase.

    • Per riprovare solo le azioni fallite nella fase, scegli Riprova azioni non riuscite.

    Una pipeline di esempio con una fase di CodeCommit origine e una fase di distribuzione non riuscita CodeDeploy

    Se tutte le operazioni ripetute nella fase vengono completate, l'esecuzione della pipeline continua.

Riprova manualmente una fase fallita (CLI)

Per riprovare una fase fallita o eseguire azioni non riuscite in una fase: CLI

Per utilizzare il comando AWS CLI per riprovare tutte le azioni o tutte le azioni non riuscite, si esegue il retry-stage-execution comando con i seguenti parametri:

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

I valori che è possibile utilizzare retry-mode sono FAILED_ACTIONS eALL_ACTIONS.

  1. In un terminale (Linux, macOS o Unix) o nel prompt dei comandi (Windows), esegui il retry-stage-execution comando, come mostrato nell'esempio seguente per una pipeline denominata. MyPipeline

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

    L'output restituisce l'ID di esecuzione:

    { "pipelineExecutionId": "b59babff-5f34-EXAMPLE" }
  2. Puoi anche eseguire il comando con un file di input JSON. Crea innanzitutto un file JSON che identifichi la pipeline, la fase contenente le operazioni non riuscite e l'esecuzione della pipeline più recente in tale fase. Quindi, esegui il comando retry-stage-execution con il parametro --cli-input-json. Per recuperare i dettagli necessari per il file JSON, è più semplice utilizzare il comando get-pipeline-state.

    1. In un terminale (Linux, macOS o Unix) o nel prompt dei comandi (Windows), esegui il get-pipeline-state comando su una pipeline. Ad esempio, per una pipeline denominata MyFirstPipeline, digitate qualcosa di simile al seguente:

      aws codepipeline get-pipeline-state --name MyFirstPipeline

      La risposta al comando include le informazioni sullo stato della pipeline per ogni fase. Nel seguente esempio, la risposta indica che una o più operazioni non sono riuscite nella fase Gestione temporanea:

      { "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. In un editor di testo normale, creare un file in formato JSON in cui verranno registrate le informazioni riportate di seguito:

      • Il nome della pipeline contenente le operazioni non riuscite.

      • Il nome della fase contenente le operazioni non riuscite.

      • L'ID dell'ultima esecuzione della pipeline nella fase

      • La modalità di ripetizione.

      MyFirstPipeline Nell'esempio precedente, il file avrebbe un aspetto simile al seguente:

      { "pipelineName": "MyFirstPipeline", "stageName": "Staging", "pipelineExecutionId": "3137f7cb-7cf7-EXAMPLE", "retryMode": "FAILED_ACTIONS" }
    3. Salvare il file con un nome come retry-failed-actions.json.

    4. Chiama il file creato quando esegui il comando retry-stage-execution. Ad esempio:

      Importante

      Assicurarsi di includere file:// prima del nome del file. Questo è obbligatorio in questo comando.

      aws codepipeline retry-stage-execution --cli-input-json file://retry-failed-actions.json
    5. Per visualizzare i risultati del tentativo di nuovo tentativo, aprite la CodePipeline console e scegliete la pipeline che contiene le azioni non riuscite oppure utilizzate nuovamente il get-pipeline-state comando. Per ulteriori informazioni, consulta Visualizza le pipeline e i dettagli in CodePipeline.

Configura una fase per il ritentativo automatico in caso di errore

È possibile configurare una fase per il ritentativo automatico in caso di errore. La fase effettuerà un tentativo di nuovo tentativo e visualizzerà lo stato del nuovo tentativo nella fase non riuscita nella pagina Visualizza pipeline.

È possibile configurare la modalità di riprova specificando che lo stage deve riprovare automaticamente tutte le azioni nella fase non riuscita o solo le azioni non riuscite nella fase.

Configurare una fase per il ritentativo automatico in caso di errore (console)

È possibile utilizzare la console per configurare una fase per il ritentativo automatico.

Configurare una fase per il ritentativo automatico (console)
  1. Accedi Console di gestione AWS e apri la CodePipeline console all'indirizzo http://console.aws.amazon.com/codesuite/codepipeline/home.

    Vengono visualizzati i nomi e lo stato di tutte le pipeline associate al tuo AWS account.

  2. In Name (Nome), scegliere il nome della pipeline da modificare.

  3. Nella pagina dei dettagli della pipeline, scegliere Edit (Modifica).

  4. Nella pagina Modifica, per l'azione che desideri modificare, scegli Modifica fase.

  5. Scegli Configurazione automatica della fase:, quindi scegli Abilita riprova automatica in caso di errore della fase. Salva le modifiche alla pipeline.

  6. In Configurazione automatica della fase:, scegli una delle seguenti modalità di riprova:

    • Per specificare che la modalità riproverà tutte le azioni della fase, scegli Riprova fase non riuscita.

    • Per specificare che la modalità riproverà solo le azioni non riuscite nella fase, scegli Riprova azioni non riuscite.

    Salva le modifiche alla pipeline.

    Un esempio di schermata di modifica per configurare il ritentativo automatico in caso di fallimento dello stage. CodePipeline
  7. Dopo l'esecuzione della pipeline, se si verifica un errore nella fase, verrà effettuato il tentativo di nuovo tentativo automatico. Gli esempi seguenti mostrano una fase di compilazione che è stata ritentata automaticamente.

    Una pipeline di esempio con una fase fallita che è stata ritentata una volta.
  8. Per visualizzare i dettagli sul tentativo di nuovo tentativo, scegli. Viene visualizzata la finestra.

    Un esempio della finestra dei metadati della fase di riprova che mostra che c'è stato un tentativo.

Configura una fase per il ritentativo automatico (CLI)

AWS CLI Per configurare una fase in modo da riprovare automaticamente in caso di errore, utilizzate i comandi per creare o aggiornare una pipeline come descritto in e. Crea una pipeline, fasi e azioni Modifica una tubazione in CodePipeline

  • Aprite un terminale (Linux, macOS o Unix) o il prompt dei comandi (Windows) e usate il comando AWS CLI per eseguire il update-pipeline comando, specificando la condizione di errore nella struttura della pipeline. L'esempio seguente configura il ritentativo automatico per una fase denominata: 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", }, }

Configurare una fase per il ritentativo automatico (CloudFormation)

Da utilizzare CloudFormation per configurare una fase per il ritentativo automatico in caso di errore, utilizzare il parametro del ciclo di vita della OnFailure fase. Utilizzate il RetryConfiguration parametro per configurare la modalità di riprova.

OnFailure: Result: RETRY RetryConfiguration: RetryMode: ALL_ACTIONS
  • Aggiorna il modello come mostrato nel seguente frammento. L'esempio seguente configura il ritentativo automatico per una fase denominata: 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'

    Per ulteriori informazioni sulla configurazione della fase di riprova in caso di errore, vedere di seguito StageDeclaration nella Guida per OnFailure l'utente. CloudFormation