CI/CD-pipeline-vejledning med eksempel
โก Smart opsummering
CI/CD-pipeline er den automatiserede proces, der fรธrer en kodeรฆndring fra commit til produktion. Den bygger, tester og implementerer software gennem fire faser โ Source, Build, Test og Deploy โ hvilket reducerer manuelle fejl og forkorter lรธkken mellem udviklere og slutbrugere.

Hvad er en CI/CD-pipeline?
A CI/CD pipeline automatiserer den vej, som en kodeรฆndring tager fra en udviklers commit til en implementeret udgivelse. Den bygger koden, kรธrer testpakken og promoverer den binรฆre fil sikkert til et eller flere miljรธer. En veldesignet pipeline reducerer manuelle fejl, returnerer hurtig feedback til udviklere og muliggรธr smรฅ, hyppige produktiterationer.
Pipelinen forbinder automatisering og lรธbende overvรฅgning pรฅ tvรฆrs af hele softwarens livscyklus โ fra integration og test til levering og implementering. De forbundne praksisser kaldes samlet set en CI/CD-pipeline.
Hvad er Kontinuerlig Integration, Kontinuerlig Levering og Kontinuerlig Deployment?
- Kontinuerlig integration (CI): en udviklingspraksis, hvor teammedlemmer integrerer deres arbejde mindst รฉn gang om dagen. Hver integration verificeres af en automatiseret build og testkรธrsel, der hurtigt afslรธrer fejl.
- Kontinuerlig levering (CD): en ingeniรธrpraksis, hvor teamet holder produktet klar til udgivelse ved afslutningen af โโhver iteration. Implementeringen til produktion er typisk en manuel godkendelse.
- Kontinuerlig implementering (CD): tager Continuous Delivery et skridt videre โ enhver รฆndring, der bestรฅr automatiserede kontroller, implementeres automatisk i produktionen uden en menneskelig gateway.
Faser i en CI/CD-pipeline
En CI/CD-pipeline er en eksekverbar specifikation af de trin, der krรฆves for at levere en ny version af softwaren. En fejl pรฅ et hvilket som helst tidspunkt udlรธser en notifikation โ via e-mail, Slack, eller en anden kanal โ sรฅ den ansvarlige tekniker straks bliver advaret.
Faser i en CI/CD-pipeline.
Kildestadie
Pipelinen udlรธses af en รฆndring i kodelageret. Enhver commit giver CI/CD-vรฆrktรธjet besked om at kรธre den matchende pipeline. Andre almindelige udlรธsere omfatter brugerinitierede arbejdsgange, planlagte kรธrsler og resultaterne af upstream-pipelines.
Byggestadie
Byggefasen kompilerer kildekoden og omdanner dens afhรฆngigheder til et kรธrbart artefakt. Kompilerede sprog som f.eks. C++, Java, C og Go skal producere binรฆre filer her. Fortolkede sprog som f.eks. JavaScript, Python, og Ruby drager stadig fordel af denne fase til at pakke afhรฆngigheder, lint og producere containerbilleder.
En fejl i byggefasen indikerer normalt en grundlรฆggende projektfejlkonfiguration, sรฅ problemet skal lรธses med det samme.
Teststadie
Testfasen udfรธrer den automatiserede testsuite for at validere kodens korrekthed og softwarens adfรฆrd. Den fanger let reproducerbare fejl, fรธr de nรฅr kunderne. Det er udviklerens ansvar at skrive og vedligeholde testene โ pipelinen hรฅndhรฆver kun, at de kรธrer.
Implementer Stage
Implementeringsfasen flytter den verificerede artefakt til et mรฅlmiljรธ, sรฅsom staging, UAT eller produktion. Nรฅr buildet har bestรฅet alle nรธdvendige test, kan implementeringen udlรธses automatisk (kontinuerlig implementering) eller efter en manuel gate (kontinuerlig levering).
Eksempel pรฅ en CI/CD-pipeline
Gennemgangen nedenfor viser en betonpipeline, der bruger GitHub, CircleCI, og AWS.
- Kilde Code Kontrol: Host applikationskoden i et privat GitHub-lager, sรฅ den integreres med build-, scan- og deployeringstjenester.
- Kontinuerlig integration: connect CircleCI til repository'et, sรฅ hvert push henter den nye kode, bygger den og udfรธrer testsuiten.
- Implementer til UAT: konfigurere CircleCI at implementere succesfulde builds i et AWS UAT-miljรธ til interessenttestning.
- Implementer til produktion: Genbrug de samme CI/CD-trin til at bringe artefakten til produktion, reguleret af manuel godkendelse, hvis du praktiserer kontinuerlig levering.
Bedste praksis for CI/CD-pipeline
Fremgangsmรฅderne nedenfor sikrer, at pipelines er hurtige, pรฅlidelige og har teamet tillid til:
- Dokumentรฉr den nuvรฆrende leveringsproces, fรธr du automatiserer, sรฅ du ved, hvad du skal beholde, รฆndre eller fjerne.
- Start med et lille proof of concept i stedet for at automatisere hele pipelinen pรฅ รฉn gang.
- Strukturer pipelinen i flere faser, sรฅ hurtigt, at grundlรฆggende kontroller kรธrer fรธrst.
- Start alle arbejdsgange fra et rent, isoleret miljรธ for at holde builds reproducerbare.
- Tilfรธj open source-vรฆrktรธjer, der dรฆkker alt fra kodestil til sikkerhedsscanning.
- Brug en kodekvalitetshub, der kรธrer de samme tests mod alle brancher.
- Udfรธr en fagfรฆllebedรธmmelse af alle pull-anmodninger, og behandl pipeline-outputtet som en del af gennemgangen.
- Definer succesmรฅlinger, fรธr du begynder overgangen โ de driver lรธbende forbedringer.
Fordele ved CI/CD-rรธrledninger
En moden CI/CD-pipeline leverer adskillige mรฅlbare fordele:
- Erstatter fejlbehรฆftede manuelle builds og releases med pรฅlidelig automatisering.
- Forbedrer ensartetheden og kvaliteten af โโhver eneste forsendte artefakt.
- รger fleksibiliteten โ ny funktionalitet kan leveres efter behov.
- Strรธmliner kommunikationen mellem udviklere, QA og drift.
- Accelererer kundefeedback-loops med hyppige udgivelser.
- รger produktets synlighed via dashboards, logs og notifikationer.
- Fjerner manuelle fejl og reducerer udgivelsesomkostninger.
- Forkorter softwareudviklingens livscyklus.
- Giver en hurtig feedback-loop fra udvikler til slutbruger.
- Fremhรฆver รฆndringer, der รธdelรฆgger buildet, sรฅ de hurtigt kan fortrydes.
- Kombinerer automatiserede tests med let manuel udforskende testning for at holde kvaliteten hรธj.
Vigtige CI/CD-vรฆrktรธjer
Moderne teams vรฆlger fra et sundt รธkosystem af CI/CD-vรฆrktรธjer. De mest anvendte er beskrevet nedenfor.
1) Jenkins
Jenkins er en open source-server med kontinuerlig integration, der automatiserer arbejdsgange til opbygning, test og udgivelse. Skrevet i Java og understรธttet af et stort plugin-รธkosystem, Jenkins forsyner hundredtusindvis af installationer verden over med strรธm.
Funktioner:
- Bygger og tester kode mange gange om dagen.
- Automatiserer hele bygge-/testpipelinen, hvilket sparer tid og reducerer fejl.
- Implementerer kode efter hver vellykket build og test.
- Fremskynder udviklingscyklussen gennem hurtig feedback.
Forbindelse: https://www.jenkins.io/download/
2) Bamboo
Bamboo er en build-server med kontinuerlig integration, der samler automatisk build, test og release i รฉt enkelt vรฆrktรธj. Den integreres problemfrit med Jira Software og Bitbucket.
Funktioner:
- Kรธrer parallelle batchtests.
- Hurtig at installere og konfigurere.
- Tilladelser pr. miljรธ giver udviklere og QA mulighed for at implementere i deres egne miljรธer.
- Indbyggede Git-forgreningsarbejdsgange, der automatisk fletter forgreninger.
Forbindelse: https://www.atlassian.com/software/bamboo
3) CircleCI
CircleCI er et fleksibelt CI-vรฆrktรธj, der kรธrer builds til mobilapps pรฅ tvรฆrs af platforme, Python API'er, Docker-klynger og mere. Det reducerer fejl og forbedrer applikationskvaliteten gennem hurtig feedback.
Funktioner:
- Valg af byggemiljรธer.
- Understรธtter mange sprog, herunder C++, JavaScript, .NET, PHP, Python, og Ruby.
- Docker-understรธttelse af brugerdefinerede build-billeder.
- Annullerer automatisk kรธ- eller kรธrende builds, nรฅr et nyere build udlรธses.
Forbindelse: https://circleci.com/
4) GitHub-handlinger, GitLab CI og Argo CD
GitHub Actions og GitLab CI integrerer CI/CD direkte i kildekontrolplatformen, hvilket fjerner behovet for en ekstern byggeserver. Argo CD tilfรธjer kontinuerlig implementering i GitOps-stil til Kubernetes-klynger og afstemmer klyngen til den รธnskede tilstand, der er deklareret i Git.
Hvorfor betyder CI/CD-pipeline noget for it-ledere?
- Forbedrer udgivelsens pรฅlidelighed og forudsigelighed.
- Gรธr ingeniรธrorganisationen mere tilbรธjelig tiltractiv for udviklere.
- Henter kode fra versionskontrol og udfรธrer build'en med et enkelt klik.
- Flytter binรฆre filer sikkert til mรฅlmiljรธer.
- Lader projektledere administrere miljรธvariabler og konfiguration pr. miljรธ.
- Publicerer applikationskomponenter til web, database, API og andre tjenester.
- Viser logdata og advarsler om status for hver udgivelse.
- Verificerer kodeรฆndringer, fรธr de fortsรฆtter, hvilket reducerer produktionsfejl.
CI/CD-pipeline-KPI'er
- Cyklus eller implementeringstid: den tid det tager at gรฅ fra byggeproces til produktion. Tendenser afslรธrer flaskehalse i din leveringsproces.
- Implementeringsfrekvens: hvor ofte I sender. Hyppigere, mindre udgivelser reducerer risikoen og gรธr det nemmere at udbedre fejl.
- Skift leveringstid: tiden fra udviklingsstart til en vellykket implementering. Afspejler hvor godt planlรฆgning, kodning og levering fungerer sammen.
- Skift fejlfrekvens: procentdelen af โโimplementeringer, der forรฅrsager hรฆndelser eller krรฆver tilbagerulning. Tracrรธrledningens sikkerhed.
- MTTR (gennemsnitlig tid til restitution): Den gennemsnitlige tid til at genoprette tjenesten efter en fejl. Mรฅler robusthed.
- MTTF (gennemsnitlig tid til fejl): den gennemsnitlige tid mellem fejl. Tracks langsigtet pรฅlidelighed.




