In questo tutorial imparerai a creare una pipeline di rilascio di software automatizzata che distribuisce un'applicazione di esempio attiva. La pipeline verrà creata utilizzando AWS CodePipeline, un servizio che consente di compilare, testare e distribuire il codice ogni volta che si verifica una modifica di codice. Verrà utilizzato l'account GitHub, un bucket Amazon Simple Storage Service (S3) o un repository AWS CodeCommit come percorso di origine per il codice dell'applicazione di esempio. Verrà inoltre utilizzato AWS Elastic Beanstalk come destinazione di distribuzione dell'applicazione di esempio. La pipeline completata sarà in grado di rilevare le modifiche apportare al repository di origine contenente l'applicazione di esempio e quindi aggiornare automaticamente l'applicazione di esempio attiva.

La distribuzione continua consente di distribuire automaticamente revisioni in un ambiente di produzione senza alcuna approvazione esplicita da parte di uno sviluppatore, automatizzando di fatto l'intero processo di rilascio del software.

Tutte le operazioni mostrate in questo tutorial possono essere eseguite nell'ambito del piano gratuito.

Gestisci le tue risorse AWS

Accedi alla console

La pipeline di distribuzione continua richiede un ambiente di destinazione contenente server virtuali, o istanze Amazon EC2, dove il codice di esempio verrà distribuito. L'ambiente verrà creato prima della pipeline.


a. Per semplificare il processo di impostazione e configurazione di istanze EC2 per questo tutorial, verrà reso operativo un ambiente di esempio utilizzando AWS Elastic Beanstalk. Elastic Beanstalk consente di ospitare applicazioni Web senza che sia necessario avviare, configurare o gestire personalmente server virtuali. Esegue automaticamente il provisioning e la gestione dell'infrastruttura (ad esempio, server virtuali, sistemi di bilanciamento del carico e così via) e fornisce lo stack delle applicazioni (ad esempio, sistema operativo, lingua e framework, server Web e applicazione e così via) per l'utente.


b. Scegli PHP dal menu a discesa, quindi fai clic su Launch Now (Avvia ora).

Nota: se hai creato un'applicazione Elastic Beanstalk in precedenza, fai clic su Create New Application (Crea nuova applicazione) nell'angolo in alto a destra. Assegna un nome all'applicazione e crea un nuovo ambiente server Web. Seleziona PHP come piattaforma e Single Instance (Istanza singola) come tipo di ambiente. Se prevedi di accedere alle istanze in remoto, seleziona una coppia di chiavi. In caso contrario, lascia i valori predefiniti per le opzioni rimanenti e crea l'ambiente per la pipeline di distribuzione continua.

continuous-delivery-pipeline-1

Fai clic per ingrandire l'immagine

continuous-delivery-pipeline-1

c. In Elastic Beanstalk verrà creato innanzitutto un ambiente di esempio in cui distribuire l'applicazione. Verrà creata un'istanza Amazon EC2, un gruppo di sicurezza, un gruppo Auto Scaling, un bucket Amazon S3, allarmi Amazon CloudWatch e un nome di dominio per l'applicazione.

Nota: queste operazioni richiederanno diversi minuti per essere completate.

continuous-delivery-pipeline-1c

Fai clic per ingrandire l'immagine

continuous-delivery-pipeline-1c

In questa fase, verrà recuperata una copia del codice dell'applicazione di esempio e selezionata un'origine per ospitare il codice. La pipeline accetta codice dall'origine ed esegue azioni sulla stessa.

Puoi utilizzare una di tre opzioni come origine: un repository GitHub, un bucket Amazon S3 o un repository AWS CodeCommit. Seleziona la preferenza e segui le fasi sottostanti:

 

  • GitHub

    a. Se desideri utilizzare l'account GitHub:

    continuous-delivery-pipeline-2a

    Fai clic per ingrandire l'immagine

    continuous-delivery-pipeline-2a
  • Amazon S3

    a. Se prevedi di utilizzare Amazon S3 come origine, recupera il codice di esempio dal repository AWS GitHub, salvalo nel computer e caricalo in un bucket Amazon S3.

    continuous-delivery-pipeline-2a1

    Fai clic per ingrandire l'immagine

    continuous-delivery-pipeline-2a1

    b. Salva il file di origine nel computer:

    • Fai clic sul file denominato aws-codepipeline-s3-aws-codedeploy_linux.zip.
    • Fai clic su View Raw (Visualizza dati non elaborati).
    • Salva il file di esempio nel computer locale.
    continuous-delivery-pipeline-2b2

    Fai clic per ingrandire l'immagine

    continuous-delivery-pipeline-2b2

    c. Fai clic qui per aprire la console Amazon S3 e crea il bucket Amazon S3:

    • Fai clic su Create Bucket (Crea bucket).
    • Bucket Name (Nome bucket): digita un nome univoco, ad esempio awscodepipeline-demobucket-variables.  Tutti i nomi bucket in Amazon S3 devono essere univoci, pertanto utilizzane uno tuo, non quello mostrato nell'esempio.
    • Region (Regione): nella casella di riepilogo a discesa, seleziona la regione in cui verrà creata la pipeline, ad esempio US Standard (Stati Uniti standard)
    • Fai clic su Create (Crea).
    continuous-delivery-pipeline-2d

    Fai clic per ingrandire l'immagine

    continuous-delivery-pipeline-2d

    d. Il nuovo bucket creato, vuoto, viene visualizzato nella console.

    • Fai clic su Properties (Proprietà).
    • Espandi Versioning (Funzione Versioni multiple) seleziona Enable Versioning (Abilita funzione Versioni multiple). Quando la funzione Versioni multiple è abilitata, Amazon S3 consente di salvare qualsiasi versione di ogni oggetto nel bucket.
    continuous-delivery-pipeline-2g

    Fai clic per ingrandire l'immagine

    continuous-delivery-pipeline-2g

    e. Il codice di esempio verrà ora caricato nel bucket Amazon S3: 

    • Fai clic su Upload (Carica).
    • Segui le indicazioni sullo schermo per caricare il file .zip contenente il codice di esempio scaricato da GitHub.
    continuous-delivery-pipeline-2f

    Fai clic per ingrandire l'immagine

    continuous-delivery-pipeline-2f
  • AWS CodeCommit

    a. Se prevedi di utilizzare AWS CodeCommit come origine, recupera il codice di esempio dal repository AWS GitHub, salvalo nel computer e caricalo in un repository AWS CodeCommit.

    continuous-delivery-pipeline-2a1

    Fai clic per ingrandire l'immagine

    continuous-delivery-pipeline-2a1

    b. Salva il file di origine nel computer:

    • Seleziona il file denominato aws-codepipeline-s3-aws-codedeploy_linux.zip.
    • Seleziona View Raw (Visualizza dati non elaborati).
    • Salva il file di esempio nel computer locale.
    continuous-delivery-pipeline-2b2

    Fai clic per ingrandire l'immagine

    continuous-delivery-pipeline-2b2

    d. Fai clic qui per aprire la console AWS CodeCommit e seleziona Get Started (Inizia).

    continuous-delivery-pipeline-2b3

    Fai clic per ingrandire l'immagine

    continuous-delivery-pipeline-2b3

    e. Nella pagina Create new Repository (Crea nuovo repository):

    • Repository name (Nome repository): immetti PipelineRepo.
    • Seleziona Create repository (Crea repository).
    continuous-delivery-pipeline-2c3

    Fai clic per ingrandire l'immagine

    continuous-delivery-pipeline-2c3

    f. Collegati al repository e quindi esegui il push di una copia del file di esempio.  Per le istruzioni, consulta la sezione relativa alla connessione a un repository AWS CodeCommit.

In questa fase, verrà creata e configurata una semplice pipeline con due operazioni: origine e distribuzione. CodePipeline verrà fornita con le posizioni del repository di origine e dell'ambiente di distribuzione.


a. Fai clic qui per aprire la console AWS CodePipeline.

  • Nella pagina di benvenuto, fai clic su Create pipeline (Crea pipeline)
  • Se è la prima volta che utilizzi AWS CodePipeline, verrà visualizzata una pagina introduttiva anziché di benvenuto. Fai clic su Get Started (Inizia).
continuous-delivery-pipeline-3

Fai clic per ingrandire l'immagine

continuous-delivery-pipeline-3

b. Nella pagina Step 1 (Fase 1):

  • Pipeline name (Nome pipeline): immetti il nome per la pipeline, DemoPipeline.
  • Fai clic su Next step (Fase successiva).

Nota: non è possibile modificare il nome di una pipeline dopo che è stata creata.

continuous-delivery-pipeline-3b

Fai clic per ingrandire l'immagine

continuous-delivery-pipeline-3b

c. Nella pagina Step 2: Source (Fase 2: origine), seleziona la posizione dell'origine scelta e segui le fasi sottostanti:

  • GitHub

    Provider sorgente: GitHub

    • Nella sezione Connect to GitHub (Connetti a GitHub), fai clic su Connect to GitHub (Connetti a GitHub).
    • Viene visualizza una nuova finestra del browser per la connessione a GitHub. Se viene richiesto di effettuare l'accesso, fornire le credenziali GitHub. 
    • Ti verrà chiesto di autorizzazione l'accesso dell'applicazione al tuo account. Seleziona Authorize application (Autorizza applicazione).
    continuous-delivery-pipeline-3c

    Fai clic per ingrandire l'immagine

    continuous-delivery-pipeline-3c

    Specifica il repository e il ramo:

    • Repository: nell'elenco a discesa, seleziona il repository GitHub che desideri utilizzare come percorso di origine per la pipeline. Fai clic sul repository con fork nell'account GitHub contenente il codice di esempio denominato aws-codepipeline-s3-aws-codedeploy_linux
    • Ramo: nell'elenco a discesa, scegli il ramo che desideri utilizzare, master.
    • Fai clic su Next step (Fase successiva).
    continuous-delivery-pipeline-3e

    Fai clic per ingrandire l'immagine

    continuous-delivery-pipeline-3e
  • Amazon S3

    Provider sorgente: Amazon S3.

    • Posizione Amazon S3: digita il nome del bucket Amazon S3 creato seguito dal file di esempio copiato in tale bucket (aws-codepipeline-s3-aws-codedeploy_linux.zip). Ad esempio, se il bucket è stato denominato awscodepipeline-demobucket-variable, digita: s3://awscodepipeline-demobucket-variable/aws-codepipeline-s3-aws-codedeploy_linux.zip.
    • Fai clic su Next Step (Fase successiva).
    continuous-delivery-pipeline-3c2

    Fai clic per ingrandire l'immagine

    continuous-delivery-pipeline-3c2
  • AWS CodeCommit

    Provider sorgente: AWS CodeCommit.

    • Repository name (Nome repository): scegli il nome del repository AWS CodeCommit. 
    • Branch name (Nome ramo): scegli il nome del ramo che contiene il file di esempio.
    • Fai clic su Next Step (Fase successiva).
    continuous-delivery-pipeline-3c3

    Fai clic per ingrandire l'immagine

    continuous-delivery-pipeline-3c3

d. Una pipeline di distribuzione continua vera richiede una fase di compilazione in cui il codice viene compilato e l'unità testata. CodePipeline consente di connettere il provider di compilazione preferito alla pipeline. Tuttavia, in questo tutorial la fase di compilazione viene ignorata.

  • Nella pagina Step 3: Build (Fase 3: compilare), scegli No Build (Nessuna compilazione).
  • Fai clic su Next Step (Fase successiva).

 

continuous-delivery-pipeline-3f

Fai clic per ingrandire l'immagine

continuous-delivery-pipeline-3f

e. Nella pagina Step 4: Beta (Fase 4: beta):

  • Provider di distribuzione: fai clic su AWS Elastic Beanstalk. 
  • Nome applicazione: fai clic su My First Elastic Beanstalk Application (La mia prima applicazione Elastic Beanstalk). 
  • Nome ambiente: fai clic su Default-Environment (Ambiente predefinito).
  • Fai clic su Next step (Fase successiva).

Nota: il nome "Beta" è semplicemente il nome assegnato per impostazione predefinita a questa fase della pipeline, così come "origine" era il nome assegnato alla prima fase della pipeline.

continuous-delivery-pipeline-3g

Fai clic per ingrandire l'immagine

continuous-delivery-pipeline-3g

f. Nella pagina Step 5: Service Role (Fase 5: ruolo del servizio):

  • Ruolo del servizio: fai clic su Create role (Crea ruolo).
  • Verrai reindirizzato a una pagina della console IAM che descrive il ruolo AWS-CodePipeline-Service che verrà creato automaticamente. Fai clic su Allow (Consenti).
  • Dopo aver creato il ruolo, viene nuovamente visualizzata la pagina Step 5: Service Role (Fase 5: ruolo del servizio) in cui AWS-CodePipeline-Service appare nel nome ruolo. Fai clic su Next step (Fase successiva).

Nota: la creazione del ruolo del servizio è richiesta solo la prima volta che si crea una pipeline in AWS CodePipeline. Se un ruolo del servizio è già stato creato, sarai in grado di sceglierlo dall'elenco a discesa dei ruoli. Poiché l'elenco a discesa visualizzerà tutti i ruoli del servizio IAM associati all'account, se scegli un nome diverso da quello predefinito, accertati che il nome sia riconoscibile come ruolo di servizio AWS CodePipeline.

continuous-delivery-pipeline-3fa

Fai clic per ingrandire l'immagine

continuous-delivery-pipeline-3fa

In questa fase, verrà avviata la pipeline. Dopo che è stata creata, la pipeline viene avviata automaticamente. Innanzitutto, rileva il codice dell'applicazione di esempio nel percorso di origine, impacchetta i file e quindi li sposta in un secondo stadio definito dall'utente. Durante questa fase, passa il codice a Elastic Beanstalk, che contiene l'istanza EC2 che ospiterà il codice. Elastic Beanstalk gestisce la distribuzione del codice nell'istanza EC2.


a. Nella pagina Step 6: Review (Fase 6: rivedere): rivedere le informazioni e fare clic su Create pipeline (Crea pipeline).

continuous-delivery-pipeline-4

Fai clic per ingrandire l'immagine

continuous-delivery-pipeline-4

b. Dopo che la pipeline è stata creata, viene visualizzata la pagina di stato della pipeline e l'esecuzione della pipeline viene avviata automaticamente. Puoi visualizzare lo stato di avanzamento nonché i messaggi di esito positivo e negativo mentre la pipeline esegue ogni operazione.

Per verificare che la pipeline venga eseguita correttamente, monitora l'avanzamento della pipeline attraverso ogni fase. Lo stato di ogni fase cambia da No executions yet (Ancora nessuna esecuzione) a In Progress (In corso) e quindi in Succeeded (Riuscito) o Failed (Non riuscito). L'esecuzione della pipeline richiede qualche minuto.

continuous-delivery-pipeline-4a

Fai clic per ingrandire l'immagine

continuous-delivery-pipeline-4a

c. Nell'area di stato della fase Beta, fai clic su AWS Elastic Beanstalk

continuous-delivery-pipeline-4a2

Fai clic per ingrandire l'immagine

continuous-delivery-pipeline-4a2

d. Viene visualizzata la console di AWS Elastic Beanstalk con i dettagli della distribuzione.

  • Fai clic sull'ambiente creato in precedenza, denominato Default-Environment (Ambiente predefinito)
continuous-delivery-pipeline-4b

Fai clic per ingrandire l'immagine

continuous-delivery-pipeline-4b

e. Fai clic sull'URL che viene visualizzato nella parte superiore destra della pagina per visualizzare il sito Web di esempio distribuito.

continuous-delivery-pipeline-6e

Fai clic per ingrandire l'immagine

continuous-delivery-pipeline-6e

In questa fase, verrà rivisto il codice di esempio ed eseguito il commit della modifica nel repository. CodePipeline rileverà il codice di esempio aggiornato e quindi avvierà automaticamente la sua distribuzione nell'istanza EC2 tramite Elastic Beanstalk. 

Nota che la pagina Web di esempio distribuita fa riferimento ad AWS CodeDeploy, un servizio che automatizza la distribuzione di codice. In CodePipeline, CodeDeploy è un'alternativa all'utilizzo di Elastic Beanstalk per operazioni di distribuzione. Aggiorniamo il codice di esempio in modo che affermi correttamente che l'esempio è stato distribuito utilizzando Elastic Beanstalk.

  • GitHub

    a. Visita la tua copia del repository di cui hai eseguito il fork in GitHub.

    • Apri index.html
    • Seleziona l'icona Edit (Modifica).
    continuous-delivery-pipeline-5b1

    Fai clic per ingrandire l'immagine

    continuous-delivery-pipeline-5b1

    b. Aggiorna la pagina Web copiando e incollando il seguente testo sulla riga 30: 

    Hai creato una pipeline che ha recuperato questa applicazione di origine da GitHub e l'hai distribuita in un'istanza Amazon EC2 utilizzando AWS Elastic Beanstalk. Hai fatto un passo in più verso la distribuzione continua.

    continuous-delivery-pipeline-5c

    Fai clic per ingrandire l'immagine

    continuous-delivery-pipeline-5c

    c. Esegui il commit della modifica al repository.

    continuous-delivery-pipeline-5c1

    Fai clic per ingrandire l'immagine

    continuous-delivery-pipeline-5c1
  • Amazon S3

    a. Sul desktop, visita il file compresso che hai scaricato denominato aws-codepipeline-s3-aws-codedeploy_linux.zip.


    b. Modifica il codice dell'applicazione Web di esempio:

    • Estrai index.html dal file compresso e aprilo utilizzando l'editor di testo preferito. 
    • Aggiorna il testo dell'intestazione che si trova dopo "Complimenti!" in modo da leggere:

    "Hai creato una pipeline che ha recuperato questa applicazione di origine da Amazon S3 e l'hai distribuita in un'istanza Amazon EC2 utilizzando AWS Elastic Beanstalk. Hai fatto un passo in più verso la distribuzione continua."

    • Copia il file index.html aggiornato in aws-codepipeline-s3-aws-codedeploy_linux.zip e sostituisci la versione più vecchia di index.html.
    continuous-delivery-pipeline-6b2

    Fai clic per ingrandire l'immagine

    continuous-delivery-pipeline-6b2

    c. Ricarica il file modificato nel bucket Amazon S3:

    • Torna al bucket S3 creato in precedenza. 
    • Carica il file aws-codepipeline-s3-aws-codedeploy_linux.zip aggiornato nel bucket. 

    Nota: poiché hai abilitato la funzione Versioni multiple la prima volta che hai creato il bucket S3, S3 salverà una copia di ogni versione dei file.

    continuous-delivery-pipeline-6c2

    Fai clic per ingrandire l'immagine

    continuous-delivery-pipeline-6c2
  • AWS CodeCommit

    a. Visita il file compresso contenente il codice di esempio che hai scaricato denominato aws-codepipeline-s3-aws-codedeploy_linux.zip.


    b. Modifica il codice dell'applicazione Web di esempio:
     
    • Estrai index.html dal file compresso e aprilo utilizzando l'editor di testo preferito. 
    • Quindi aggiorna il testo dell'intestazione che si trova dopo "Complimenti!" in modo da leggere:

    Hai creato una pipeline che ha recuperato questa applicazione di origine da AWS CodeCommit e l'hai distribuita in un'istanza Amazon EC2 utilizzando AWS Elastic Beanstalk. Hai fatto un passo in più verso la distribuzione continua.

    continuous-delivery-pipeline-6b2

    Fai clic per ingrandire l'immagine

    continuous-delivery-pipeline-6b2

    c. Esegui il commit e inserisci il file compresso aggiornato nell'archivio CodeCommit.


d. Torna alla pipeline nella console CodePipeline. Dopo pochi minuti l'origine diventa blu, per indicare che la pipeline ha rilevato le modifiche apportate al repository di origine. Dopodiché, il codice aggiornato verrà spostato automaticamente in Elastic Beanstalk.

  • Quando lo stato della pipeline indica Succeeded (Riuscito), nell'area di stato per la fase Beta, fare clic su AWS Elastic Beanstalk.
continuous-delivery-pipeline-4a2

Fai clic per ingrandire l'immagine

continuous-delivery-pipeline-4a2

e. Viene visualizzata la console di AWS Elastic Beanstalk con i dettagli della distribuzione. Seleziona l'ambiente creato in precedenza, denominato Default-Environment (Ambiente predefinito).

continuous-delivery-pipeline-4b

Fai clic per ingrandire l'immagine

continuous-delivery-pipeline-4b

f. Fai clic sull'URL che viene visualizzato nella parte superiore destra della pagina per visualizzare nuovamente il sito Web di esempio.  Il testo è stato aggiornamento automaticamente tramite la pipeline di distribuzione continua.

 

continuous-delivery-pipeline-6e

Fai clic per ingrandire l'immagine

continuous-delivery-pipeline-6e

Per evitare costi futuri, elimina tutte le risorse avviate nel corso di questo tutorial, comprese la pipeline, l'applicazione Elastic Beanstalk e l'origine impostata per ospitare il codice.  


a. Elimina innanzitutto la pipeline:

  • Nella vista pipeline, fai clic su Edit (Modifica)
  • Fai clic su Delete (Elimina).
  • Digita il nome della pipeline e fai clic su Delete (Elimina).
continuous-delivery-pipeline-5d-6

Fai clic per ingrandire l'immagine

continuous-delivery-pipeline-5d-6

b. A seguire, elimina l'applicazione Elastic Beanstalk:

  • Visita la console Elastic Beanstalk 
  • Fai clic su Actions (Operazioni).
  • Quindi, fai clic su Terminate Environment (Termina ambiente).
continuous-delivery-pipeline-6

Fai clic per ingrandire l'immagine

continuous-delivery-pipeline-6
  • Amazon S3

    c. Se hai creato un bucket S3 per questo tutorial, eliminalo:

    • Visita la console S3. 
    • Fai clic con il pulsante destro del mouse sul nome del bucket e seleziona Delete Bucket (Elimina bucket)
    • Quando viene visualizzato un messaggio di conferma, immetti il nome del bucket, quindi fare clic su Delete (Elimina).
    continuous-delivery-pipeline-6d

    Fai clic per ingrandire l'immagine

    continuous-delivery-pipeline-6d
  • AWS CodeCommit

    c. Se hai creato un repository AWS CodeCommit per questo tutorial, visita la console CodeCommit ed elimina il repository creato:

    continuous-delivery-pipeline-7a

    Fai clic per ingrandire l'immagine

    continuous-delivery-pipeline-7a

    c. Nel riquadro di navigazione, seleziona Settings (Impostazioni).

    • Fai clic su Delete Repository (Elimina repository).
    • Viene visualizzata una finestra di conferma. Digita il nome del repository e fai clic su Delete (Elimina).
    continuous-delivery-pipeline-7b

    Fai clic per ingrandire l'immagine

    continuous-delivery-pipeline-7b

Hai creato una pipeline di rilascio di software automatizzata utilizzando AWS CodePipeline. Utilizzando CodePipeline, hai creato una pipeline che utilizza GitHub, Amazon S3 o AWS CodeCommit come il percorso di origine del codice applicazione e quindi distribuisce il codice a un'istanza Amazon EC2 gestita da AWS Elastic Beanstalk. La pipeline distribuirà automaticamente il codice ogni volta che si verifica una modifica di codice. Hai fatto un passo in più verso la pratica della distribuzione continua.

Ora che hai appreso come creare una semplice pipeline utilizzando AWS CodePipeline, ottieni ulteriori informazioni visitando le seguenti risorse.

  • Crea una pipeline a quattro fasi, più avanzata seguendo questa guida. Questa pipeline utilizza un repository GitHub per l'origine, un server di compilazione Jenkins per creare e testare il progetto e un'applicazione AWS CodeDeploy per distribuire il codice compilato su un server temporaneo.
  • Rendi rapidamente operativa una pipeline a quattro fasi con un server di compilazione Jenkins utilizzando Pipeline Starter Kit.
  • Ulteriori informazioni sulla distribuzione continua.
No