utilizzando AWS CodePipeline
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 consoleLa 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.
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.
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:
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).
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.
c. Nella pagina Step 2: Source (Fase 2: origine), seleziona la posizione dell'origine scelta e segui le fasi sottostanti:
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).
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.
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.
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).
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.
c. Nell'area di stato della fase Beta, fai clic su AWS Elastic Beanstalk.
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).
e. Fai clic sull'URL che viene visualizzato nella parte superiore destra della pagina per visualizzare il sito Web di esempio distribuito.
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.
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.
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).
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.
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).
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).
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.