okt. 2026 · Azure DevOps / Docker / CI/CD
Én pipeline, to operativsystemer
Den nye platform skal køre på Windows Server i dag, Windows-containere næste gang og Linux senere. Jeg designede CI/CD, så ingen af de skift kræver, at den bygges om.
Platformen, jeg arbejder på, afløser et system fra 2012. I dag kører den på Windows Server med IIS. Planen er Windows-containere som det næste, derefter Linux og på sigt Kubernetes. Det ville have været let at bygge et deployment-setup til hvert trin og smide det væk ved det næste.
Designet
- Modulære Azure DevOps YAML-templates, så build- og deploy-trin defineres én gang og genbruges.
- To Dockerfiles side om side, én til Windows og én til Linux, der bygger den samme applikation.
- Images pushes til Artifactory via en service connection, i et separat repository pr. operativsystem.
- Immutable tags: hvert build får et unikt tag, der aldrig overskrives, så det, der er testet, er præcis det, der rulles ud, og en rollback betyder blot at deploye det forrige tag.
- Konfiguration pr. miljø via konsekvent navngivne appsettings-filer, valgt af pipelinen i stedet for redigeret på serverne.
Hvorfor det betyder noget
Pipelines understøtter allerede skiftet fra IIS til Windows-containere. At gå over til Linux-images er en ændring af, hvilken Dockerfile og hvilket target-repository templates bruger, ikke en omskrivning. Legacy-applikationerne ligger i andre repositories, men de kan genbruge de samme pipeline-templates, når de containeriseres.
Hvad der kommer
Når Linux-infrastrukturen er på plads, er planen at deploye til Kubernetes med ArgoCD. Den del er ikke bygget endnu; pointen med det nuværende design er, at det ikke kræver, at man starter forfra.