Azure Fundamentals · Les

GitHub Actions op Azure

Reproduceer de CI/CD-workflow met GitHub Actions en de azure/webapps-deploy-action en begrijp wanneer u GitHub Actions verkiest boven Azure Pipelines.

Les 4 van 413 stappen

GitHub Actions op Azure is een gratis Azure Fundamentals-les op CoddyKit. Dit is les 4 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Azure Fundamentals. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Azure Fundamentals bevat in totaal 4 lessen.

Wat is GitHub Actions?

GitHub Actions is het ingebouwde platform van GitHub voor CI/CD en automatisering. Workflows worden gedefinieerd in YAML-bestanden die zijn opgeslagen in de map .github/workflows/ van je opslagplaats en worden gestart door GitHub-gebeurtenissen — pushes, pull requests, releases en meer. GitHub Actions is diep geïntegreerd met het GitHub-ecosysteem (issues, PR's, pakketten en beveiligingsscans) en biedt een uitgebreide marketplace met acties van de community voor taken zoals bouwen, testen en implementeren naar Azure.

Structuur van een GitHub Actions-workflow

Een workflowbestand van GitHub Actions heeft drie secties op het hoogste niveau. on definieert de triggergebeurtenissen. env stelt globale omgevingsvariabelen in. jobs definieert een of meer taken, die elk worden uitgevoerd op een runner (door GitHub gehost of zelf gehost). Elke taak heeft steps — ofwel run (shellscript), ofwel uses (een vooraf gebouwde actie). Taken worden standaard parallel uitgevoerd; gebruik needs om opeenvolgende afhankelijkheden te maken.

# .github/workflows/ci.yml
name: CI

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

env:
  NODE_VERSION: '18.x'

jobs:
  build-and-test:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - uses: actions/setup-node@v4
      with:
        node-version: ${{ env.NODE_VERSION }}
    - run: npm ci
    - run: npm test

Verifiëren bij Azure vanuit GitHub Actions

De aanbevolen manier om GitHub Actions bij Azure te verifiëren is OpenID Connect (OIDC) — hiermee worden tokens met een korte geldigheidsduur uitgegeven, zonder dat je geheimen met een lange geldigheidsduur in GitHub hoeft op te slaan. Configureer een federated identity credential op een Azure App Registration of Managed Identity en geef deze vertrouwen voor je GitHub-opslagplaats en -branch. Gebruik de actie azure/login@v2 om het GitHub OIDC-token om te wisselen voor een Azure-toegangstoken — clientgeheimen in GitHub Secrets zijn niet nodig.

# Configure OIDC federated credential in Azure
az ad app federated-credential create \
  --id <AppRegistrationObjectId> \
  --parameters '{
    "name": "github-oidc",
    "issuer": "https://token.actions.githubusercontent.com",
    "subject": "repo:myorg/myrepo:ref:refs/heads/main",
    "audiences": ["api://AzureADTokenExchange"]
  }'

# In the workflow: login via OIDC
# permissions:
#   id-token: write
#   contents: read
# - uses: azure/login@v2
#   with:
#     client-id: ${{ vars.AZURE_CLIENT_ID }}
#     tenant-id: ${{ vars.AZURE_TENANT_ID }}
#     subscription-id: ${{ vars.AZURE_SUBSCRIPTION_ID }}

Implementeren naar Azure App Service

De actie azure/webapps-deploy@v3 implementeert code of een containerinstallatiekopie naar Azure App Service. De actie ondersteunt slotimplementaties, implementaties op basis van pakketten en implementaties van Docker-installatiekopieën. Combineer deze met azure/login@v2 voor verificatie. Je kunt een staging-slot als doel instellen, smoketests uitvoeren en vervolgens wisselen met de actie azure/CLI@v2, die de opdracht voor het wisselen van slots uitvoert — zo boots je het blue-green-implementatiepatroon van Azure Pipelines volledig na in GitHub Actions.

# .github/workflows/deploy.yml
jobs:
  deploy:
    runs-on: ubuntu-latest
    permissions:
      id-token: write
      contents: read
    steps:
    - uses: actions/checkout@v4

    - uses: azure/login@v2
      with:
        client-id: ${{ vars.AZURE_CLIENT_ID }}
        tenant-id: ${{ vars.AZURE_TENANT_ID }}
        subscription-id: ${{ vars.AZURE_SUBSCRIPTION_ID }}

    - name: Build and zip app
      run: npm ci && npm run build && zip -r app.zip dist/

    - uses: azure/webapps-deploy@v3
      with:
        app-name: myUniqueWebApp
        slot-name: staging
        package: app.zip

Implementeren naar Azure Kubernetes Service

Implementeer vanuit GitHub Actions naar AKS met de actie azure/k8s-deploy@v5. Deze actie gebruikt kubectl apply om manifests te implementeren, voert vervanging van installatiekopieën uit (waarbij de tag van de installatiekopie wordt vervangen door de tag van de huidige build) en bewaakt de gezondheid van de uitrol. De actie azure/aks-set-context@v4 configureert de kubectl-referenties door de kubeconfig van het cluster op te halen met behulp van de geverifieerde Azure-sessie.

jobs:
  deploy-aks:
    runs-on: ubuntu-latest
    permissions:
      id-token: write
      contents: read
    steps:
    - uses: actions/checkout@v4
    - uses: azure/login@v2
      with:
        client-id: ${{ vars.AZURE_CLIENT_ID }}
        tenant-id: ${{ vars.AZURE_TENANT_ID }}
        subscription-id: ${{ vars.AZURE_SUBSCRIPTION_ID }}

    - uses: azure/aks-set-context@v4
      with:
        resource-group: MyRG
        cluster-name: myAKSCluster

    - uses: azure/k8s-deploy@v5
      with:
        namespace: production
        manifests: k8s/
        images: 'mycontainerregistry.azurecr.io/myapp:${{ github.sha }}'

GitHub Secrets en variabelen

Sla gevoelige waarden op in GitHub Secrets — versleutelde waarden die in workflows toegankelijk zijn als ${{ secrets.SECRET_NAME }}. Niet-gevoelige configuratie hoort in GitHub Variables — toegankelijk als ${{ vars.VARIABLE_NAME }}. Beide kunnen worden beperkt tot een opslagplaats, omgeving of organisatie. Gebruik environments in GitHub Actions om beveiligingsregels toe te voegen (verplichte beoordelaars en implementatiebranches), vergelijkbaar met Azure DevOps Environments.

# Reference secrets and variables in a workflow
steps:
- name: Configure app settings
  uses: azure/CLI@v2
  with:
    inlineScript: |
      az webapp config appsettings set \
        --name myUniqueWebApp \
        --resource-group MyRG \
        --settings \
          DATABASE_URL='${{ secrets.DATABASE_URL }}' \
          API_VERSION='${{ vars.API_VERSION }}'

Beveiligingsregels voor omgevingen

GitHub Actions Environments (geconfigureerd via Instellingen → Environments in de opslagplaats) voegen implementatiecontroles toe die vergelijkbaar zijn met Azure DevOps-omgevingen. Je kunt verplichte beoordelaars instellen die goedkeuring moeten geven voordat een taak voor de omgeving wordt uitgevoerd, implementaties beperken tot specifieke branches (alleen main mag naar Production implementeren) en wachttimers toevoegen om implementaties uit te stellen. Taken die gericht zijn op een beveiligde omgeving worden gepauzeerd totdat aan alle beveiligingsregels is voldaan.

# Workflow job targeting a protected GitHub environment
jobs:
  deploy-production:
    runs-on: ubuntu-latest
    environment:
      name: Production           # Must have 2 approvers in GitHub settings
      url: https://myapp.contoso.com
    needs: deploy-staging
    steps:
    - uses: azure/login@v2
      with:
        client-id: ${{ vars.AZURE_CLIENT_ID }}
        tenant-id: ${{ vars.AZURE_TENANT_ID }}
        subscription-id: ${{ vars.AZURE_SUBSCRIPTION_ID }}
    - uses: azure/webapps-deploy@v3
      with:
        app-name: myUniqueWebApp
        package: app.zip

Herbruikbare workflows en samengestelde acties

Voorkom dat je CI/CD-logica in meerdere opslagplaatsen dupliceert met behulp van twee functies van GitHub Actions. Met herbruikbare workflows definieer je een workflow in één opslagplaats en roep je deze aan vanuit workflows in andere opslagplaatsen met uses: myorg/shared-workflows/.github/workflows/deploy.yml@main. Met samengestelde acties bundel je meerdere stappen in één actie die in een opslagplaats is opgeslagen en herbruikbaar is met uses: myorg/my-actions/deploy@v1. Beide bevorderen DRY-principes in de CI/CD-pijplijnen van je organisatie.

# Call a reusable workflow from another workflow
jobs:
  deploy:
    uses: myorg/shared-workflows/.github/workflows/deploy-appservice.yml@main
    with:
      app-name: myUniqueWebApp
      slot-name: staging
      package-path: dist/
    secrets:
      AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
      AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
      AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }}

GitHub Actions versus Azure Pipelines: wanneer kies je welke?

Kies GitHub Actions wanneer: je code op GitHub staat, je team de GitHub-gebruikersinterface verkiest, je een hechte integratie met controles voor GitHub PR's en codescans wilt of je opensourceprojecten bouwt (ruim bemeten gratis minuten). Kies Azure Pipelines wanneer: je integratie met Azure Boards nodig hebt, geavanceerd testen met Azure Test Plans wilt uitvoeren, Azure Artifacts-feeds moet beheren, je code in Azure Repos staat of je complex releasebeheer met meerdere fasen en controles over veel omgevingen nodig hebt. Beide ondersteunen implementatie naar Azure even goed.

GitHub Actions Marketplace

De GitHub Actions Marketplace bevat duizenden acties van de community en officiële acties voor veelvoorkomende taken. Microsoft publiceert officiële Azure-acties: azure/login, azure/webapps-deploy, azure/aks-set-context, azure/k8s-deploy, azure/CLI, azure/arm-deploy en nog veel meer. Zet acties altijd vast op een specifieke versietag (bijvoorbeeld @v3) of een commit-SHA om aanvallen op de toeleveringsketen te voorkomen waarbij een gecompromitteerde actie wordt bijgewerkt met schadelijke code.

# Pin actions to specific version (recommended)
- uses: actions/checkout@v4         # Pinned to v4 tag
- uses: azure/login@v2               # Pinned to v2
- uses: azure/webapps-deploy@v3      # Pinned to v3

# Extra security: pin to commit SHA
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683

# Avoid unpinned 'latest' or branch references
# - uses: some-action@main           # UNSAFE - could change at any time

Zelf gehoste runners voor privénetwerken

Door GitHub gehoste runners hebben alleen toegang tot het openbare internet — ze kunnen geen private Azure-resources (SQL-databases, interne API's) bereiken zonder deze resources openbaar toegankelijk te maken. Gebruik zelf gehoste runners op Azure-VM's binnen je VNet voor implementaties naar private resources. Registreer een runner door de GitHub Actions-runneragent te downloaden, deze te configureren met de URL van je opslagplaats en een registratietoken en de runner als service uit te voeren. Schaal zelf gehoste runners met Azure Container Apps voor elastische runnerpools.

# Register a self-hosted runner on an Azure VM
# 1. Download runner (run on the VM)
curl -O -L https://github.com/actions/runner/releases/download/v2.317.0/actions-runner-linux-x64-2.317.0.tar.gz
mkdir actions-runner && tar xzf ./actions-runner-linux-x64-2.317.0.tar.gz -C actions-runner
cd actions-runner

# 2. Configure (use token from GitHub Settings > Actions > Runners)
./config.sh --url https://github.com/myorg/myrepo --token <REGISTRATION_TOKEN>

# 3. Run as a service
sudo ./svc.sh install && sudo ./svc.sh start

# Use in workflow
# runs-on: self-hosted

Korte controle

Test je begrip van de concepten uit Microsoft Azure Fundamentals (AZ-900) die in deze les zijn behandeld.

Samenvatting van de les

In deze les heb je geleerd dat workflows van GitHub Actions YAML-bestanden in .github/workflows/ zijn, worden gestart door GitHub-gebeurtenissen en op runners worden uitgevoerd, dat OIDC-federated credentials verificatie bij Azure vanuit GitHub Actions zonder geheimen mogelijk maken en dat GitHub Environments met beveiligingsregels goedkeuringscontroles toevoegen aan productie-implementaties. Hiermee is de cursus Azure DevOps voltooid — hierna behandelen we Azure Monitor en Log Analytics.

Gratis beginnen

Leer Azure Fundamentals met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
30
Lessen
120

Veelgestelde vragen

Is de les “GitHub Actions op Azure” gratis?

Ja — de volledige tekst van “GitHub Actions op Azure” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Azure Fundamentals wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Azure Fundamentals bevat in totaal 4 lessen.

Wat leer ik in “GitHub Actions op Azure”?

Reproduceer de CI/CD-workflow met GitHub Actions en de azure/webapps-deploy-action en begrijp wanneer u GitHub Actions verkiest boven Azure Pipelines. Je oefent met Azure Fundamentals door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Azure Fundamentals te beginnen?

Ervaring vooraf is niet nodig. Azure Fundamentals op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 4 van 4.

Hoe lang duurt de les “GitHub Actions op Azure”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Azure Fundamentals?

Ja. Elke les over Azure Fundamentals bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Overzicht van Azure DevOps Services
  2. Een CI-pipeline bouwen met Azure Pipelines
  3. Continuous deployment naar Azure
  4. GitHub Actions op Azure
← Terug naar Azure Fundamentals