Releases, tags og GitHub Actions
Releases handler ikke kun om teknik — det er jeres måde at vise frem, få feedback og levere til kunden. Her får du både den bløde vinkel og den tekniske proces.
Hvorfor arbejder vi med releases?
På GitHub er det standard at arbejde med releases. En release markerer et tydeligt punkt i projektet, hvor noget kan vises frem, testes eller overleveres.
- Et tydeligt milepæl — En release markerer et klart punkt i projektet — noget konkret I kan pege på og sige: "Det her er klar nu."
- Vis frem, test, overlever — Releases bruges til at vise produktet frem for kunden, lade dem teste og overlevere det, I har bygget i sprinten.
- Grundlag for feedback — Når kunden ved præcis hvilken version de kigger på, bliver feedback konkret og handlingsbar — ikke "det virker ikke" uden kontekst.
- Professionel standard — På GitHub er releases standard i professionelle teams. Det signalerer struktur, sporbarhed og at I tager jeres leverance alvorligt.
Ofte kobles en release til et sprint-slutpunkt og bruges som grundlag for feedback — præcis som i professionelle udviklingsteams.
Sådan gør vi det
Nogle faste rammer gør det nemmere for jer og jeres kunde at have en fælles forståelse.
-
Release ved sprint-slut
En release kobles typisk til sprint-slut og fungerer som det punkt, hvor I samler op og får feedback — præcis som i rigtige udviklingsteams.
-
En release om ugen
Som udgangspunkt laver I en release pr. uge. Det giver en fast rytme og sikrer, at kunden løbende ser fremgang.
-
Patches undervejs
I må gerne lave patch-releases (v0.2.1, v0.2.2) mellem sprint-slut, hvis kritiske fejl skal rettes hurtigt.
-
Den vigtige regel
Ingen commits på main uden en release til jeres kunde. Main er jeres leverance-klar kode — det der står der, skal kunne vises frem.
Semantisk versionering
Vi bruger Semantic Versioning — formatet er vMAJOR.MINOR.PATCH.
Første release er typisk v0.1.0, fordi systemet stadig er under aktiv udvikling.
Klik på MAJOR, MINOR eller PATCH for at se hvornår du bumper hver del
Ny funktionalitet
Ny funktionalitet bagudkompatibel — mere værdi uden at bryde det eksisterende.
Bump MINOR når du tilføjer nye features, sider eller forbedringer som kunden kan bruge med det samme.
- v0.1.0 → v0.2.0 — ny side til brugeradministration
- v0.2.0 → v0.3.0 — eksport til PDF tilføjet
- v1.0.0 → v1.1.0 — dashboard med grafer
Typisk versionsforløb i et elevprojekt
Projektet er under aktiv udvikling — derfor starter vi på 0.x
Ny funktionalitet fra sprinten
Kritisk fejl rettet mellem sprints
Endnu en sprint-release
Klar til "rigtig" produktion — breaking change fra 0.x til 1.x
Se det i praksis
Vil du have en god struktur, kan du kigge på open-source projekter og se hvordan de gør. Her er to konkrete eksempler:
Tag og semver
Versionen v0.26.2 følger vMAJOR.MINOR.PATCH — her er PATCH bumped, fordi det primært er fejlrettelser.
Oprettet af github-actions
Robot-ikonet viser at releasen er oprettet automatisk via GitHub Actions — ikke manuelt i UI.
Latest-badge
Grøn "Latest" markerer den nyeste release. Det er det punkt kunden typisk skal kigge på.
What's Changed
Release-noter lister hvad der er ændret — ofte med links til pull requests og bidragydere.
Hvad sker der bag kulisserne?
Bag hver release ligger Git-tags, GitHub Releases og ofte automatiseret CI/CD. Her er de fire byggesten:
- Release — En release er en markeret version af din kode — typisk navngivet med semantisk versionering som v1.0.0.
- Tag — Et Git-tag er et fast referencepunkt til et bestemt commit. Tags bruges til at markere releases.
- GitHub Release — En GitHub Release tilføjer release-noter, downloadbare filer og synlighed på repository-siden.
- GitHub Actions — Med Actions kan du automatisere build, test og publicering, når et tag pushes til GitHub.
Release-flow — visuelt
Fra commit på main til tag, release og Actions — klik på hvert trin.
Klik på trinene og se hvordan tag, release og Actions hænger sammen
Main er klar
Sprint-arbejdet er merged til main. Koden er testet og klar til at blive versioneret.
Kommandoer i flowet
De vigtigste trin og kommandoer bag release-processen.
Klik på hvert trin for at se forklaring og kommandoer
Klar kode på main
Før du laver en release, skal din kode være klar og merged til main (eller din release-branch). Sørg for at versionen er bumped og CHANGELOG er opdateret.
Trin-for-trin guide
Følg disse trin for at lave din release med tag og GitHub Actions.
Eksempel: GitHub Actions workflow
Dette workflow trigges automatisk når du pusher et tag der matcher v*.
Gem det som .github/workflows/release.yml i dit repository.
name: Release
on:
push:
tags:
- 'v*'
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build
run: npm ci && npm run build
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
generate_release_notes: true Definerer hvornår workflowet kører. Her trigges det når et tag der matcher mønsteret v* pushes — f.eks. v1.0.0 eller v2.1.3.
Angiver hvilken runner der bruges. ubuntu-latest er den mest almindelige Linux-miljø til build og deploy.
Et færdigt action der opretter en GitHub Release fra det pushede tag. generate_release_notes: true genererer automatisk noter fra commits.
Test din viden
Svar på spørgsmålene for at tjekke om du har styr på releases, semver, tags og Actions.
Hvad er hovedforskellen på et tag og en branch?
Hvornår trigger release-workflowet i eksemplet?
Hvad gør git push origin v1.0.0?
Hvorfor anbefales annoterede tags (-a) til releases?
Hvilken version bump bruger du når du retter en kritisk fejl uden ny funktionalitet?
Hvorfor starter mange projekter med v0.1.0 og ikke v1.0.0?