Skip to content

🚀 Ø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

  1. Opret et nyt repository på GitHub.
    Tjek “Add a README file” – det gør det nemmere at klone repoet.
  2. Klon repositoryet ned på din lokale maskine.
  3. 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)
  4. Sørg for, at både web-applikationen og unit tests kan køres lokalt uden fejl.

  5. Push koden til GitHub.
  6. Verificér, at projektmapperne og solution-filen vises korrekt i dit repository på GitHub.

2️⃣ Opret Azure Web App Service

  1. Gå til Azure-portalen, og klik på Create a resource.
    alt text
  2. Vælg Web App og klik på Create.
    alt text
  3. 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
      alt text
  4. Klik på Next: Database (ingen database vælges).

  5. Klik på Next: Deployment.
    • Enable Continuous deployment
    • Klik Authorize ved GitHub og gennemfør
    • Vælg din organisation, repository og branch (main)
    • Sæt Basic authentication til disabled alt text
  6. Klik Preview file og se konfigurationsfilen til GitHub Actions (.yml).
  7. Klik videre til Next: Networking.
    • Sæt Enable public access til on
    • Network injection: Off
      alt text
  8. Klik Next: Monitoring.
    • Sæt Application Insights til No
      alt text
  9. Klik Next: Tags.
    • Tilføj tag: type=POC
      alt text
  10. Klik Review + Create, og verificér opsætningen.
    alt text
  11. Klik Create og vent på at deployment fuldføres (5–10 minutter).
  12. Klik Go to resource.
    alt text
  13. Klik på Default domain – din applikation kører nu online. (Der kan dog gå et par minutter, inden den bliver tilgængelig) alt text
  14. Test applikationen ved at sende nogle valide inputs.
  15. Kør git pull i 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

  1. Gå til fanen Actions i dit repository.
  2. Klik på det seneste eksekverede workflow.
    alt text
  3. Du bør se to jobs: build og deploy.
    Hvad gør hvert af dem?
    alt text
  4. Gå til mappen .github/workflows/ og åbn .yml-filen.
  5. Sammenlign de specificerede jobs i .yml filen, med det, GitHub Actions udførte.

🤔 Refleksionsspørgsmål

  1. 🧩 Hvilken platform "hoster" webapplikationen efter deployment?
  2. 🔄 Hvad betyder det, at koden "integreres" i GitHub-repositoriet?
  3. 🧑‍💻 Hvor i processen anvendes der autentificering, og til hvilket formål?
  4. ⚙️ Hvilke fordele er der ved at automatisere deployment-processen?
  5. 🛡️ 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.


Last update: 2025-11-03 06:13:26