Condividi tramite


Esercitazione: Eseguire la distribuzione in una macchina virtuale Linux usando Jenkins e Azure DevOps Services

L'integrazione continua (CI) e la distribuzione continua formano una pipeline con cui è possibile compilare, rilasciare e distribuire il codice. Azure DevOps Services offre un set completo e completo di strumenti di automazione CI/CD per la distribuzione in Azure. Jenkins è uno strumento diffuso basato su server CI/CD di terze parti che fornisce anche l'automazione CI/CD. È possibile usare Azure DevOps Services e Jenkins insieme per personalizzare la modalità di distribuzione dell'app o del servizio cloud.

In questa esercitazione si usa Jenkins per creare un'app Web Node.js. Usare quindi Azure DevOps per distribuirlo

a un gruppo di distribuzione che contiene macchine virtuali Linux. Scopri come:

  • Ottenere l'app di esempio.
  • Configurare i plug-in Jenkins.
  • Configurare un progetto Jenkins Freestyle per Node.js.
  • Configurare Jenkins per l'integrazione di Azure DevOps Services.
  • Creare un endpoint di servizio Jenkins.
  • Creare un gruppo di distribuzione per le macchine virtuali di Azure.
  • Creare una pipeline di rilascio di Azure Pipelines.
  • Eseguire distribuzioni manuali e attivate da CI.

Prerequisiti

Ottenere l'app di esempio

È necessaria un'app da distribuire, archiviata in un repository Git. Per questa esercitazione, è consigliabile usare questa app di esempio disponibile in GitHub. Questa esercitazione contiene uno script di esempio usato per installare Node.js e un'applicazione. Se si vuole usare il proprio repository, è necessario configurare un esempio simile.

Creare un fork di questa app e prendere nota del percorso (URL) da usare nei passaggi successivi di questa esercitazione. Per ulteriori informazioni, vedere Effettuare il fork di un repository.

Annotazioni

L'app è stata compilata tramite Yeoman. Usa Express, bower e grunt. E include alcuni pacchetti npm come dipendenze. L'esempio contiene anche uno script che configura Nginx e distribuisce l'app. Viene eseguito nelle macchine virtuali. In particolare, lo script:

  1. Installa Node, Nginx e PM2.
  2. Configura Nginx e PM2.
  3. Avvia l'app Node.

Configurare i plugin di Jenkins

Prima di tutto, è necessario configurare due plug-in Jenkins: NodeJS e VS Team Services Continuous Deployment.

  1. Aprire l'account Jenkins e selezionare Gestisci Jenkins.
  2. Nella pagina Gestisci Jenkins selezionare Gestisci plug-in.
  3. Filtrare l'elenco per individuare il plug-in NodeJS e selezionare l'opzione Installa senza riavvio . Aggiunta del plugin NodeJS a Jenkins
  4. Filtrare l'elenco per trovare il plug-in Distribuzione continua di VS Team Services e selezionare l'opzione Installa senza riavvio .
  5. Tornare al dashboard di Jenkins e selezionare Gestisci Jenkins.
  6. Selezionare Configurazione strumento globale. Trovare NodeJS e selezionare Installazioni NodeJS.
  7. Selezionare l'opzione Installa automaticamente e quindi immettere un valore Nome .
  8. Seleziona Salva.

Configurare un progetto Jenkins Freestyle per Node.js

  1. Selezionare Nuovo elemento. Immettere un nome di elemento.
  2. Selezionare Freestyle project (Progetto Freestyle). Seleziona OK.
  3. Nella scheda Gestione del codice sorgente selezionare Git e immettere i dettagli del repository e il ramo che contengono il codice dell'app.
    Aggiungere un repository alla compilazione
  4. Nella scheda Trigger di compilazione, selezionare Poll SCM e inserire la pianificazione H/03 * * * * per controllare il repository Git per eventuali modifiche ogni tre minuti.
  5. Nella scheda Build Environment (Ambiente di compilazione) selezionare Provide Node & npm bin/ folder PATH (Specifica Node e npm bin/percorso cartella) e selezionare il valore NodeJS Installation (Installazione NodeJS). Lasciare il file npmrc impostato per usare l'impostazione predefinita del sistema.
  6. Nella scheda Compilazione selezionare Esegui shell e immettere il comando npm install per assicurarsi che tutte le dipendenze vengano aggiornate.

Configurare Jenkins per l'integrazione di Azure DevOps Services

Annotazioni

Assicurarsi che il token di accesso personale (PAT) usato per i passaggi seguenti contenga l'autorizzazione Release (lettura, scrittura, esecuzione e gestione) in Azure DevOps Services.

  1. Crea un token di accesso personale nella tua organizzazione di Azure DevOps Services se non ne hai già uno. Jenkins richiede queste informazioni per accedere all'organizzazione di Azure DevOps Services. Assicurarsi di archiviare le informazioni sul token per i passaggi successivi in questa sezione.

    Per informazioni su come generare un token, vedere Come creare un token di accesso personale per Azure DevOps Services?.

  2. Nella scheda Azioni post-compilazione selezionare Aggiungi azione post-compilazione. Selezionare Archivia gli artefatti.

  3. Per File da archiviare, immettere **/* per includere tutti i file.

  4. Per creare un'altra azione, selezionare Aggiungi azione post-compilazione.

  5. Selezionare Trigger release in TFS/Team Services. Immettere l'URI per l'organizzazione di Azure DevOps Services, ad esempio https://{nome-organizzazione}.visualstudio.com.

  6. Immettere il nome del progetto .

  7. Scegliere un nome per la pipeline di versione. Questa pipeline di versione verrà creata in un secondo momento in Azure DevOps Services.

  8. Scegliere le credenziali per connettersi all'ambiente Azure DevOps Services o Azure DevOps Server:

    • Lasciare vuoto Nome utente se si usa Azure DevOps Services.
    • Immettere un nome utente e una password se si usa una versione locale di Azure DevOps Server.
      Configurazione di azioni post-compilazione di Jenkins
  9. Salvare il progetto Jenkins.

Creare un endpoint di servizio Jenkins

Un endpoint di servizio consente ad Azure DevOps Services di connettersi a Jenkins.

  1. Aprire la pagina Servizi in Azure DevOps Services, aprire l'elenco Nuovo endpoint di servizio e selezionare Jenkins. Aggiungere un endpoint Jenkins
  2. Immettere un nome per la connessione.
  3. Immettere l'URL del server Jenkins e selezionare l'opzione Accetta certificati SSL non attendibili . Un URL di esempio è http://{YourJenkinsURL}.westcentralus.cloudapp.azure.com.
  4. Immettere il nome utente e la password per l'account Jenkins.
  5. Selezionare Verifica connessione per verificare che le informazioni siano corrette.
  6. Selezionare OK per creare l'endpoint del servizio.

Creare un gruppo di distribuzione per le macchine virtuali di Azure

È necessario un gruppo di distribuzione per registrare l'agente di Azure DevOps Services in modo che la pipeline di versione possa essere distribuita nella macchina virtuale. I gruppi di distribuzione semplificano la definizione di gruppi logici di computer di destinazione per la distribuzione e l'installazione dell'agente richiesto in ogni computer.

Annotazioni

Nella procedura seguente assicurarsi di installare i prerequisiti e di non eseguire lo script con privilegi sudo.

  1. Aprire la scheda Versioni dell'hub Build &Release , aprire Gruppi di distribuzione e selezionare + Nuovo.
  2. Immettere un nome per il gruppo di distribuzione e una descrizione facoltativa. Successivamente, seleziona Crea.
  3. Scegliere il sistema operativo per la macchina virtuale di destinazione della distribuzione. Ad esempio, selezionare Ubuntu 16.04+.
  4. Selezionare Usa un token di accesso personale nello script per l'autenticazione.
  5. Selezionare il collegamento Prerequisiti di sistema . Installare i prerequisiti per il sistema operativo.
  6. Selezionare Copia script negli Appunti per copiare lo script.
  7. Accedere alla macchina virtuale di destinazione della distribuzione ed eseguire lo script. Non eseguire lo script con privilegi sudo.
  8. Dopo l'installazione, vengono richiesti i tag del gruppo di distribuzione. Accettare i valori predefiniti.
  9. In Azure DevOps Services verificare la presenza della macchina virtuale appena registrata in Destinazioni in Gruppi di distribuzione.

Creare una pipeline di rilascio di Azure Pipelines

Una pipeline di versione specifica il processo usato da Azure Pipelines per distribuire l'app. In questo esempio si esegue uno script della shell.

Per creare la release pipeline in Azure Pipelines:

  1. Aprire la scheda Versioni dell'hub Build &Release e selezionare Crea pipeline di versione.
  2. Selezionare il modello Vuoto scegliendo di iniziare con un processo vuoto.
  3. Nella sezione Artefatti selezionare + Aggiungi artefatto e scegliere Jenkins per Tipo di origine. Selezionare la connessione all'endpoint del servizio Jenkins. Selezionare quindi il processo di origine Jenkins e selezionare Aggiungi.
  4. Seleziona i puntini accanto a Ambiente 1. Selezionare Aggiungi fase del gruppo di distribuzione.
  5. Scegliere il gruppo di distribuzione.
  6. Selezionare + per aggiungere un'attività alla fase del gruppo di distribuzione.
  7. Selezionare l'attività Script shell e selezionare Aggiungi. L'attività Script shell fornisce la configurazione per l'esecuzione di uno script in ogni server per installare Node.js e avviare l'app.
  8. Per Percorso script immettere $(System.DefaultWorkingDirectory)/Fabrikam-Node/deployscript.sh.
  9. Selezionare Avanzate e quindi specificare la directory di lavoro.
  10. Per Directory di lavoro, immettere $(System.DefaultWorkingDirectory)/Fabrikam-Node.
  11. Modifica il nome della pipeline di rilascio al nome che hai specificato nella scheda Azioni post-compilazione della build in Jenkins. Jenkins richiede che questo nome sia in grado di attivare una nuova versione quando vengono aggiornati gli artefatti di origine.
  12. Selezionare Salva e selezionare OK per salvare la pipeline di versione.

Eseguire distribuzioni manuali e attivate da CI

  1. Selezionare + Versione e selezionare Crea versione.
  2. Selezionare il build completato nell'elenco a discesa evidenziato e selezionare Coda.
  3. Scegliere il collegamento di rilascio nel messaggio pop-up. Ad esempio: "Release Release-1 è stata creata".
  4. Aprire la scheda Log per controllare l'output della console di rilascio.
  5. Nel browser aprire l'URL di uno dei server aggiunti al gruppo di distribuzione. Ad esempio, immettere http://{your-server-ip-address}.
  6. Passare al repository Git di origine e modificare il contenuto dell'intestazione h1 nel file app/views/index.jade con testo modificato.
  7. Effettua il commit della modifica.
  8. Dopo alcuni minuti verrà visualizzata una nuova versione creata nella pagina Versioni di Azure DevOps. Aprire la versione per visualizzare la distribuzione in corso. Congratulazioni!

Risoluzione dei problemi relativi al plug-in Jenkins

Se si verificano bug con i plug-in Jenkins, inviare un problema in Jenkins JIRA per il componente specifico.

Passaggi successivi

In questa esercitazione è stata automatizzata la distribuzione di un'app in Azure usando Jenkins per la compilazione e Azure DevOps Services per il rilascio. Ecco cosa hai imparato a fare:

  • Crea la tua app in Jenkins.
  • Configurare Jenkins per l'integrazione di Azure DevOps Services.
  • Creare un gruppo di distribuzione per le macchine virtuali di Azure.
  • Creare una pipeline di Azure che configura le macchine virtuali e distribuisce l'app.

Per informazioni su come usare Azure Pipelines per i passaggi di compilazione e versione, vedere questa procedura.

Per informazioni su come creare una pipeline CI/CD basata su YAML per la distribuzione nelle macchine virtuali, passare all'esercitazione successiva.