Het bouwen en implementeren van een applicatie kan een moeilijke taak zijn. Waarom geen gebruik maken van een Jenkins Build Job om het hele proces te automatiseren? Jij richt je op het bouwen terwijl Jenkins de code-implementatie afhandelt.
In deze handleiding leer je hoe je je code-implementatie automatiseert met Jenkins om tijd te besparen, zodat je je tegelijkertijd op andere taken kunt concentreren.
Klaar? Tijd om erin te duiken!
Vereisten
Deze handleiding bevat praktijkdemonstraties. Als je wilt meedoen, zorg er dan voor dat je het volgende hebt:
- Een Ubuntu-systeem – Deze handleiding maakt gebruik van Ubuntu 20.04 voor de demonstraties
- A GitHub account
- OpenJDK-versie 1.8.0_292
- Jenkins-versie 2.303.1
- Node.js-versie 14.17.6
- Fork deze GitHub-repository – Na het forkken, noteer de URL van de GitHub-repository, want je hebt deze later nodig.
Hoewel het opslagplaats dat wordt getoond in de onderstaande schermafbeeldingen enigszins verschilt van degene hierboven gelinkt, zal je, eenmaal geforkt, ook een andere opslagplaats-URL gebruiken.
Creëren van een Jenkins Build-taak
Jenkins is een open-source automatiseringsserver die helpt bij de automatisering van een softwareontwikkelingslevenscyclus. Deze levenscyclus omvat het bouwen, testen en implementeren, wat continuïteit in integratie en continue levering mogelijk maakt.
In deze demonstratie loop je door hoe je een Jenkins-buildtaak kunt maken. Een buildtaak is doorgaans een configuratie voor het autonoom uitvoeren van taken voor het bouwen/pakketteren van software.
- Start je favoriete browser, ga naar http://localhost:8080/ en log in op je Jenkins-dashboard. Poort
8080
is de standaard poort om toegang te krijgen tot het Jenkins-dashboard.
2. Op het Dashboard van Jenkins, klik op de knop Nieuw item in het linkerpaneel om het maken van een buildtaak te starten. Hierdoor wordt de browser omgeleid naar een nieuwe paginavoor de taak.

3. Voer vervolgens een projectnaam in die je verkiest voor de buildtaak in het invoerveld hieronder. Voor dit voorbeeld is de projectnaam webDeploy.
Selecteer de optie Freestyle project om het maken van taken mogelijk te maken, post-build acties te scripten en project build triggers te configureren, klik vervolgens op OK. U wordt doorgestuurd naar de pagina voor het configureren van de taak die u in de volgende stap zult zien.

4. Klik op het tabblad Algemeen en vink het vakje GitHub-project aan om een broncodebeheerder te koppelen, zodat Jenkins weet waar uw code moet worden opgehaald. Deze demo gebruikt Git als de broncodebeheerder voor het voorbeeldproject dat wordt gehost op GitHub en dat u eerder heeft geforkt. Plak de GitHub-repository-URL van uw GitHub-account in het veld Project-URL hieronder.

5. Klik tot slot op het tabblad Broncodebeheer en selecteer vervolgens Git, dat uw broncodebeheerder is.
Kopieer en plak deze GitHub-repository-URL (https://github.com/Claradev32/webDeploy.git) in het invoerveld. Klik op de knop Opslaan om uw huidige configuraties op te slaan.

Referenties maken voor een Jenkins-project
Mogelijk geeft u er de voorkeur aan om uw repository privé te houden, wat gebruikelijk is voor klantprojecten. Zo ja, dan moet u referenties maken om Jenkins te autoriseren om uw project van GitHub te klonen.
Om referenties voor uw Jenkins-project te maken, moet u eerst een SSH-sleutel genereren en toevoegen aan uw GitHub-account:
1. Open je Ubuntu-terminal en voer de onderstaande opdracht uit om een SSH-sleutel te genereren met ed25519
als het sleuteltype. Vervang [email protected]
door je GitHub e-mailadres om het als een opmerking aan de gegenereerde SSH-sleutel toe te voegen.
2. Sla je publieke SSH-sleutel op met het volgende:
- Specificeer een locatie om de SSH-sleutel op te slaan en druk op Enter. Als je dit niet doet, wordt de SSH-sleutel opgeslagen op de standaardlocatie, zoals hieronder weergegeven.
- Voer een veilig wachtwoord in voor de SSH-sleutel, druk op Enter om het wachtwoord te bevestigen, en je ziet de uitvoer van je publieke SSH-sleutel.
- Houd de locatie van je gegenereerde SSH-sleutel bij, want je voegt deze toe aan je GitHub-account in de volgende stappen.

3. Meld je aan bij GitHub in je webbrowser en ga naar je Accountinstellingenpagina.
4. Klik op de link SSH en GPG-sleutels aan de linkerkant en klik vervolgens op Nieuwe SSH-sleutel, zoals hieronder weergegeven, om je nieuwe SSH-sleutel te configureren.

5. Voer ten slotte je gewenste titel voor de SSH-sleutel in. De titel is alleen voor interne documentatiedoeleinden. Plak je SSH-sleutel, vanuit het eerder opgeslagen bestand, in het invoerveld Sleutel en klik op Sleutel toevoegen om de sleutel op te slaan.
Onthoud dat dit je publieke sleutel is en niet je privésleutel!

Toevoegen van SSH-privésleutel aan Jenkins Referenties
Nu je je SSH-sleutelpaar hebt aangemaakt om te gebruiken als Jenkins-verificatie, moet je ook je SSH-privésleutel toevoegen aan je Jenkins-verificatie om Jenkins toegang te verlenen tot je GitHub-repository. Maar eerst, noteer de SSH-URL van je GitHub-repository.
1. Ga naar de pagina van je GitHub-repository, klik op Code → SSH en klik op het kopieericoon hieronder om de SSH-URL naar het klembord te kopiëren.

2. Ga vervolgens naar je Jenkins-dashboard, klik dan op Beheer Jenkins om toegang te krijgen tot de instellingenpagina van je project.

3. Scroll naar beneden en klik vervolgens op de Beheer Credentials-optie onder de Beveiliging-sectie om de lijst met Jenkins-verificaties te bekijken.

4. Klik op Jenkins op de Credentials-pagina hieronder om toegang te krijgen tot de “System”-pagina waar je nieuwe verificaties kunt toevoegen.

5. Nu, op de System-pagina, zweef met je muis over de optie Global credentials (onbeperkt) om het vervolgkeuzemenu weer te geven en klik op het pijl-omlaag-icoon.
Klik op Verificaties toevoegen in het vervolgkeuzemenu. De pagina wordt omgeleid naar een formulier waar je de nieuwe verificaties configureert, zoals getoond in de volgende stap.

6. Selecteer SSH-gebruikersnaam met privésleutel op het eerste invoerveld en voer een projectgebruikersnaam in het Gebruikersnaam-veld in. Voor dit voorbeeld is de gebruikersnaam CI/CD.
In dit geval is de gebruikersnaam puur interne documentatie en wordt niet gebruikt voor authenticatie.

7. Voer de onderstaande opdracht uit om je SSH-privésleutel te bekijken, wijzig de locatie naar waar je sleutel is opgeslagen, zoals hieronder getoond (de sleutel hieronder bevindt zich in de thuismap). Noteer je SSH-privésleutel, want je zult deze toevoegen aan je Jenkins referenties in de volgende stap.

8. Zodra je je SSH-privésleutel hebt genoteerd, ga terug naar de Globale referenties (onbeperkt) pagina.
Voer het wachtwoord in dat je hebt ingesteld in de sectie “Referenties maken voor een Jenkins-project” (stap twee) in het invoerveld Passphrase in en klik op OK. Hiermee autoriseer je Jenkins toegang tot je GitHub-opslagplaats.
Als je geen wachtwoord hebt toegevoegd bij het maken van de SSH-sleutel, klik dan op Direct invoeren en klik op de knop Toevoegen. Voer je SSH-privésleutel in het invoerveld Key in, zoals hieronder getoond, en druk op de knop OK om de referenties op te slaan.

8. Ga terug naar je Jenkins-dashboard, beweeg je muis over je project en klik op het pijlicoontje omlaag, kies vervolgens Configureren, zoals hieronder getoond. De pagina wordt omgeleid naar de configuratiepagina van je project.

10. Tenslotte, selecteer de inloggegevens gebruikersnaam in het vervolgkeuzemenuveld (van stap zes van de sectie “Geheime sleutel toevoegen aan Jenkins-inloggegevens”). Jenkins past standaard het CID-principe toe om de continue integratie en implementatie van uw project te waarborgen.

Configuratie van Build-triggers en Post-Build-acties
Je hebt nu succesvol het skelet van een buildtaak gemaakt. Maar als je regelmatig wijzigingen aanbrengt in je project, moet je dan telkens handmatig opnieuw implementeren? Waarom stel je geen build-triggers in? Build-triggers implementeren automatisch wijzigingen in je project die naar GitHub zijn gepusht opnieuw.
1. Op de configuratiepagina van je project, klik op het Tabblad Build-triggers, en vink de optie GitHub-hook trigger voor GITScm-polling aan. Deze optie maakt het mogelijk om de wijzigingen in je project automatisch opnieuw te implementeren.

2. Klik op het Tabblad Build, klik op Build-stap toevoegen, en selecteer Shell uitvoeren om een script te maken dat wordt uitgevoerd telkens wanneer Jenkins een nieuwe versie van je code downloadt.

Het shell-script dat je maakt, is afhankelijk van je ontwikkelomgeving. Als je op Windows werkt, zal Windows het script uitvoeren; hetzelfde geldt voor andere besturingssystemen.
3. Typ de onderstaande shell-opdrachten in, en klik op Opslaan om het buildscript op te slaan. Nadat je de wijzigingen hebt opgeslagen, wordt de pagina teruggeleid naar het dashboard van je project.
De onderstaande commando’s halen je code op (pull
) van je broncode-remote locatie (origin master
) en met NodeJS NPM install (npm install
) worden de benodigde afhankelijkheden geïnstalleerd om je project uit te voeren. De commando’s worden uitgevoerd telkens wanneer je een push-verzoek doet naar je broncode-beheerder.
Dit specifieke project maakt gebruik van NodeJS voor afhankelijkheden, maar jouw specifieke project misschien niet.

4. Ga nu naar het dashboard van je project en klik op Build nu om de build uit te voeren.

5. Scroll naar beneden naar de buildgeschiedenis om de status van de build te zien. Als de build succesvol was, zie je een vergelijkbare uitvoer als op de onderstaande schermafbeelding.

Als de build mislukt, zie je de onderstaande uitvoer.

6. Scroll vervolgens omhoog en klik op Configureren om de post-buildacties van het project te configureren.

7. Klik op het tabblad Post Build Actions, klik dan op Post-buildactie toevoegen en kies Git-publisher. De pagina breidt de instellingen voor de Git Publisher uit (volgende stap).

8. Schakel tot slot de optie Alleen pushen bij succesvolle build in en klik op de knop Opslaan om de wijzigingen op te slaan. Door deze optie in te schakelen, vertel je Jenkins om de code alleen te implementeren wanneer een build succesvol is uitgevoerd.

Conclusie
In deze tutorial heb je het proces doorlopen om Jenkins te verbinden met je versiebeheersysteem. Je hebt ook een build-script gemaakt dat automatisch wordt uitgevoerd wanneer Jenkins een nieuwe versie van je code downloadt en build-triggers opgezet om web-implementaties te automatiseren.
Waarom bespaar je nu niet wat tijd door de implementatie van je applicatie te automatiseren met een Jenkins-buildtaak?