DevOps & CI/CD‑automatisering
At sende ændringer ud uden drama
Testet, udgivet og til at rulle tilbage, så ændringer når kunderne en tirsdag eftermiddag i stedet for sent en fredag aften.

Foto: martex5 / Pixabay 
Foto: Rattakarn_ / Pixabay
Udvalgte resultater, der demonstrerer denne ydelse.
-
Har automatiseret GIS‑SaaS‑udrulning med CI/CD
Har automatiseret udrulningen af en GIS SaaS‑applikation, databehandlingen og rapporteringssystemet med GitHub Actions CI/CD, Python, Bash og SQL.
-
Har automatiseret leveringen af 20 GIS‑pipelines
Har automatiseret levering af 20 GIS‑datapipelines og ETL‑processer til appdata og strømlinet infrastrukturautomatisering og rapportering.
-
Har fornyet processer og sparet 8.000 timer
Har gennemgribende fornyet interne processer og sparet 8.000 timer ved at forbedre softwarearkitektur, systemer og planlægningseffektivitet.
-
En tiendedel af skyregningen, uden at miste noget
Har optimeret budgetomkostningerne 10 gange uden tab af produktivitet for en international kunde ved at nytænke den samlede infrastruktur, fjerne unødvendige tjenester og flytte væk fra AWS‑skyen.
-
Har genereret API‑kontrakten ud fra databasen
Har genereret API‑kontrakten udad fra databasen — OpenAPI, en typet TypeScript‑klient på 44.076 linjer, 61 mock handlers og de grænser, UI'et håndhæver — med en kontrol i hvert led, der fejler ved afvigelser.
-
Har bygget hele kerneinfrastrukturen fra bunden
Har som en af de første medarbejdere designet og bygget hele kerneinfrastrukturen og de understøttende processer fra bunden for en SaaS‑startup inden for grøn energi og lagt fundamentet for hurtig vækst.
-
Har bygget en testsuite til Go, SQL og browseren
Har bygget en lagdelt automatiseret testsuite — 981 Go‑tests, 543 frontend- og browserspecs, 494 SQL‑adfærdstests — med mutationstest, property‑based tests og en tilgængelighedsgate.
-
Har bygget en kontrolmotor med 268 tjek
Har bygget repositoryets kontrolmotor — 268 registrerede commit‑tjek, 277 lint‑regler og 15 egne ESLint‑regler — plus 146 tests af selve tjekkene, så det er builden, der holder standarden, ikke reviewet.
-
Har bygget egen fejlovervågning og tracing
Har bygget egen fejlovervågning og OpenTelemetry‑tracing i stedet for at købe dem — sanitering af payloads, detektion af spikes og regressioner, symbolication og et syntetisk heartbeat — bag 11 operatørvisninger.
-
Jeres kode på jeres eget udstyr
Har udrullet virksomhedens egen git‑forge på Soft Serve, privat som udgangspunkt og uden webpanel, med SSH‑porten bundet til loopback bag en jump‑vært, og gjort landingssiden foran den til et build‑artefakt fra hovedsitet i stedet for en manuelt vedligeholdt kopi.
-
Har bygget en commit‑gate med 22 lintere
Har bygget en commit‑gate med 22 lintere, der hver kan beskrives på én linje, plus fem, der fortjener et afsnit, uden advarselsniveau og uden tilladte inline‑undertrykkelser, og som dækker HTML, CSS, JavaScript, Python, YAML, Markdown, shell, links, stavning, hemmeligheder og typografi.
-
Et sikkerhedsnet, der ikke længere koster en halv time
Har skåret sitets browserdrevne kvalitetsgate fra 1.636 sekunder til 615 ved at afvikle dens tjek med de længste først gennem en worker‑pulje begrænset til fire spor, efter at have målt, at alfabetisk rækkefølge kostede 320 sekunder mod 224.
-
Har spejlet sitet til Gemini og Gopher
Har spejlet hele sitet som 777 Gemini‑dokumenter og 777 Gopher‑dokumenter ud fra det samme udrullede træ uden at ændre en eneste byte i HTML'en.
-
Har rettet et sitemap med ét fælles tidsstempel
Har rettet et sitemap, hvor 172 af 176 URL'er delte ét ændringstidsstempel, ved at tage datoen fra git‑historikken efter at have fastslået, at eksporten omskriver hver fil ved hver kørsel.
-
Har lintet selve kvalitetsgaten på 10.242 linjer
Har bragt 10.242 linjer kvalitetsgate‑JavaScript under en formatter og en linter efter at have fastslået, at det var den største kodemængde i repositoryet og den eneste, som intet værktøj læste, og rettet 13 fund uden at undertrykke nogen.
-
Har givet generatoren 981 tests og 92 % dækning
Har holdt generatoren på 981 testtilfælde og en nedre grænse på 92 % grendækning med advarsler behandlet som fejl og eftervist idempotens ved at køre hele build‑pipelinen to gange fra en tom fil og kræve, at det andet gennemløb intet ændrer.
-
Har slået alle linterregler til som fejl
Har slået hver eneste regel i Python‑linteren til som fejl og arbejdet 1.815 fund ned til nul, hvor hver af de få undtagelser har en skriftlig begrundelse, og to af dem er sikret af et tjek i stedet for en kommentar.
-
Har skrevet tests af selve tjekkene
Har skrevet tests af selve tjekkene efter at have fastslået, at et tjek, der kun fodres med rent input, en dag melder fejlfrit, fordi det intet har læst — ved at plante en stavefejl for at bekræfte, at stavekontrollen finder den, og ved at tage et id‑interval fra databasen i stedet for fra et tal i testen.
-
Har skrevet en parser, der tjekker hvert FFI‑kald
Har skrevet en parser, der læser den rigtige C‑header på 7.308 linjer og verificerer hvert kaldssted, hver enum‑konstant, og at hver klasse, der ejer en pointer, er final, efter at en håndskrevet pladsholder‑header lod kald til tre fjernede funktioner kompilere, linke og crashe.
-
Har taget den ubrugte halvdel af kernen i brug
Har taget den halvdel af beskedkernen i brug, som applikationen aldrig havde brugt — backupoverførsel, forsvindende beskeder, redigering og gensendelse af beskeder, verificerede invitationer, proxyer og krypteringspolitik — og kørt hver test mod det rigtige bibliotek uden mocks.
Hvis det er det arbejde, du har brug for, er næste skridt en samtale.
Fortæl os problemet, så siger vi ærligt, om vi er de rette til det.

