Automatiseret deployment med Jenkins
Opret en CI/CD-pipeline i Jenkins til at udrulle jeres Docker-containere til et målmiljø.
Automatiseret deployment med Jenkins er en gratis Intensiv DevOps-uddannelse-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Intensiv DevOps-uddannelse, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Intensiv DevOps-uddannelse-kurset indeholder 4 lektioner i alt.
Introduktion til automatiseret udrulning
Velkommen til den sidste lektion om CI/CD med Jenkins og Docker! I dag fokuserer vi på at automatisere udrulningen af dine Docker-containere.
Automatiseret udrulning er processen med at frigive software til produktions- eller testmiljøer uden manuel indgriben. Det er en vigtig del af Continuous Delivery and Deployment, fordi det sikrer hastighed, ensartethed og pålidelighed.

Hvorfor automatisere udrulning?
Manuel udrulning af applikationer kan være langsom, fejlbehæftet og uensartet. Automatisering håndterer disse udfordringer:
- Hastighed: Udrul nye funktioner eller rettelser hurtigt.
- Pålidelighed: Reducér menneskelige fejl med standardiserede processer.
- Ensartethed: Sørg for, at hver udrulning følger de samme trin.
- Effektivitet: Frigør udviklere, så de kan fokusere på kodning i stedet for udrulningsopgaver.
Udrulningspipelinens faser
En typisk Jenkins-pipeline til Docker-udrulning består af flere vigtige faser:
- Byg: Byg Docker-afbildningen (gennemgået i tidligere lektioner).
- Test: Kør automatiserede test mod afbildningen.
- Push: Push afbildningen til et Docker-register.
- Udrul: Hent afbildningen fra registret, og kør den på en målserver.
- Bekræft: Bekræft, at den nye udrulning fungerer korrekt.
I dag fokuserer vi på faserne 'Udrul' og 'Bekræft'.
Konfiguration af målmiljøet
Før Jenkins kan udrulle, skal din målserver være klar. Det betyder typisk:
- Docker installeret: Målserveren skal have Docker Engine installeret.
- SSH-adgang: Jenkins skal have sikker Shell-adgang (SSH) til målserveren.
- Brugertilladelser: SSH-brugeren skal have tilladelse til at køre Docker-kommandoer.
Vi administrerer normalt SSH-legitimationsoplysninger sikkert i Jenkins.
Jenkins-legitimationsoplysninger til SSH
Jenkins bruger SSH-legitimationsoplysninger til at oprette forbindelse til en fjernserver. Det er typisk par bestående af et SSH-brugernavn og en privat nøgle, som gemmes sikkert i Jenkins' legitimationsoplysningsadministrator.
Når du definerer en pipeline, kan du angive, at Jenkins skal bruge disse legitimationsoplysninger i bestemte faser, så Jenkins kan udføre kommandoer på din målserver.
Eksempel på et grundlæggende udrulningsscript
Her er et simpelt shell-script, der kan udføres på en målserver for at opdatere en Docker-container. Det stopper den gamle container, fjerner den, henter den nye afbildning og starter den.
APP_NAME og IMAGE_NAME ville blive videregivet som miljøvariabler.
#!/bin/bash
# Stop and remove existing container
docker stop ${APP_NAME} || true
docker rm ${APP_NAME} || true
# Pull the new Docker image
docker pull ${IMAGE_NAME}
# Run the new container
docker run -d --name ${APP_NAME} -p 80:80 ${IMAGE_NAME}
echo "Deployment of ${APP_NAME} complete!"Integration med Jenkins-pipeline
I en Jenkinsfile kan du bruge plugin'et sshPublisher eller et simpelt sh-trin med videresendelse af SSH-agenten til at udføre kommandoer på en fjernvært. Sådan kunne en udrulningsfase se ud med et grundlæggende sh-trin, hvis SSH er konfigureret.
agent { label 'remote-deploy-host' } betyder, at denne fase kører på målserveren.
stage('Deploy to Production') {
agent { label 'remote-deploy-host' }
steps {
withEnv([
"APP_NAME=my-webapp",
"IMAGE_NAME=myregistry/my-webapp:latest"
]) {
sh '''
docker stop ${APP_NAME} || true
docker rm ${APP_NAME} || true
docker pull ${IMAGE_NAME}
docker run -d --name ${APP_NAME} -p 80:80 ${IMAGE_NAME}
echo "Deployment successful!"
'''
}
}
}Opnåelse af løbende opdateringer
Ved udrulninger uden nedetid er det ikke nok blot at stoppe og starte. Du ville typisk bruge en strategi som:
- Løbende opdatering: Erstat gradvist gamle containere med nye, én ad gangen, så tjenesten forbliver tilgængelig.
- Blue/green-udrulning: Udrul den nye version (Green) sammen med den gamle (Blue), og skift derefter trafikken.
Jenkins kan orkestrere dette, men værktøjer som Docker Swarm eller Kubernetes tilbyder indbygget understøttelse af mere avancerede strategier.
Bekræftelse af udrulningen
Efter udrulningen er det vigtigt at bekræfte, at applikationen kører korrekt. Det kan omfatte:
- Sundhedstjek: Enkle HTTP GET-anmodninger til applikationens sundhedsendepunkt.
- Logovervågning: Kontrollér containerloggene for fejl.
- Integrationstest: Kør et hurtigt sæt test mod den nyudrullede version.
Din Jenkins-pipeline kan indeholde en fase med navnet 'Bekræft' for at automatisere disse kontroller.
Test din viden
Se på følgende Jenkinsfile-udsnit for en udrulningsfase. Hvad er det primære formål med docker stop ${APP_NAME} || true?
Opsummering: Automatiseret udrulning
Godt gået! Du har lært, hvordan du kan arbejde med automatiseret udrulning ved hjælp af Jenkins og Docker.
- Automatiseret udrulning sikrer hurtige, pålidelige og ensartede frigivelser.
- Målmiljøer skal have Docker og SSH-adgang.
- Jenkins bruger sikre legitimationsoplysninger til at oprette forbindelse til fjernservere.
- Udrulningsscript stopper typisk gamle containere, henter nye afbildninger og starter nye containere.
- Bekræftelsestrin er afgørende for at bekræfte, at udrulningen lykkedes.
Det afslutter vores CI/CD-kursus med Jenkins og Docker. Bliv ved med at øve dig, så du kan mestre disse effektive værktøjer!
Lær Intensiv DevOps-uddannelse med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 142
- Lektioner
- 568
Ofte stillede spørgsmål
Er lektionen “Automatiseret deployment med Jenkins” gratis?
Ja — alle 3 lektioner i læringssporet Intensiv DevOps-uddannelse, inklusive “Automatiseret deployment med Jenkins”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Intensiv DevOps-uddannelse-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Automatiseret deployment med Jenkins”?
Opret en CI/CD-pipeline i Jenkins til at udrulle jeres Docker-containere til et målmiljø. Du øver dig i Intensiv DevOps-uddannelse med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Intensiv DevOps-uddannelse?
Der kræves ingen tidligere erfaring. Intensiv DevOps-uddannelse på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.
Hvor lang tid tager lektionen “Automatiseret deployment med Jenkins”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Intensiv DevOps-uddannelse-lektion?
Ja. Alle Intensiv DevOps-uddannelse-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Introduktion til Jenkins
- Bygning af Docker-images med Jenkins
- Automatiseret deployment med Jenkins
- Jenkins Pipeline as Code med Jenkinsfile