Varje repository borde ha en devcontainer

Squeeds Julkalender | 2020-12-06 | Örjan Eriksson
Vore det inte fantastiskt om ett kod-repository innehöll de verktyg som behövdes för att jobba med det, i en miljö som de flesta utvecklarna i teamet kan använda lokalt? Låter det för bra för att vara sant? Det är det också, men det går att komma en bra bit på väg genom att använda Visual Studio Code (VS Code) och devcontainers!
despaired-2261021_1920.jpg

Det börjar med Docker

Devcontainers är ett koncept som bygger på Docker och de plugin som går att installera i VS Code. Grunden är en Dockerfil där du installerar de verktyg som behövs i just ditt repository. Det kan vara Node i en specifik version, Gatling för prestandatester eller varför inte Kubernetes cli-verktyg kubectl. Filen checkar du självklart in och versionshanterar.

Anpassningar av VS Code

VS Code har styrkan att ha plugin tillgängliga för både stora och små uppgifter. Underlättas arbetet i ditt repository av något plugin? Varför inte skriva ut vilken Node-version som är installerad och används just nu, eller få en översikt av testerna eller dina Kuberneteskluster. Självklart kan du ange vilka plugin som ska finnas i din devcontainer och de kommer installeras i VS Code när du kör din devcontainer, och de försvinner när devcontainern stängs ner.

Har ni i teamet kommit överens om hur koden ska formateras? Har ni valt tabbar eller mellanslag? Hur många mellanslag? Är det olika antal i olika filtyper? Det går naturligtvis att kontrollera om det blir rätt med en git-hook eller i ett byggsteg, men de flesta väljer att ställa in sin editor så att de filer som skapas eller ändras uppfyller de reglerna teamet har kommit överens om. Vore det inte smidigt om det går att ställa in detta i ditt repository också? Vilken tur att en devcontainer löser det åt dig! Du kan i princip anpassa alla inställningar i VS Code för din devcontainer.

Listan med plugins, anpassade inställningar, parametrar till Docker, portar som ska öppnas, volymer som behöver mountas eller kommandon som ska köras vid uppstart... kort och gott alla anpassningar, anges i en konfigurationsfil som du också checkar in i ditt repository.

Vad behöver jag för att komma igång?

Nedan hittar du en lista på det som behöver installeras för att komma igång med devcontainers. När du väl har grejerna på plats spelar det ingen roll om du kodar i Java, C#, TypeScript eller Python eller om du jobbar med infrastruktur och kubectl.

Det mesta går att anpassa i dina devcontainers. Du hittar dokumentationen här:

Vill du se en devcontainer på riktigt? Titta i så fall på denna Node-applikation: https://github.com/erikssonorjan/devcontainer-demo