DA EN

LabVIEW i Docker-containere

Headless CI/CD med NI's officielle container-images

Har du nogensinde oplevet, at kode virker perfekt på én maskine, men fejler på en anden? Det klassiske "it works on my machine"-problem er hverdagskost i softwareudvikling – og det er præcis det problem, Docker løser. I maj 2025 holdt jeg et oplæg om Docker-containere og LabVIEW for NI's LabVIEW-brugerfællesskab, og dette indlæg opsummerer de vigtigste pointer.

Hvad er Docker?

Docker er en platform til at pakke og køre applikationer i isolerede miljøer kaldet containere. En container indeholder alt, hvad en applikation skal bruge – kode, runtime, biblioteker og konfiguration – og kører identisk uanset hvilken maskine den startes på.

I modsætning til virtuelle maskiner deler containere værtssystemets OS-kerne. Det gør dem langt lettere og hurtigere at starte: hvor en VM kan tage minutter at boote, starter en container på sekunder. Til gengæld er containere stadig fuldt isolerede fra hinanden og fra værtssystemet.

Fire kernebegreber

Docker bygger på fire grundlæggende begreber:

  • Image – Et skrivebeskyttet snapshot af et filsystem med alt software installeret. Images er det, du deler og versionsstyrer.
  • Container – En kørende instans af et image. Du kan starte mange containere fra samme image.
  • Dockerfile – En tekstfil med instruktioner til at bygge et image trin for trin.
  • Registry – Et lager til images, f.eks. Docker Hub. Her henter og udgiver du images.

Den typiske arbejdsgang er enkel: skriv en Dockerfile → byg et image (docker build) → kør en container (docker run).

LabVIEW i Docker – NI's officielle images

NI udgiver officielle LabVIEW-container-images på Docker Hub under nationalinstruments/labview. Det er præfabrikerede images med en komplet, headless LabVIEW-installation klar til brug i CI/CD-pipelines.

Hvad kan du gøre med dem? Alt hvad LabVIEWCLI understøtter – uden at åbne en GUI:

  • MassCompile – kompiler et helt LabVIEW-projekt automatisk
  • VI Analyzer – statisk kodeanalyse på tværs af alle VI'er
  • RunVI – kør et enkelt VI headless
  • Build specs – byg executables og pakker
  • VIDiff – sammenlign VI-versioner

Images findes til både Linux og Windows og er navngivet efter LabVIEW-release og platform, f.eks. nationalinstruments/labview:2025q3-linux.

Kom i gang med ni/labview-for-containers

NI har samlet alt hvad du skal bruge i GitHub-repoet ni/labview-for-containers: færdige Dockerfiles, eksempler på GitHub Actions- og GitLab CI/CD-workflows og dokumentation til at komme i gang.

I mit oplæg forkede jeg repoet og viste, hvor hurtigt man faktisk kan komme i gang. Processen er overraskende enkel:

  1. Fork ni/labview-for-containers på GitHub
  2. Klon din fork lokalt
  3. Træk det ønskede image: docker pull nationalinstruments/labview:2025q3-linux
  4. Brug de medfølgende workflow-eksempler som udgangspunkt for din egen pipeline

Repoet indeholder klar-til-brug GitHub Actions-workflows, der kører MassCompile og VI Analyzer på din kodebase ved hvert push – uden at du skal opsætte en LabVIEW-installation på din build-server.

VIPM i pipelinen

En af de praktiske udfordringer ved at køre LabVIEW headless er håndteringen af pakkeafhængigheder. At få VIPM til at opføre sig ordentligt i en automatiseret pipeline er – mildt sagt – ikke altid ligetil. Men det kan lade sig gøre:

  • Aktiver VIPM via CLI – ingen GUI nødvendig
  • Brug en .vipc-fil til at låse alle afhængigheder til specifikke versioner
  • Lad CI-pipelinen installere pakkerne automatisk ved hvert build

Det giver reproducerbare builds: den samme .vipc-fil sikrer, at alle udviklere og build-servere bruger præcist de samme pakkeversioner – uden manuelle installationstrin.

Hvorfor det giver mening

Docker-containere løser en håndfuld konkrete problemer på én gang. Builds er reproducerbare – den samme Dockerfile giver det samme resultat på din laptop, på build-serveren og om tre år. Opsætningen er hurtig: en ny kollega kloner repoet og trækker et image i stedet for at bruge dage på at installere og konfigurere LabVIEW manuelt. Og fordi containere er lette, kan du køre mange parallelle builds på den samme server.

For LabVIEW-projekter af en vis størrelse – med flere udviklere, automatiske builds og krav til reproducerbarhed – er Docker et naturligt skridt.

Repoet ni/labview-for-containers er et godt sted at starte. Fork det, kig på eksemplerne, og prøv at køre en MassCompile i en container – det er nemmere end det lyder.

Interesseret i CI/CD til LabVIEW?

Vi hjælper med at sætte automatiserede build-pipelines op til LabVIEW-projekter.

Kontakt os