🚀 Øvelse 38 – Opsætning af CI/CD med GitHub og Azure Web Service
ℹ️ Information
I denne øvelse introduceres du til de grundlæggende principper i Continuous Integration og Continuous Deployment (CI/CD). Du skal opsætte en build-pipeline, som automatisk bygger og deployer din .NET-applikation til Azure App Service, hver gang der pushes kode til GitHub.
CI/CD er en hjørnesten i moderne DevOps og sikker softwareudvikling, da det understøtter automatiseret kvalitetssikring og en hurtigere, mere kontrolleret release-cyklus.
CI/CD tillader etablering af quality gates, såsom automatisk eksekvering af tests:
- statisk kodeanalyse
- dynamisk applikationssikkerhedstest
- unit tests
- og mere
Alt dette styrker kvalitetssikringen af softwaren efter hver ændring i kildekoden.
I denne øvelse skal CI/CD blot oprettes. I de efterøglende øvelser, laver vi en opsætning til eksekvering af unit tests
🧭 Metodemodel: Hvor er vi?
CI/CD er en del af de sidste faser i den metodemodel, vi har brugt gennem hele forløbet:
Systemmål (brugstilfælde) → Sikkerhedsmål (misbrugstilfælde) → Risikovurdering → Trusselsmodellering (STRIDE) → Sikkerhedsforanstaltninger: Design og implementering (Secure by Design) → Verifikation (tests, automatisering)
Denne øvelse markerer overgangen fra implementering til verifikation. Du bygger nu bro mellem udvikling og sikker drift ved at automatisere processen for test og deployment.
I denne øvelse skal CI/CD-pipelinen blot oprettes.
I de efterfølgende øvelser udbygger vi pipelinen med bl.a. automatiserede unit tests og sårbarhedsscanning.
🧰 Forudsætninger
Før du går i gang, skal du have:
- En GitHub-konto – Opret en her.
Med din skolekonto kan du få en GitHub Student Developer Pack. - En Azure-studiekonto – Som annonceret på It's learning, og forrige uges undervisning, så skal der bruges en Azure studie konto til denne øvelse. Hvis du endnu ikke har gjordt det, så opret og tilgå din tildelte UCL-konto via denne vejledning.
📦 Instruktioner
1️⃣ Opret repository på GitHub
- Opret et nyt repository på GitHub.
Tjek “Add a README file” – det gør det nemmere at klone repoet. - Klon repositoryet ned på din lokale maskine.
-
Kopiér løsningen og projekterne fra Øvelse 36 ind i den lokale folder.
Vigtigt: Du må ikke kopiere.git-mappen fra det gamle repo. Kun følgende skal med:- Web-applikationen (mappen og alt indhold)
- Testprojektet (mappen og alt indhold)
.sln-filen (solution-filen)
-
Sørg for, at både web-applikationen og unit tests kan køres lokalt uden fejl.
- Push koden til GitHub.
- Verificér, at projektmapperne og solution-filen vises korrekt i dit repository på GitHub.
2️⃣ Opret Azure Web App Service
- Gå til Azure-portalen, og klik på
Create a resource.

- Vælg
Web Appog klik påCreate.

-
Konfigurér som følger:
- Subscription:
Azure for Students - Resource Group:
Create new(giv den et sigende navn) - Publish:
Code - Runtime Stack:
.NET 8 (LTS)eller.NET 9 (STS)(Se hvilken .Net version du bruger i dine projekters .cs file) - OS:
Windows(nødvendigt for GitHub integration) - Region:
North Europe - Pricing plan:
Free F1

- Subscription:
-
Klik på
Next: Database(ingen database vælges). - Klik på
Next: Deployment.- Enable
Continuous deployment - Klik
Authorizeved GitHub og gennemfør - Vælg din organisation, repository og branch (
main) - Sæt Basic authentication til disabled

- Enable
- Klik
Preview fileog se konfigurationsfilen til GitHub Actions (.yml). - Klik videre til
Next: Networking.- Sæt Enable public access til on
- Network injection:
Off

- Klik
Next: Monitoring.- Sæt Application Insights til
No

- Sæt Application Insights til
- Klik
Next: Tags.- Tilføj tag:
type=POC

- Tilføj tag:
- Klik
Review + Create, og verificér opsætningen.

- Klik
Createog vent på at deployment fuldføres (5–10 minutter). - Klik
Go to resource.

- Klik på
Default domain– din applikation kører nu online. (Der kan dog gå et par minutter, inden den bliver tilgængelig)
- Test applikationen ved at sende nogle valide inputs.
- Kør
git pulli din lokale repo folder – konfigurationen i GitHub er blevet tilføjet.
⏳ Bemærk: Free-plan giver kun 60 minutters oppetid pr. døgn. Husk at slukke appen, når du ikke bruger den.
3️⃣ Undersøg GitHub Actions og YAML-fil
- Gå til fanen
Actionsi dit repository. - Klik på det seneste eksekverede workflow.

- Du bør se to jobs:
buildogdeploy.
Hvad gør hvert af dem?

- Gå til mappen
.github/workflows/og åbn.yml-filen. - Sammenlign de specificerede jobs i .yml filen, med det, GitHub Actions udførte.
🤔 Refleksionsspørgsmål
- 🧩 Hvilken platform "hoster" webapplikationen efter deployment?
- 🔄 Hvad betyder det, at koden "integreres" i GitHub-repositoriet?
- 🧑💻 Hvor i processen anvendes der autentificering, og til hvilket formål?
- ⚙️ Hvilke fordele er der ved at automatisere deployment-processen?
- 🛡️ Hvordan kan CI/CD senere bruges til at understøtte sikkerhedsrelaterede kontroller (fx test, scanning)?
💡 CI/CD-pipelines danner grundlaget for en automatiseret og sikker softwareudviklingsproces. Ved at forstå og opsætte grundstrukturen, får du en robust platform for senere at integrere test, statisk analyse og sårbarhedsscanning.