Udforsk versionsstyring og versionsstyring
Brugen af kilde- og versionsstyring er en grundlæggende DevOps-praksis. Det er også en forudsætning for f.eks. kontinuerlig integration og infrastruktur som kode, som begge er afgørende for at nå det fulde DevOps-potentiale. Organisationen i vores eksempelscenarie bør gennemgå sin aktuelle samarbejdsstrategi for softwareudvikling og overgangen til en model til distribueret versionsstyring, f.eks. Git, især i betragtning af dens planer om at bruge GitHub til administration af softwarelivscyklus. Dette kræver dog en god forståelse af versions- og kildekontrolprincipperne og deres fordele, som vi dækker her.
Versionsstyring og versionsstyring
Begreberne versionsstyring og versionsstyring bruges ofte i flæng, og i mange sammenhænge henviser de til det samme koncept. Generelt er de begge knyttet til den praksis, der består i at administrere ændringer af kode i et delt udviklingsmiljø. Du kan dog støde på mere nuancerede scenarier, hvor deres betydning er lidt anderledes. I disse scenarier angiver versionsstyring et system, der administrerer ændringer af kildekodefiler, mens versionsstyring omfatter ændringsstyring af en hvilken som helst filtype til formål, der strækker sig ud over kildekoden alene. Fremover bruger vi begrebet versionsstyring til at repræsentere Git-baserede samarbejdssoftwarelagre, der er tilgængelige i GitHub og Azure DevOps.
Hvad er fordelene ved versionsstyring?
Versionsstyring holder styr på ændringer af filer inden for administrationsområdet. Dette giver en lang række fordele:
oversigts- og versionssporing: Du har mulighed for at gennemse historikken over ændringer af en fil, herunder muligheden for at bestemme, hvornår hver enkelt ændring fandt sted, og hvad der var deres omfang. Dette giver også mulighed for sporing, typisk ved at knytte hvert sæt ændringer til et entydigt id.
rollback and recovery: Hvis der er en fejl eller et problem, kan du nemt gendanne ændringer for at gendanne den kendte arbejdsversion af den pågældende fil.
forgrening og fletning af: Hvis du har brug for at udvide funktionaliteten af den aktuelle kode ved at tilføje en anden funktion eller rette en nyopdaget fejl, kan du oprette en såkaldt forgrening, som giver dig mulighed for at arbejde uafhængigt i forhold til den eksisterende kodebase. Den nye forgrening er indledningsvist identisk med den primære gren, der er vært for den aktuelle kode. Når du har fuldført ændringerne, fletter du den nye forgrening med hovedgrenen. Selvom dette stadig kan føre til konflikter (hvis en anden udvikler har besluttet at ændre det samme sæt filer i mellemtiden via en anden forgrening), er deres omfang begrænset, og de kan typisk let identificeres og løses.
Samarbejde og parallel udvikling: Bestemmelser om konfliktløsning suppleret med forgrening og fletning gør det lettere for flere udviklere at arbejde på den samme kodebase, hvilket øger effektiviteten. Med distribuerede kontrolsystemer, f.eks Git, er det endda muligt at oprette kode i en afbrudt tilstand. Samarbejde omfatter også gensidig peer review af pullanmodninger, fremme videndeling og gennemsigtighed.
Automation: Versionsstyring er en vigtig del af løbende integration og automatiserede udrulninger. Automatiseret build og test kan udløses automatisk, når en ny version af koden pushes til versionsstyringslageret eller flettes med hovedgrenen. Forskellige versioner af koden kan udrulles i forskellige miljøer.