Alle noter

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.