Come Installare e Utilizzare Jenkins per Costruire un CI/CD Pipeline

0
364

Per le società di software a seguito di un processo di sviluppo agile, rilasciare il software ogni giorno è un processo intensivo. Jenkins è uno strumento che può accelerare il flusso di lavoro, automatizzando molte attività ripetitive, come la creazione, test e rilascio.

Che Cosa È Jenkins?

Jenkins è stato originariamente costruito per servire un unico scopo—per automatizzare la costruzione e la sperimentazione di notte software costruisce. Nuovi depositi devono essere integrati nel branch master regolarmente (spesso definito come “l’integrazione continua”), che spesso comporta pesanti test per assicurarsi che tutto proceda senza intoppi. Facendo una volta a settimana è una cosa, ma quando si sta integrando più volte al giorno, è meglio per tutti che sia un processo automatico.

Jenkins, e altri CI/CD soluzioni come, ad accelerare questo processo. Si può pensare ad esso come un sistema automatizzato di script di shell. Per esempio, il rilascio di una nuova build di Reagire app, potrebbe essere necessario eseguire npm install, npm eseguire build, quindi eseguire un test suite come Scherzo per verificare che la nuova build passa tutti i test. Se è successo, si potrebbe desiderare di inviare in un ambiente di test per la verifica manuale, o semplicemente pubblicare una nuova versione direttamente. Tutti questi sono i comandi che si possono script abbastanza facilmente.

Jenkins in grado di gestire l’esecuzione di tutti questi compiti, come parte di una pipeline. Ogni volta che Jenkins rileva modifiche al controllo del codice sorgente (sia su master o una funzione ramo), inizierà la pipeline automatizzata, e correre attraverso ogni compito che gli avete dato. Alcune attività sono semplici come i comandi bash, altre attività possono interfaccia con un servizio esterno come Jira, Git, o il vostro provider di posta elettronica. Jenkins è anche completamente estensibile tramite plugin, e può davvero essere fatto per fare quello che vorrei.

Jenkins ha due principali versioni, Blu Oceano, e classico. Oceano blu è più recente, e comprende una struttura snella interfaccia utente che rende la creazione di gasdotti molto più facile. Useremo Blu Oceano per questa guida, ma la maggior parte gli stessi concetti si applicano a entrambe le versioni di Jenkins.

L’Installazione Di Jenkins

Jenkin i binari sono disponibili per diversi sistemi operativi, ma di solito non dal default package manager. Se sei su Ubuntu, è possibile scaricare e installare con i seguenti comandi:

wget -q-O – https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add –
sudo sh -c ‘echo deb https://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.elenco.d/jenkins.elenco
sudo apt-get update
sudo apt-get install jenkins

Per fare le cose, indipendente dalla piattaforma, però, faremo eseguire Jenkins utilizzando la finestra Mobile, che è quello che Jenkins consiglia comunque.

L’Installazione Di Finestra Mobile

Mobile è una piattaforma per l’esecuzione di applicazioni in “contenitori;” Il contenitore include tutte le dipendenze necessarie, e di garantire l’applicazione viene eseguita la stessa indipendentemente dal sistema operativo di base—tutto quello che dovete fare è installare finestra Mobile per il vostro sistema, e consente di eseguire alcuni comandi.

Per Ubuntu, devi installare alcuni prerequisiti:

sudo apt install apt-trasporto-https ca-certificates curl software-properties-comune

Quindi aggiungere Mobile GPG key:

curl-fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add –

E aggiungere il repo stesso:

sudo add-apt-repository “deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stabile”

Aggiornamento delle fonti:

apt update

E, infine, installare Pannello da apt:

sudo apt install mobile-ce

Mobile dovrebbe ora essere in esecuzione sul sistema, che si può controllare con systemctl.

L’Impostazione Di Jenkins

Con la finestra Mobile, è possibile impostare la finestra Mobile contenitore per Jenkins. Prima avrai bisogno di un bridge di rete per i contenitori per comunicare su:

la finestra mobile di rete creare jenkins

Docker è intrinsecamente temporanea, tutti i dati memorizzati sui contenitori verranno eliminati quando i contenitori sono fermato. Per evitare questo, si desidera memorizzare i dati su Mobile dei volumi, che persistono a disco. Avrete bisogno di due volumi, uno per alcuni TLS certs Jenkins ha la necessità di connettersi con la finestra Mobile, e l’altra per tutti i tuoi Jenkins dati. Questi saranno legati al contenitore in fase di runtime.

finestra mobile, volume di creare jenkins-mobile-certs
finestra mobile, volume di creare jenkins-dati

Jenkins in realtà deve essere in grado di eseguire Mobile come parte del suo funzionamento, impostare il costruire ambienti. Questo non è possibile con la normale finestra Mobile, così, per fare che funzioni correttamente, è necessario eseguire “finestra Mobile Mobile” o DinD. Il seguente comando verrà eseguito Mobile ufficiale di mobile:d in contenitore, associare la rete e i volumi si è creato nei passaggi precedenti, e di pubblicare il servizio è in esecuzione sulla porta 2376 per la Jenkins contenitore da usare. Sei libero di cambiare questa porta, se si vuole, anche se dovrai cambiare nella prossima fase.

mobile contenitore esegui –nome jenkins-mobile –rm –detach
–privilegiato –rete jenkins –rete-alias mobile
–env DOCKER_TLS_CERTDIR=/certs
–volume jenkins-mobile-cert:/certs/client
–volume jenkins-data:/var/jenkins_home
–pubblicare 2376:2376 mobile:d

Con quel set-up, è possibile eseguire il jenkinsci/blueocean contenitore utilizzando il seguente comando:

mobile contenitore esegui –nome jenkins-blueocean –rm –detach
–rete jenkins –env DOCKER_HOST=tcp://mobile:2376
–env DOCKER_CERT_PATH=/certs/client –env DOCKER_TLS_VERIFY=1
–volume jenkins-data:/var/jenkins_home
–volume jenkins-mobile-cert:/certs/client:ro
–pubblicare 8080:8080 –pubblicare 50000:50000 jenkinsci/blueocean

Questo monterà la rete e le unità, impostare il DOCKER_HOST variabile per la porta che D è in esecuzione, e di pubblicare il servizio sulla porta 8080, che si può cambiare se non è libero. (Il formato è host:contenitore.) Pubblica, inoltre, Jenkin amministrativa della connessione sulla porta 50000, se si sta pianificando l’impostazione di un master Jenkins server con più distribuito costruisce la connessione.

Una volta Jenkins è fino e in esecuzione, sarà accessibile tramite un browser sulla porta 8080 della macchina host. Avrai bisogno di fare un po ‘ di setup prima di Jenkins è pienamente utilizzabile, il primo dei quali è autenticarsi per dimostrare che sei il proprietario del server, e non un bot attaccare un vulnerabili interfaccia web.

Avrete bisogno di inserire una password memorizzata in /var/jenkins_home/, che è parte della finestra Mobile di volume. Per ottenere l’accesso, dovrete eseguire il gatto all’interno della finestra Mobile contenitore:

mobile contenitore exec -si jenkins-blueocean cat /var/jenkins_home/segreti/initialAdminPassword

Questa opzione consente di stampare la password, che è possibile copiare e iniziare l’installazione.

Ti verrà chiesto di configurare il vostro nome utente e password amministratore, installare i vari plugin. Selezionando “Install Raccomandato Plugins” sarà solo installare un sacco di comunità di quelle consigliate per iniziare. Sei sempre libero di installare più tardi.

La creazione di una tubazione

Una volta impostato Jenkins, sarete accolti con la seguente schermata di benvenuto. Fare clic su “Crea Un Nuovo Gasdotto” per iniziare.

Dovrete selezionare la posizione in cui il codice è stato memorizzato. Puoi collegare il tuo Github o BitBucket conto direttamente con una chiave di accesso.

Tuttavia, una soluzione migliore è semplicemente scegliere generico “Git”. Inserire il tuo URL repository, e Jenkins vi darà una chiave pubblica. Perché Jenkins è in grado di fare i commit (e sempre il commit delle modifiche alla configurazione di pipeline), si deve creare un nuovo utente del servizio e aggiungere la chiave pubblica ad esso.

Jenkins avrà una seconda per la connessione a Git, quindi porterà ad una pagina dove è possibile modificare le impostazioni di pipeline. Jenkins memorizza tutte le pipeline di configurazione in un Jenkinsfile, posto alla radice del repository. Ogni volta che si fa gli aggiornamenti cantiere editor, Jenkins sarà il commit della modifica al tuo Jenkinsfile.

Ogni pipeline avrà un paio di fasi distinte, come Build, Test, o Distribuire, che conterranno i singoli passaggi. Questi può fare ogni sorta di cose, come l’invio di e-mail, interagire con altri servizi come Jira e Git, e di coordinare il flusso di altri passaggi, ma è più comunemente utilizzare questi per eseguire semplici script di shell. Eventuali errori nel ritorno di questi script causerà la pipeline a fallire.

Prima di aggiungere eventuali fasi, è necessario configurare le impostazioni di ambiente. Di solito, si utilizzerà un Mobile contenitore, come nodo:più recenti.

Per questo esempio, creare un Nodo di base di web app. La semplice aggiunta di due passaggi per npm install e npm eseguire build è tutto ciò che è necessario. Jenkins esegue questi comandi e passare alla fase successiva, con la generazione di artefatti luogo. Per la fase di test, l’impostazione di uno script di shell per eseguire Scherzo richiedono che tutte le prove da superare per la generazione di un essere di successo.

Jenkins in grado di eseguire diverse fasi in parallelo, il che è utile se avete bisogno di testare su più piattaforme diverse. È possibile impostare un “Test su Linux” e “Test su Windows” stadio, e la loro esecuzione, allo stesso tempo, in modo che non sono in attesa di cominciare ad altri. Se uno non riesce, il gasdotto ancora esito negativo.

Una volta completata la modifica, Jenkins sarà avvia automaticamente la pipeline. Se si fa clic su di esso per ulteriori informazioni, è possibile guardare il costruire il progresso attraverso le fasi.

Per la barra diventa rossa se c’è un errore, e il verde se tutto ciò che è successo. Se si sta eseguendo in errori, è possibile fare clic sul offendere fasi per visualizzare l’output della console dei comandi causando la pipeline a fallire. Potrai anche voler controllare il vostro ambiente di configurazione per assicurarsi che tutti gli strumenti necessari sono installati. (Si consiglia di impostare il proprio Mobile contenitore per la vostra build.)