Cloud & IT Cert Prep · Lektion

GitHub Actions in Azure

Replizieren Sie den CI/CD-Workflow mit GitHub Actions und der Aktion azure/webapps-deploy und verstehen Sie, wann GitHub Actions gegenüber Azure Pipelines vorzuziehen ist.

Lektion 4 von 413 Schritte

GitHub Actions in Azure ist eine kostenlose Cloud & IT Cert Prep-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Cloud & IT Cert Prep-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Cloud & IT Cert Prep-Kurs umfasst insgesamt 4 Lektionen.

Was ist GitHub Actions?

GitHub Actions ist die integrierte CI/CD- und Automatisierungsplattform von GitHub. Workflows werden in YAML-Dateien definiert, die im Verzeichnis .github/workflows/ Ihres Repositorys gespeichert und durch GitHub-Ereignisse ausgelöst werden — etwa Pushes, Pull Requests und Releases. GitHub Actions ist eng in das GitHub-Ökosystem (Issues, PRs, Pakete und Sicherheitsscans) integriert und bietet einen umfangreichen Marketplace mit Community Actions für Aufgaben wie Erstellen, Testen und Bereitstellen in Azure.

Struktur eines GitHub-Actions-Workflows

Eine GitHub-Actions-Workflowdatei besteht aus drei Abschnitten auf oberster Ebene. on definiert die auslösenden Ereignisse. env legt globale Umgebungsvariablen fest. jobs definiert einen oder mehrere Jobs, die jeweils auf einem Runner (von GitHub gehostet oder selbst gehostet) ausgeführt werden. Jeder Job enthält steps — entweder run (Shell-Skript) oder uses (eine vorgefertigte Action). Jobs werden standardmäßig parallel ausgeführt; verwenden Sie needs, um sequenzielle Abhängigkeiten zu erstellen.

# .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

Authentifizierung bei Azure über GitHub Actions

Die empfohlene Methode zur Authentifizierung von GitHub Actions bei Azure ist OpenID Connect (OIDC) — dabei werden kurzlebige Token ausgestellt, ohne langlebige Geheimnisse in GitHub zu speichern. Konfigurieren Sie eine föderierte Identitätsanmeldeinformation für eine Azure-App-Registrierung oder eine verwaltete Identität und gewähren Sie ihr Vertrauen für Ihr GitHub-Repository und Ihren Branch. Verwenden Sie die Action azure/login@v2, um das GitHub-OIDC-Token gegen ein Azure-Zugriffstoken einzutauschen — Clientgeheimnisse in GitHub Secrets sind nicht erforderlich.

# 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 }}

Bereitstellung in Azure App Service

Die Action azure/webapps-deploy@v3 stellt Code oder ein Containerimage in Azure App Service bereit. Sie unterstützt Slot-Bereitstellungen, paketbasierte Bereitstellungen und die Bereitstellung von Docker-Images. Kombinieren Sie sie zur Authentifizierung mit azure/login@v2. Sie können einen Staging-Slot als Ziel auswählen, Smoke-Tests ausführen und ihn anschließend mit der Action azure/CLI@v2, die den Befehl zum Austauschen der Slots ausführt, austauschen — so reproduzieren Sie das Blue-Green-Bereitstellungsmuster von Azure Pipelines vollständig 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

Bereitstellung in Azure Kubernetes Service

Stellen Sie mit der Action azure/k8s-deploy@v5 aus GitHub Actions in AKS bereit. Diese Action verwendet kubectl apply, um Manifeste bereitzustellen, führt eine Image-Substitution durch (dabei wird das Image-Tag durch das Tag des aktuellen Builds ersetzt) und überwacht den Zustand des Rollouts. Die Action azure/aks-set-context@v4 konfiguriert die kubectl-Anmeldeinformationen, indem sie die Kubeconfig des Clusters über die authentifizierte Azure-Sitzung abruft.

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 und Variablen

Speichern Sie vertrauliche Werte in GitHub Secrets — verschlüsselte Werte, die in Workflows als ${{ secrets.SECRET_NAME }} zugänglich sind. Nicht vertrauliche Konfigurationen gehören in GitHub Variables — sie sind als ${{ vars.VARIABLE_NAME }} zugänglich. Beide können auf ein Repository, eine Umgebung oder eine Organisation begrenzt werden. Verwenden Sie environments in GitHub Actions, um ähnlich wie bei Azure DevOps Environments Schutzregeln (erforderliche Prüfer und Bereitstellungsbranches) hinzuzufügen.

# 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 }}'

Schutzregeln für Umgebungen

GitHub-Actions-Environments (konfiguriert unter Repository Settings → Environments) fügen ähnlich wie Azure-DevOps-Umgebungen Bereitstellungsschranken hinzu. Sie können required reviewers festlegen, die vor der Ausführung eines Jobs für diese Umgebung eine Genehmigung erteilen müssen, Bereitstellungen auf bestimmte Branches beschränken (nur main darf in Production bereitstellen) und Wartezeiten hinzufügen, um Bereitstellungen zu verzögern. Jobs für eine geschützte Umgebung werden angehalten, bis alle Schutzregeln erfüllt sind.

# 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

Wiederverwendbare Workflows und Composite Actions

Vermeiden Sie doppelte CI/CD-Logik in verschiedenen Repositorys, indem Sie zwei Funktionen von GitHub Actions nutzen. Mit wiederverwendbaren Workflows können Sie einen Workflow in einem Repository definieren und ihn aus Workflows anderer Repositorys über uses: myorg/shared-workflows/.github/workflows/deploy.yml@main aufrufen. Composite Actions bündeln mehrere Schritte in einer einzelnen Action, die in einem Repository gespeichert und mit uses: myorg/my-actions/deploy@v1 wiederverwendet wird. Beide unterstützen DRY-Prinzipien in den CI/CD-Pipelines Ihrer Organisation.

# 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 oder Azure Pipelines: Wann welche Lösung?

Wählen Sie GitHub Actions, wenn Ihr Code auf GitHub gehostet wird, Ihr Team die GitHub-Oberfläche bevorzugt, Sie eine enge Integration mit GitHub-PR-Prüfungen und Codescans wünschen oder Open-Source-Projekte entwickeln (großzügiges kostenloses Kontingent). Wählen Sie Azure Pipelines, wenn Sie die Integration mit Azure Boards, erweiterte Tests mit Azure Test Plans, die Verwaltung von Azure-Artifact-Feeds oder Code in Azure Repos benötigen oder ein komplexes mehrstufiges Release-Management mit Gates über viele Umgebungen hinweg brauchen. Beide Lösungen unterstützen die Bereitstellung in Azure gleichermaßen gut.

GitHub Actions Marketplace

Der GitHub Actions Marketplace enthält Tausende von Community- und offiziellen Actions für gängige Aufgaben. Microsoft veröffentlicht offizielle Azure-Actions: azure/login, azure/webapps-deploy, azure/aks-set-context, azure/k8s-deploy, azure/CLI, azure/arm-deploy und viele weitere. Fixieren Sie Actions immer auf ein bestimmtes Versions-Tag (z. B. @v3) oder eine Commit-SHA, um Supply-Chain-Angriffe zu verhindern, bei denen eine manipulierte Action mit schädlichem Code aktualisiert wird.

# 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

Self-hosted Runner für private Netzwerke

Von GitHub gehostete Runner haben nur Zugriff auf das öffentliche Internet — sie können private Azure-Ressourcen (SQL-Datenbanken, interne APIs) nicht erreichen, ohne diese Ressourcen öffentlich verfügbar zu machen. Verwenden Sie self-hosted Runner auf Azure-VMs innerhalb Ihres VNet, um private Ressourcen bereitzustellen. Registrieren Sie einen Runner, indem Sie den GitHub-Actions-Runner-Agent herunterladen, ihn mit der URL Ihres Repositorys und einem Registrierungstoken konfigurieren und als Dienst ausführen. Skalieren Sie selbst gehostete Runner mit Azure Container Apps für elastische Runner-Pools.

# 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

Kurze Überprüfung

Testen Sie Ihr Verständnis der Konzepte von Microsoft Azure Fundamentals (AZ-900) aus dieser Lektion.

Zusammenfassung der Lektion

In dieser Lektion haben Sie gelernt: GitHub-Actions-Workflows sind YAML-Dateien in .github/workflows/, die durch GitHub-Ereignisse ausgelöst und auf Runnern ausgeführt werden, föderierte OIDC-Anmeldeinformationen ermöglichen eine Azure-Authentifizierung von GitHub Actions ohne Geheimnisse, und GitHub Environments mit Schutzregeln fügen Genehmigungsschranken für Produktionsbereitstellungen hinzu. Damit ist der Azure-DevOps-Kurs abgeschlossen — als Nächstes folgen Azure Monitor und Log Analytics.

Kostenlos starten

Lerne Cloud & IT Cert Prep mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
150
Lektionen
600

Häufig gestellte Fragen

Ist die Lektion „GitHub Actions in Azure“ kostenlos?

Ja — der vollständige Text von „GitHub Actions in Azure“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Cloud & IT Cert Prep-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Cloud & IT Cert Prep-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „GitHub Actions in Azure“?

Replizieren Sie den CI/CD-Workflow mit GitHub Actions und der Aktion azure/webapps-deploy und verstehen Sie, wann GitHub Actions gegenüber Azure Pipelines vorzuziehen ist. Du übst Cloud & IT Cert Prep mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Cloud & IT Cert Prep zu starten?

Keine Vorkenntnisse erforderlich. Cloud & IT Cert Prep auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „GitHub Actions in Azure“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Cloud & IT Cert Prep-Lektion Code schreiben und ausführen?

Ja. Jede Cloud & IT Cert Prep-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Überblick über Azure DevOps Services
  2. Eine CI-Pipeline mit Azure Pipelines erstellen
  3. Kontinuierliche Bereitstellung in Azure
  4. GitHub Actions in Azure
← Zurück zu Cloud & IT Cert Prep