View a markdown version of this page

Tutorial: creazione di una pipeline a quattro fasi - 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à.

Tutorial: creazione di una pipeline a quattro fasi

Ora che hai creato la tua prima pipeline in Tutorial: creazione di una semplice pipeline (bucket S3) o in Tutorial: creare una semplice pipeline (CodeCommit repository), puoi iniziare a creare pipeline più complesse. Questo tutorial ti guiderà attraverso la creazione di una pipeline in quattro fasi che utilizza un GitHub repository per il tuo codice sorgente, un server di compilazione Jenkins per creare il progetto e un' CodeDeploy applicazione per distribuire il codice compilato su un server di staging. Il diagramma seguente mostra la pipeline iniziale in tre fasi.

Un diagramma che mostra la fase di origine con l'azione di origine, una fase di compilazione con l'azione Jenkins e una fase di distribuzione con l'azione di distribuzione.

Dopo aver creato la pipeline, dovrai modificarla aggiungendo una fase con un'operazione di test per provare il codice, sempre tramite Jenkins.

Prima di poter creare la pipeline, devi configurare le risorse necessarie. Ad esempio, se si desidera utilizzare un GitHub repository per il codice sorgente, è necessario creare il repository prima di poterlo aggiungere a una pipeline. Nell'ambito della configurazione, il tutorial illustra i passaggi per configurare Jenkins su un'istanza EC2 a scopo dimostrativo.

Importante

Molte delle azioni che aggiungete alla pipeline in questa procedura coinvolgono AWS risorse che dovete creare prima di creare la pipeline. AWS le risorse per le azioni di origine devono sempre essere create nella stessa AWS regione in cui si crea la pipeline. Ad esempio, se crei la pipeline nella regione Stati Uniti orientali (Ohio), il tuo CodeCommit repository deve trovarsi nella regione Stati Uniti orientali (Ohio).

Puoi aggiungere azioni interregionali quando crei la pipeline. AWS le risorse per le azioni interregionali devono trovarsi nella stessa AWS regione in cui intendi eseguire l'azione. Per ulteriori informazioni, consulta Aggiungi un'azione interregionale in CodePipeline.

Importante

Come parte della creazione di una pipeline, per gli artefatti verrà utilizzato un bucket di artefatti S3 fornito dal cliente. CodePipeline (Questo è diverso dal bucket utilizzato per un'azione sorgente S3). Se il bucket di artefatti S3 si trova in un account diverso dall'account della pipeline, assicurati che il bucket di artefatti S3 sia di proprietà di persone sicure e affidabili. Account AWS

Prima di iniziare il tutorial, devi aver già completato i prerequisiti generali indicati in Guida introduttiva con CodePipeline.

Fase 1: completamento dei prerequisiti

Per l'integrazione con Jenkins, è AWS CodePipeline necessario installare il CodePipeline Plugin for Jenkins su qualsiasi istanza di Jenkins con cui si desidera utilizzare. CodePipeline È inoltre necessario configurare un utente o un ruolo IAM dedicato da utilizzare per le autorizzazioni tra il progetto Jenkins e. CodePipeline Il modo più semplice per integrare Jenkins CodePipeline è installare Jenkins su un'istanza EC2 che utilizza un ruolo di istanza IAM creato per l'integrazione con Jenkins. Per un'efficace connessione dei collegamenti della pipeline per le operazioni Jenkins, occorre configurare le impostazioni del proxy e del firewall sul server; oppure dovrai configurare l'istanza EC2 in modo che autorizzi le connessioni in entrata alla porta utilizzata dal progetto Jenkins. Verifica che la configurazione di Jenkins consenta di autenticare gli utenti e di applicare il controllo degli accessi prima di autorizzare le connessioni su queste porte (ad esempio, 443 e 8443 se hai protetto Jenkins in modo che utilizzi solo connessioni HTTPS o 80 e 8080 se autorizzi le connessioni HTTP). Per ulteriori informazioni, consulta l'articolo Garantire la sicurezza di Jenkins.

Nota

Questo tutorial utilizza un codice di esempio e configura le fasi di compilazione che convertono il codice dal formato Haml al formato HTML. Puoi scaricare il codice di esempio open source dal GitHub repository seguendo i passaggi indicati. Copia o clona il campione in un repository GitHub Avrai bisogno dell'intero campione nel tuo GitHub repository, non solo del file .zip.

Il tutorial presuppone anche che:

  • Tu abbia familiarità con l'installazione e l'amministrazione di Jenkins e con la creazione di progetti Jenkins.

  • Tu abbia installato Rake e il gem Haml per Ruby sullo stesso computer o sulla stessa istanza che ospita il progetto Jenkins.

  • Tu abbia impostato le variabili di ambiente di sistema necessarie affinché i comandi Rake possano essere eseguiti dal terminale o dalla riga di comando (ad esempio, sui sistemi Windows, modificando la variabile PATH in modo da includere la directory dove è installato Rake).

Copia o clona il campione in un repository GitHub

Per clonare il campione e inviarlo a un repository GitHub
  1. Scaricate il codice di esempio dal GitHub repository o clonate i repository sul computer locale. Il codice di esempio è disponibile in due pacchetti:

  2. Dal repository, scegli Fork per clonare il repository di esempio in un repository del tuo account. GitHub Per ulteriori informazioni, consulta la documentazione relativa ad GitHub.

Crea un ruolo IAM da utilizzare per l'integrazione con Jenkins

Come best practice, prendi in considerazione l'avvio di un'istanza EC2 per ospitare il tuo server Jenkins e l'utilizzo di un ruolo IAM per concedere all'istanza le autorizzazioni necessarie per interagire con. CodePipeline

  1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo. https://console.aws.amazon.com/iam/

  2. Nel riquadro di navigazione della console IAM, scegli Ruoli, quindi Crea ruolo.

  3. In Select type of trusted entity (Seleziona tipo di entità attendibile), scegli Servizio AWS. In Choose the service that will use this role (Scegli il servizio che utilizzerà questo ruolo) scegliere EC2. In Select your use case (Seleziona il tuo caso d'uso) selezionare EC2.

  4. Scegli Successivo: autorizzazioni. Nella pagina Collega policy di autorizzazione, seleziona la policy gestita AWSCodePipelineCustomActionAccess, quindi scegli Next: Tags. Scegli Prossimo: Rivedi.

  5. Nella pagina Review (Revisione) in Role name (Nome ruolo), digitare il nome del ruolo da creare in modo specifico per l'integrazione di Jenkins (ad esempio JenkinsAccess), quindi scegliere Create role (Crea ruolo).

Quando crei l'istanza EC2 dove verrà installato Jenkins, in Step 3: Configure Instance Details (Fase 3: configurazione dei dettagli dell'istanza), assicurati di scegliere il ruolo dell'istanza (ad esempio JenkinsAccess).

Per ulteriori informazioni sui ruoli delle istanze e su Amazon EC2, consulta Ruoli IAM per Amazon EC2, Utilizzo dei ruoli IAM per concedere autorizzazioni alle applicazioni in esecuzione su istanze Amazon EC2 e Creazione di un ruolo per delegare le autorizzazioni a un. Servizio AWS

Installa e configura Jenkins e il plugin per Jenkins CodePipeline

Per installare Jenkins e il plugin per Jenkins CodePipeline
  1. Creare un'istanza EC2 dove verrà installato Jenkins e in Step 3: Configure Instance Details (Fase 3: configurazione dei dettagli dell'istanza), assicurarsi di scegliere il ruolo creato per l'istanza (ad esempio JenkinsAccess). Per ulteriori informazioni sulla creazione di istanze EC2, consulta Launch an Amazon EC2 instance nella Amazon EC2 User Guide.

    Nota

    Se disponi già di risorse Jenkins da utilizzare, puoi farlo, ma devi creare un utente IAM speciale, applicare la policy AWSCodePipelineCustomActionAccess gestita a quell'utente e quindi configurare e utilizzare le credenziali di accesso per quell'utente sulla tua risorsa Jenkins. Se vuoi utilizzare l'interfaccia utente Jenkins per fornire le credenziali, configura Jenkins in modo che autorizzi solo il protocollo HTTPS. Per ulteriori informazioni, consulta Risoluzione dei problemi CodePipeline.

  2. Installare Jenkins sull'istanza EC2. Per ulteriori informazioni, consulta la documentazione di Jenkins relativa all'installazione di Jenkins e all'avvio e all'accesso a Jenkins, oltre a details of integration with Jenkins in Integrazioni di prodotti e servizi con CodePipeline.

  3. Avviare Jenkins e sulla home page scegliere Manage Jenkins (Gestisci Jenkins).

  4. Nella pagina Manage Jenkins (Gestisci Jenkins), scegliere Manage Plugins (Gestisci plugin).

  5. Scegliere la scheda Available (Disponibile) e nella casella di ricerca Filter (Filtra), immettere AWS CodePipeline. Scegli CodePipeline Plugin for Jenkins dall'elenco e scegli Scarica ora e installa dopo il riavvio.

  6. Nella Plugins/Upgrades pagina di installazione, seleziona Riavvia Jenkins quando l'installazione è completa e non è in esecuzione alcun processo.

  7. Scegliere Back to Dashboard (Torna al pannello di controllo).

  8. Nella pagina principale, scegliere New Item (Nuova voce).

  9. In Item Name, inserisci un nome per il progetto Jenkins (ad esempio,MyDemoProject). Scegliere Freestyle project (Progetto freestyle), quindi OK.

    Nota

    Assicurati che il nome del progetto soddisfi i requisiti di CodePipeline. Per ulteriori informazioni, consulta Quote in AWS CodePipeline.

  10. Nella pagina di configurazione del progetto, selezionare la casella di controllo Execute concurrent builds if necessary (Esegui compilazioni simultanee in caso di necessità). In Source Code Management (Gestione codice sorgente), scegli AWS CodePipeline. Se hai installato Jenkins su un'istanza EC2 e l'hai configurata AWS CLI con il profilo per l'utente IAM che hai creato per l'integrazione tra CodePipeline e Jenkins, lascia tutti gli altri campi vuoti.

  11. Scegli Advanced e, in Provider, inserisci un nome per il provider dell'azione così come apparirà CodePipeline (ad esempio,). MyJenkinsProviderName Verifica che il nome sia univoco e facile da ricordare. Verrà utilizzato più avanti nel tutorial quando si aggiunge un'operazione di compilazione e ancora quando si aggiunge un'operazione di test.

    Nota

    Il nome dell'operazione deve soddisfare i requisiti di denominazione delle operazioni in CodePipeline. Per ulteriori informazioni, consulta Quote in AWS CodePipeline.

  12. In Build Triggers (Crea trigger), deselezionare tutte le caselle di controllo, quindi selezionare Poll SCM (Polling SCM). In Schedule (Pianificazione), immettere cinque asterischi separati da spazi, nel seguente modo:

    * * * * *

    Questo sondaggio viene eseguito CodePipeline ogni minuto.

  13. In Build (Compila), scegliere Add build step (Aggiungi fase di compilazione). Scegli Execute shell (Amazon Linux, RHEL o Ubuntu Server) Execute batch command (Windows Server), quindi inserisci quanto segue:

    rake
    Nota

    Verifica che il tuo ambiente sia configurato con le variabili e le impostazioni richieste per eseguire rake; in caso contrario, la compilazione non andrà a buon fine.

  14. Scegli Aggiungi azione post-compilazione, quindi scegli AWS CodePipeline Publisher. Scegliere Add (Aggiungi) e in Build Output Locations (Posizioni di output della compilazione), lasciare vuota la posizione. Questa è la configurazione predefinita. Al termine del processo di compilazione verrà creato un file compresso.

  15. Scegliere Save (Salva) per salvare il progetto Jenkins.

Passaggio 2: crea una pipeline in CodePipeline

In questa parte del tutorial viene creata una pipeline utilizzando la proceduta guidata Create Pipeline (Crea pipeline).

Per creare un CodePipeline processo di rilascio automatico
  1. Accedi Console di gestione AWS e apri la CodePipeline console all'indirizzo http://console.aws.amazon.com/codesuite/codepipeline/home.

  2. Se necessario, utilizzare il selettore delle regioni per modificare la regione in quella in cui si trovano le risorse della pipeline. Ad esempio, se hai creato risorse per il tutorial precedente inus-east-2, assicurati che il selettore di regione sia impostato su Stati Uniti orientali (Ohio).

    Per ulteriori informazioni sulle regioni e gli endpoint disponibili per CodePipeline, vedi AWS CodePipeline endpoint e quote.

  3. Nella pagina Welcome (Benvenuto), pagina Getting started (Nozioni di base) o pagina Pipelines (Pipeline), scegliere Create pipeline (Crea pipeline).

  4. Nella pagina Fase 1: Scegli l'opzione di creazione, in Opzioni di creazione, scegli l'opzione Crea pipeline personalizzata. Scegli Avanti.

  5. Nella pagina Step 2: Choose pipeline settings, in Pipeline name, inserisci il nome della tua pipeline.

  6. CodePipeline fornisce pipeline di tipo V1 e V2, che si differenziano per caratteristiche e prezzo. Il tipo V2 è l’unico tipo che puoi scegliere nella console. Per ulteriori informazioni, consulta tipi di pipeline. Per informazioni sui prezzi di CodePipeline, vedi Prezzi. https://aws.amazon.com/codepipeline/pricing/

  7. In Ruolo di servizio, scegli Nuovo ruolo di servizio CodePipeline per consentire la creazione di un ruolo di servizio in IAM.

  8. Lascia i valori predefiniti delle impostazioni nella pagina Advanced settings (Impostazioni avanzate) e scegli Next (Successivo).

  9. Nella pagina Step 3: Add source stage, in Source provider, scegli GitHub.

  10. In Connessione, scegli una connessione esistente o creane una nuova. Per creare o gestire una connessione per l'azione GitHub sorgente, consultaGitHub connessioni.

  11. Nel passaggio 4: Aggiungi fase di compilazione, scegli Aggiungi Jenkins. Nel nome del fornitore, inserisci il nome dell'azione che hai fornito nel CodePipeline Plugin for Jenkins (ad esempioMyJenkinsProviderName). Questo nome deve corrispondere esattamente al nome nel CodePipeline Plugin for Jenkins. In Server URL (URL del server), immettere l'URL dell'istanza EC2 in cui è installato Jenkins. In Nome progetto, inserisci il nome del progetto che hai creato in Jenkins, ad esempioMyDemoProject, quindi scegli Avanti.

  12. Nel passaggio 5: Aggiungi fase di test, scegli Ignora fase di test, quindi accetta il messaggio di avviso scegliendo nuovamente Ignora.

    Scegli Avanti.

  13. Nel passaggio 6: Aggiungi la fase di distribuzione, riutilizza l' CodeDeploy applicazione e il gruppo di distribuzione in cui hai creato. Tutorial: creazione di una semplice pipeline (bucket S3) In Deploy provider (Provider di distribuzione), scegliere CodeDeploy. In Application name (Nome applicazione), immettere CodePipelineDemoApplication oppure scegliere il pulsante di aggiornamento e quindi selezionare il nome dell'applicazione dall'elenco. In Deployment group (Gruppo di distribuzione), immettere CodePipelineDemoFleet o selezionarlo dall'elenco, quindi scegliere Next (Successivo).

    Nota

    Puoi utilizzare CodeDeploy le tue risorse o crearne di nuove, ma potresti incorrere in costi aggiuntivi.

  14. Nel passaggio 7: Rivedi, rivedi le informazioni, quindi scegli Crea pipeline.

  15. La pipeline viene avviata automaticamente ed esegue il codice di esempio. Puoi visualizzare i messaggi di avanzamento, successo e fallimento mentre la pipeline crea il campione Haml in HTML e lo distribuisce come pagina web in ciascuna delle istanze Amazon EC2 nella distribuzione. CodeDeploy

Fase 3: aggiunta di un'altra fase alla pipeline

Ora aggiungerai una fase di test e un'operazione di test alla fase che utilizza il test Jenkins incluso nel codice di esempio per stabilire se la pagina Web è dotata di contenuti. Il test è solo a scopo dimostrativo.

Nota

Se non volevi aggiungere un'altra fase alla pipeline, avresti potuto aggiungere un'operazione di test alla fase temporanea della pipeline, prima o dopo l'operazione di distribuzione.

Aggiunta di una fase di test alla pipeline

Ricerca dell'indirizzo IP di un'istanza

Per verificare l'indirizzo IP di un'istanza in cui hai distribuito il codice
  1. Quando lo stato della pipeline indica Succeeded (Riuscito), nell'area dello stato della fase Staging (Gestione temporanea) scegliere Details (Dettagli).

  2. Nella sezione Deployment Details (Dettagli distribuzione), in Instance ID (ID istanza), scegliere l'ID di una delle istanze correttamente distribuite.

  3. Copia l'indirizzo IP dell'istanza (ad esempio,). 192.168.0.4 Questo indirizzo IP verrà utilizzato nel test Jenkins.

Creazione di un progetto Jenkins per testare la distribuzione

Per creare il progetto Jenkins
  1. Nell'istanza in cui è installato Jenkins, aprire Jenkins e dalla pagina principale scegliere New Item (Nuova voce).

  2. In Item Name, inserisci un nome per il progetto Jenkins (ad esempio,MyTestProject). Scegliere Freestyle project (Progetto freestyle), quindi OK.

    Nota

    Assicurati che il nome del tuo progetto soddisfi i CodePipeline requisiti. Per ulteriori informazioni, consulta Quote in AWS CodePipeline.

  3. Nella pagina di configurazione del progetto, selezionare la casella di controllo Execute concurrent builds if necessary (Esegui compilazioni simultanee in caso di necessità). In Source Code Management (Gestione codice sorgente), scegli AWS CodePipeline. Se hai installato Jenkins su un'istanza EC2 e l'hai configurata AWS CLI con il profilo per l'utente IAM che hai creato per l'integrazione tra CodePipeline e Jenkins, lascia tutti gli altri campi vuoti.

    Importante

    Se stai configurando un progetto Jenkins e questo non è installato su un'istanza Amazon EC2 o è installato su un'istanza EC2 che esegue un sistema operativo Windows, completa i campi come richiesto dalle impostazioni dell'host proxy e della porta e fornisci le credenziali dell'utente o del ruolo IAM che hai configurato per l'integrazione tra Jenkins e CodePipeline.

  4. Scegliere Advanced (Avanzate) e in Category (Categoria), scegliere Test.

  5. In Provider, inserisci lo stesso nome che hai usato per il progetto di compilazione (ad esempio,). MyJenkinsProviderName Questo nome verrà utilizzato più avanti nel tutorial per aggiungere l'operazione di test alla pipeline.

    Nota

    Questo nome deve soddisfare i requisiti di CodePipeline denominazione per le azioni. Per ulteriori informazioni, consulta Quote in AWS CodePipeline.

  6. In Build Triggers (Crea trigger), deselezionare tutte le caselle di controllo, quindi selezionare Poll SCM (Polling SCM). In Schedule (Pianificazione), immettere cinque asterischi separati da spazi, nel seguente modo:

    * * * * *

    Questo sondaggio viene eseguito CodePipeline ogni minuto.

  7. In Build (Compila), scegliere Add build step (Aggiungi fase di compilazione). Se stai eseguendo la distribuzione su istanze Amazon Linux, RHEL o Ubuntu Server, scegli Execute shell. Immetti quindi quanto segue, dove l'indirizzo IP è l'indirizzo dell'istanza EC2 copiata in precedenza:

    TEST_IP_ADDRESS=192.168.0.4 rake test

    Se esegui la distribuzione su istanze Windows Server, scegli il comando Execute batch, quindi inserisci quanto segue, dove l'indirizzo IP è l'indirizzo dell'istanza EC2 che hai copiato in precedenza:

    set TEST_IP_ADDRESS=192.168.0.4 rake test
    Nota

    Il test presuppone la porta predefinita 80. Se vuoi specificare una porta diversa, aggiungi un'istruzione di test della porta, come segue:

    TEST_IP_ADDRESS=192.168.0.4 TEST_PORT=8000 rake test
  8. Scegli Aggiungi azione post-compilazione, quindi scegli Publisher. AWS CodePipeline Non scegliere Add (Aggiungi).

  9. Scegliere Save (Salva) per salvare il progetto Jenkins.

Creazione di una quarta fase

Per aggiungere una fase alla pipeline che include l'operazione di test Jenkins
  1. Accedi a Console di gestione AWS e apri la CodePipeline console all'indirizzo http://console.aws.amazon.com/codesuite/codepipeline/home.

  2. In Name (Nome), scegliere il nome della pipeline creata, MySecondPipeline.

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

  4. Nella pagina Edit (Modifica) scegliere + Stage (+ Fase) per aggiungere una fase immediatamente dopo quella di compilazione.

  5. Nel campo del nome della nuova fase, immetti un nome (ad esempio Testing), quindi scegli + Add Action (+ Aggiungi operazione).

  6. Nel Nome dell'azione, inserisciMyJenkinsTest-Action. In Test provider, scegli il nome del provider specificato in Jenkins (ad esempio,MyJenkinsProviderName). In Nome progetto, inserisci il nome del progetto che hai creato in Jenkins (ad esempio,MyTestProject). In Input artifacts, scegli l'artefatto dalla build di Jenkins il cui nome predefinito èBuildArtifact, quindi scegli Fine.

    Nota

    Poiché l'operazione di test Jenkins funziona sull'applicazione creata nella fase di compilazione di Jenkins, utilizza l'artefatto di compilazione per l'artefatto di input all'operazione di test.

    Per ulteriori informazioni sugli artefatti di input e di output e sulla struttura delle pipeline, consulta CodePipeline riferimento alla struttura della pipeline.

  7. Nella pagina Edit (Modifica), scegliere Save pipeline changes (Salva le modifiche alla pipeline) Nella casella di dialogo Save pipeline changes (Salva modifiche della pipeline), scegliere Save and continue (Salva e continua).

  8. Anche se la nuova fase è stata aggiunta alla pipeline, viene visualizzato lo stato No executions yet (Ancora nessun esecuzione) per la nuova fase, perché le modifiche non hanno attivato un'altra esecuzione della pipeline. Per eseguire l'esempio nella pipeline rivista, nella pagina dei dettagli della pipeline, scegli Release change.

    La visualizzazione della pipeline mostra le fasi e le operazioni nella pipeline e lo stato della revisione attraverso le quattro fasi. Il tempo necessario per l'esecuzione di tutte le fasi della pipeline dipende dalle dimensioni degli artefatti, dalla complessità delle operazioni di compilazione e test e da altri fattori.

Fase 4: Eliminazione delle risorse

Dopo aver completato questo tutorial, devi eliminare la pipeline e le risorse utilizzate per evitare che ti venga addebitato un costo per l'utilizzo continuo di tali risorse. Se non intendi continuare a utilizzarla CodePipeline, elimina la pipeline, quindi l' CodeDeploy applicazione e le istanze Amazon EC2 associate e infine il bucket Amazon S3 utilizzato per archiviare gli artefatti. Dovresti anche considerare se eliminare altre risorse, come il GitHub repository, se non intendi continuare a utilizzarle.

Per eliminare le risorse utilizzate in questo tutorial
  1. Apri una sessione di terminale sul tuo computer Linux, macOS o Unix locale o un prompt dei comandi sul tuo computer Windows locale ed esegui il delete-pipeline comando per eliminare la pipeline che hai creato. Per MySecondPipeline, immettere il comando seguente:

    aws codepipeline delete-pipeline --name "MySecondPipeline"

    Questo comando non restituisce alcun risultato.

  2. Per pulire CodeDeploy le tue risorse, segui le istruzioni in Pulizia.

  3. Per eliminare le risorse dell'istanza, eliminare l'istanza EC2 in cui è installato Jenkins. Per ulteriori informazioni, consulta Pulizia di un'istanza.

  4. Se non intendi creare altre pipeline o CodePipeline riutilizzarle, elimina il bucket Amazon S3 utilizzato per archiviare gli artefatti per la pipeline. Per eliminare il bucket, segui le istruzioni relative all'eliminazione di un bucket.

  5. Se non si desidera riutilizzare le altre risorse per questa pipeline, è consigliabile eliminarle seguendo le istruzioni per quella particolare risorsa. Ad esempio, se desideri eliminare il repository, segui le istruzioni in Eliminazione di un GitHub repository sul sito web. GitHub