Hoe te Installeren en te Gebruiken Jenkins voor het Bouwen van een CI/CD-Pijplijn

0
385

Voor software bedrijven volgens een agile development proces, het vrijgeven van de software elke dag is een intensief proces. Jenkins is een instrument dat kan de snelheid van uw workflow door het automatiseren van veel voorkomende taken, zoals het bouwen, testen en vrijgeven.

Wat Is Jenkins?

Jenkins werd oorspronkelijk gebouwd om te dienen met een enkel doel—om het automatiseren van het bouwen en testen van nachtelijke software bouwt. Nieuwe commits moeten worden geïntegreerd in de master branch regelmatig (vaak aangeduid als “continuous integration”), die vaak gepaard gaat met zware testen om ervoor te zorgen alles op rolletjes loopt. Doet dat een keer per week is één ding, maar als je het integreren van meerdere keren per dag, het is beter voor iedereen dat het een automatisch proces.

Jenkins en andere CI/CD-oplossingen, zoals het versnellen van dit proces. Je kunt het zien als een geautomatiseerde shell script. Bijvoorbeeld, om een nieuwe release bouwen van een Reageren app, je zou kunnen hebben om te draaien npm installeren, npm uitvoeren bouwen, dan is het uitvoeren van een test suite, zoals de Grap om te controleren of de nieuw te bouwen gaat alle tests. Als het gelukt is, je zou willen om het te verzenden over naar een test-omgeving voor handmatige beoordeling, of gewoon publiceren van een nieuwe release direct. Al deze commando ‘ s kunt u het script vrij gemakkelijk.

Jenkins kan omgaan uitvoeren van al deze taken uit als onderdeel van een pijpleiding. Wanneer Jenkins detecteert veranderingen aan uw source control (zowel op master-of een functie tak), het zal beginnen met de geautomatiseerde pijpleiding, en lopen door elke taak die je hebt gegeven. Sommige taken zijn zo eenvoudig als bash commando ‘ s, andere taken kan een interface met een externe dienst zoals Jira, Git, of uw e-mail provider. Jenkins is ook volledig uitbreidbaar met plug-ins, en echt kan worden gemaakt om te doen wat je wilt.

Jenkins heeft twee grote releases, Blauwe Oceaan, en klassiek. Blue Ocean is meer recent en heeft een gestroomlijnde GEBRUIKERSINTERFACE ervaring dat het maken van pijpleidingen veel gemakkelijker. We zullen het gebruik van de Blauwe Oceaan voor deze handleiding, maar de meeste van dezelfde concepten van toepassing op beide versies van Jenkins.

Het Installeren Van Jenkins

Jenkin binaries zijn beschikbaar voor meerdere besturingssystemen, maar meestal niet van het standaard pakket managers. Als je op Ubuntu, kunt u deze downloaden en installeren met de volgende commando ‘ s:

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/bronnen.lijst.d/jenkins.lijst’
sudo apt-get update
sudo apt-get install jenkins

Om dingen platform onafhankelijke hoewel we Jenkins met Docker, dat is wat Jenkins raadt anyways.

Het Installeren Van De Docker

De Docker is een platform voor het draaien van apps in “containers;” De container bevat alle noodzakelijke dependencies, en zal ervoor zorgen dat de app loopt hetzelfde, ongeacht het besturingssysteem dat je hoeft te doen is het installeren van de Docker is voor uw systeem, en het uitvoeren van een paar commando ‘ s.

Voor Ubuntu, moet u de installatie van een aantal voorwaarden:

sudo apt installeren met apt-vervoer-https ca-certificaten krullen software-eigenschappen-gemeenschappelijke

Voeg vervolgens de Docker de GPG-sleutel:

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

En het toevoegen van de repo zelf:

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

Het vernieuwen van uw bronnen:

apt update

En, ten slotte, installeren Docker van apt:

sudo apt te installeren docker-ce

Docker moet nu worden uitgevoerd op uw systeem, waarmee u kunt controleren met systemctl.

Het Opzetten Van Jenkins

Met Docker draait, kunt u het Koppelvenster container voor Jenkins. U moet eerst een bridged netwerk voor de containers te communiceren op:

docker netwerk maken jenkins

De Docker is inherent efemere—alle gegevens die zijn opgeslagen op containers worden verwijderd wanneer deze containers worden gestopt. Om dit te voorkomen, zult u wilt om gegevens op te slaan op Docker volumes, die zal blijven bestaan tot op de schijf. Je hebt twee delen, één voor sommige TLS-certificaten Jenkins moet verbinding maken met Docker, en het andere voor al uw Jenkins gegevens. Deze zijn gebonden aan de container bij de uitvoering.

docker volume maken jenkins-dokwerker-certs
docker volume maken jenkins-gegevens

Jenkins in feite nodig heeft om te kunnen draaien Docker als onderdeel van de operatie, om de omgevingen te bouwen. Dit is niet mogelijk met de normale Docker, dus om dat te laten functioneren, moet u uitvoeren “Dokwerker in Docker,” of DinD. De volgende opdracht zal uitvoeren Docker de officiële docker:dind container, bind het netwerk en de volumes die u hebt gemaakt in de vorige stappen en publiceren als een service die wordt uitgevoerd op poort 2376 voor de Jenkins container te gebruiken. U bent vrij om deze poort wijzigen als u wilt, maar je zal veranderen in de volgende stap ook.

docker container uitvoeren –naam jenkins-docker –rm –loskoppelen
–bevoorrechte –netwerk jenkins –netwerk-alias docker
–env DOCKER_TLS_CERTDIR=/certs
–volume jenkins-dokwerker-certs:/certs/client
–volume jenkins-gegevens in:/var/jenkins_home
–publiceren 2376:2376 docker:dind

Met die set-up, kunt u de jenkinsci/blueocean container met behulp van de volgende opdracht:

docker container uitvoeren –naam jenkins-blueocean –rm –loskoppelen
–netwerk jenkins –env DOCKER_HOST=tcp://docker:2376
–env DOCKER_CERT_PATH=/certs/client –env DOCKER_TLS_VERIFY=1
–volume jenkins-gegevens in:/var/jenkins_home
–volume jenkins-dokwerker-certs:/certs/opdrachtgever:ro
–publiceren 8080:8080 –publiceren 50000:50000 jenkinsci/blueocean

Dit zal de berg van het netwerk en schijven, stel de DOCKER_HOST variabele naar de poort die DinD wordt uitgevoerd, en het publiceren van de service op poort 8080, die u kunt wijzigen als het niet gratis. (De indeling is gastheer:container.) Ook publiceert Jenkin ‘ s bestuurlijke verbinding op poort 50000, als u van plan bent over het opzetten van een master Jenkins server met meerdere distributed bouwt het zich verbindt.

Zodra Jenkins is up and running, toegankelijk via een browser op poort 8080 van de host computer. Je nodig hebt om een beetje van setup voor Jenkins is volledig bruikbaar, de eerste is de authenticatie van jezelf te bewijzen dat je bent de eigenaar van de server, en niet een bot, het aanvallen van een kwetsbare web interface.

Je vult een wachtwoord opgeslagen in /var/jenkins_home/, die deel uitmaakt van de Docker volume. Om toegang te krijgen tot het, je moet het uitvoeren kat in het Koppelvenster container:

docker container exec -het jenkins-blueocean cat /var/jenkins_home/geheimen/initialAdminPassword

Hiermee wordt het wachtwoord, die u kunt kopiëren en begint de rest van de instelling.

U zult worden gevraagd om te configureren uw gebruikersnaam en wachtwoord in, het installeren van diverse plugins. Het selecteren van “Installeren van Aanbevolen plug-ins” zal gewoon de installatie van een veel van de gemeenschap bevelen die aan de start. U bent altijd vrij om te installeren later meer.

Het creëren van een Pijplijn

Als je eenmaal ingesteld Jenkins, zult u worden begroet met het volgende scherm welkom. Klik op “Maak Een Nieuwe leiding” aan de slag te gaan.

Je zult moeten kiezen waar je de code is opgeslagen. U kunt in uw Github of BitBucket account direct met een sneltoets.

Echter, een betere oplossing is om gewoon kiezen voor generieke ‘Git’. Voer in uw repository-URL, en Jenkins geeft u een openbare sleutel. Omdat Jenkins is in staat om commits (en altijd brengt veranderingen aan pipeline-configuratie), moet u een nieuwe gebruiker van de dienst en het toevoegen van de publieke sleutel.

Jenkins zal een tweede verbinding te maken met Git, dan brengt u naar een pagina waar u kunt bewerken in de pijplijn instellingen. Jenkins winkels van de pipeline-configuratie in een Jenkinsfile, geplaatst in de root van je archief. Wanneer u updates aan de leiding in de editor, Jenkins zal de wijziging doorvoeren aan uw Jenkinsfile.

Elke leiding zal over een aantal fasen, zoals Bouwen, Testen, Implementeren, waarin de afzonderlijke stappen. Deze kunt allerlei dingen, zoals het verzenden van e-mails, interactie met andere diensten zoals Jira en Git, en het coördineren van de stroom van de andere stappen, maar je zult het meest gebruik maken van deze uit te voeren eenvoudige shell scripts. Eventuele fouten in de terugkeer van deze scripts voor zal zorgen dat de pijplijn te mislukken.

Voor het toevoegen van om het even welke stadia, zult u wilt configureren van de instellingen. Meestal gebruik je een Docker container, zoals knooppunt:het laatste.

Voor dit voorbeeld zullen we de bouw van een Node based web app. Gewoon het toevoegen van twee stappen voor npm installeren en npm uitvoeren bouwen is alles dat nodig is. Jenkins zal het uitvoeren van deze commando ‘ s en gaan naar de volgende fase, met het bouwen van artefacten in de plaats. Voor de testfase, het opzetten van een shell-script uit te voeren Jest zal vereisen dat alle tests door te geven voor de te bouwen om succesvol te zijn.

Jenkins kunt meerdere fasen parallel, wat handig is als u nodig hebt om te testen op verschillende platforms. U kunt het opzetten van een “Test op Linux” en “Test op Windows” – fase, en hebben ze uitvoeren op hetzelfde moment, zodat je niet te wachten op ene naar de andere. Als er één uitvalt, de pijplijn nog niet.

Zodra u klaar bent met bewerken, Jenkins zal het automatisch starten van uw pijplijn. Als je daar op klikt voor meer info, kunt u kijken naar de bouw van de vooruitgang door de stadia.

De bovenste balk wordt rood als er een fout is, en groen als alles gelukt is. Als je fouten, kunt u klikken op de overtredende fasen om de console-uitvoer van de commando ‘ s waardoor de pijplijn te mislukken. U zult ook willen om te controleren uw omgeving configuratie om ervoor te zorgen dat alle vereiste tools zijn geïnstalleerd. (U kunt uw eigen Docker container voor je bouwt.)