19. september 2022

Samarbejde og automatisering med Azure DevOps - lad maskinerne overtage (noget af) dit arbejde

Vil du gerne have en ensartet og automatiseret proces for dine it-projekter? I Novataris bruger vi Azure DevOps til at automatisere vores arbejde.

FORFATTER

Jesper Dybdahl Hede

Principal


Azure DevOps er en softwareplatform, der understøtter softwareudvikling og -vedligehold. Det er et værktøj, som teams kan bruge til at samarbejde omkring:

• Softwareudvikling
• Byg af løsninger
• Deploy af applikationer
• Tests, versionering og opgavestyring

Softwareplatformen findes enten online (Azure DevOps Services) eller on-premise (Azure DevOps server), og den gør det muligt at automatisere flows og gentage processer. Azure DevOps kan integreres i både eksisterende og nye projekter, og spiller nemt sammen med etablerede arbejdsmetoder.
Azure DevOps består af fem services, hvor nogle, hvis man kender til Team Foundation Server (en tidligere version af Azure DevOps Server), vil være genkendelige, mens andre er opstået senere. Vi vil ikke gå i detaljer med de enkelte services, det synes vi, at Microsoft selv har klaret fint her:

Hvordan vi udnytter styrkerne ved Azure DevOps hos en af vores kunder

Vi arbejder for en kunde, som har et antal centrale og kritiske applikationer og adskillige mindre applikationer, som vi i Novataris supporterer med et fast hold af konsulenter. Vi er midt i et opgraderingsforløb fra traditionelt CMS til Contentful Headless CMS. CMS er en af de mest centrale applikationer og optager en stor del af teamet. Vi har flere backend platforme, databaser og forskellige test-, staging- og produktionsmiljøer. Behovet for vedligeholdelsen og udviklingen af applikationerne skifter over tid efter prioriteringer, så vi er nødt til at indrette os efter de skiftende behov. Vores kunde bruger i vid udstrækning Microsoft Azure, så valget af Azure DevOps, til at støtte vores arbejde, var oplagt.

For at udviklingen kan ske parallelt i flere retninger, er hver logiske del placeret i sit eget Git Repository (kodebibliotek), som alle ligger i samme Azure DevOps projekt. Granulariteten gør vores udviklingsteams i stand til at samarbejde agilt med opgraderingen, og samtidig kan vedligehold og udvikling udføres på tværs af applikationerne, uden vi går i vejen for hinanden.

Vi har et stort fokus på effektiviseringen af vores arbejdsprocesser, og arbejder løbende på at automatisere så meget som muligt. Azure DevOps giver mulighed for at sammenkoble repositories (kodebiblioteker) og byg/release-pipelines, hvilket man kan i det event-drevet Azure Pipelines. Når ny kode skubbes til et repository, har vi konfigureret det således, at DevOps automatisk starter en tilhørende byg-pipeline. Her bliver der gennemkørt både funktionelle og strukturelle tests, samt deploy pakke bygges og gøres klar til brug. Hvis byg og tests gennemføres succesfuldt, så starter en automatisk release-pipeline, og den nye version bliver lagt klar i testmiljø. Det er en proces, der normalt ville tage en udvikler 5-10 minutter, og som kræver indgående viden om byg- og release-processerne. Nu gøres det ved automatisering i fastdefinerede trin. Det sikrer høj kvalitet og sparer udviklerne tid.

DevOps har et større bibliotek af add-ons, scripts og connectors, hvilket betyder, at langt de fleste behov kan opfyldes gennem konfigurationer. Dertil har mange softwarevirksomheder udviklet udvidelser til Azure DevOps – fx Slack, SonarQube, Amazon Web Services og Octopus Deploy. Derfor er Azure DevOps nemt at tage i brug selv med eksisterende softwareprodukter og løsninger. På vores projekt bruger vi for eksempel Ghost Inspector (som er et værktøj, der kan bruges til at løbe automatiske test af hjemmesider og apps. Se mere her) til at gennemføre komplette User Interface tests efter alle releases. Det er et værktøj, der er klar til brug med en Azure DevOps Connector, og som var nemt at integrere i vores pipeline. Som nævnt tidligere kører vores tests automatisk med release-pipeline, så den kræver kun vores opmærksomhed, hvis noget er ændret. Ved hjælp af Ghost Inspecter bliver ændringer og fejl tydeligt markeret, så fejl kan rettes, eller opdateringen accepteres, og en ny baseline kommer på plads. På den måde opnår vi bedre kvalitetskontrol af vores arbejde.

Azure Artifacts er pakkehåndtering, der understøtter pakker som Maven, npm og NuGet. Når man udvikler software, er det vigtigt at holde styr på versioner og afhængigheder. Det kan være en udfordring for større teams, at alle udviklere skal bruge samme softwarepakker. Udfordringen vokser med teamstørrelsen, så det kræver en struktureret platform for at understøtte effektiv udvikling. Når vores byg-pipelines laver NuGet-pakker, og DevOps Artifacts klarer pakkehåndteringen, så får vi fuld sporbarhed, genbrugelighed og et simpelt overblik.

Microsoft har ikke nytænkt løsningen eller skabt et unikt værktøj med Azure Artifacts, men med en pakkehåndtering i samme platform som byg- og release-pipelines, får man en nem integration og fuld kontrol over sin pakkeversionering.

Sådan kommer du i gang med Azure DevOps

Hos Novataris går vi altid efter et tilpasset setup i forhold til den enkelte kundes behov. Vi har processerne og samarbejdet i fokus, og værktøjerne skal understøtte det hele. Vi mener, at et simpelt værktøj som alle kender og bruger aktivt, er mere værd end alverdens features, som ligger og samler virtuelt støv.

Vi har flere gange haft succes med at bruge Azure DevOps. Det er et værktøj, som har en lav indgangsbarriere, kan understøtte komplekse projekter og hvis du er hjemmevant i Microsoft, er det genkendeligt.

Azure DevOps bør være en del af snakken, hvis man overvejer at effektivisere sine udviklingsprocesser. Går du med disse overvejelser, vil vi meget gerne vise eksempler på, hvordan sådan en løsning kan fungere i praksis.