Bekanntgabe der Vorschauversion von GitHub Actions für Azure

Veröffentlicht am 13 August, 2019

Principal Program Manager, Azure DevOps

Update vom 15. Oktober 2019: Beachten Sie, dass einige der erwähnten Aktionen während der Vorschauphase in neue GitHub-Repositorys verschoben wurden. Die aktualisierten Anweisungen finden Sie unter im GitHub-Repository Azure/actions.

Am Donnerstag, dem 8. August 2019, gab GitHub die Vorschauversion von GitHub Actions mit Unterstützung von Continuous Integration und Continuous Delivery (CI/CD) bekannt. Mithilfe von Actions können einfache, aber leistungsstarke Pipelines erstellt und die Kompilierung und Verteilung von Software automatisiert werden. Heute geben wir die Vorschauversion von GitHub Actions für Azure bekannt.

Mit diesen neuen Actions können Entwickler Code schnell in GitHub-Repositorys erstellen und testen und mit Azure in der Cloud bereitstellen.

Sie finden Ihre erste Gruppe von Actions über vier Repositorys auf GitHub verteilt, jeweils mit Dokumentation und Beispielen, die Ihnen dabei helfen, GitHub für CI/CD zu nutzen und Ihre Apps in Azure bereitzustellen.

  • azure/actions (login): Authentifizieren Sie sich bei einem Azure-Abonnement.
  • azure/appservice-actions: Stellen Sie Apps in Azure App Services mit den Features Web-Apps und Web-Apps für Container bereit.
  • azure/container-actions: Stellen Sie Verbindungen mit Containerregistrierungen her, einschließlich Docker Hub und Azure Container Registry, und erstellen und pushen Sie Containerimages.
  • azure/k8s-actions: Stellen Sie eine Verbindung mit einem Kubernetes-Cluster her, und führen Sie in diesem Bereitstellungen aus, einschließlich Azure Kubernetes Service (AKS).

Herstellen einer Verbindung mit Azure

Mit der login-Action (azure/actions) können Sie eine sichere Verbindung mit einem Azure-Abonnement herstellen.

Dazu ist die Verwendung eines Dienstprinzipals erforderlich, der gemäß den Anweisungen über die Azure-Befehlszeilenschnittstelle generiert werden kann. Verwenden Sie den in GitHub Actions integrierte Geheimnisspeicher, um die Ausgabe dieses Befehls sicher zu speichern.

Wenn in Ihrem Workflow Container enthalten sind, können Sie auch die Actions azure/k8s-actions/docker-login und azure/container-actions/aks-set-context verwenden, um eine Verbindung mit Azure-Diensten wie Container Registry bzw. AKS herzustellen.

Diese Actions tragen dazu bei, den Kontext für den restlichen Workflow festzulegen. Wenn Sie beispielsweise azure/container-actions/docker-login verwendet haben, können die nächsten Actions im Workflow Aufgaben wie das Erstellen und Markieren von Containerimages sowie das Pushen der Images in Container Registry erledigen.

Bereitstellen einer Web-App

Azure App Service ist eine verwaltete Plattform zum Bereitstellen und Skalieren von Webanwendungen. Sie können Ihre Web-App einfach mit den Actions azure/appservice-actions/webapp und azure/appservice-actions/webapp-container in Azure App Service bereitstellen.

Die Action azure/appservice-actions/webapp nimmt den Namen der App und den Pfad zu einem Archiv (ZIP, WAR, JAR) oder einem Ordner für die Bereitstellung entgegen.

azure/appservice-actions/webapp-container unterstützt das Bereitstellen von Container-Apps, einschließlich solcher mit mehreren Containern. In Verbindung mit azure/container-actions/docker-login können Sie einen vollständigen Workflow erstellen, der ein Containerimage erstellt, es in Container Registry pusht und dann in Web-App für Container bereitstellt.

Bereitstellen für Kubernetes

azure/k8s-actions/k8s-deploy hilft Ihnen dabei, eine Verbindung mit einem Kubernetes-Cluster herzustellen, Baking und Bereitstellung von Manifesten durchzuführen, Artefakte zu ersetzen, den Rolloutstatus zu überprüfen und Geheimnisse in AKS zu verwalten.

Die Action azure/k8s-actions/k8s-create-secret ist für die Erstellung geheimer Kubernetes-Objekte zuständig und hilft dadurch beim Verwalten von vertraulichen Informationen wie Kennwörtern und API-Token. Dazu gehört auch das Geheimnis „Docker-registry“, mit dem AKS private Images aus der Registrierung pullt. Mit dieser Action ist es möglich, den Kubernetes-Cluster mit Werten aus dem integrierten Geheimnisspeicher von GitHub Actions zu füllen.

Unsere containerspezifischen Actions wie die für Kubernetes und für die Interaktion mit Docker-Registrierungen sind spezifische für Azure und können mit jedem Kubernetes-Cluster (einschließlich selbst gehosteter, lokal und in anderen Clouds ausgeführter) sowie mit jeder Docker-Registrierung verwendet werden.

GitHub Actions für Azure

Vollständiges Beispiel

Hier ist ein Beispiel für einen End-to-End-Workflow, der ein Containerimage erstellt, in Container Registry pusht und dann mithilfe von Manifestdateien in einem AKS-Cluster bereitstellt.

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@master
   
    - uses: azure/container-actions/docker-login@master
      with:
        login-server: contoso.azurecr.io
        username: ${{ secrets.REGISTRY_USERNAME }}
        password: ${{ secrets.REGISTRY_PASSWORD }}
   
    - run: |
        docker build . -t contoso.azurecr.io/k8sdemo:${{ github.sha }}
        docker push contoso.azurecr.io/k8sdemo:${{ github.sha }}
     
    # Ziel-AKS-Cluster festlegen
    - uses: azure/k8s-actions/aks-set-context@master
      with:
        creds: '${{ secrets.AZURE_CREDENTIALS }}'
        cluster-name: contoso
        resource-group: contoso-rg
       
    - uses: azure/k8s-actions/k8s-create-secret@master
      with:
        container-registry-url: contoso.azurecr.io
        container-registry-username: ${{ secrets.REGISTRY_USERNAME }}
        container-registry-password: ${{ secrets.REGISTRY_PASSWORD }}
        secret-name: demo-k8s-secret

    - uses: azure/k8s-actions/k8s-deploy@master
      with:
        manifests: |
          manifests/deployment.yml
          manifests/service.yml
        images: |
          demo.azurecr.io/k8sdemo:${{ github.sha }}
        imagepullsecrets: |
          demo-k8s-secret

Weitere GitHub Actions-Optionen für Azure

Mit der Veröffentlichung der ersten Vorschauversion für GitHub Actions für Azure knüpfen wir an die Verbreitung von GitHub Actions an. In den nächsten Monaten werden wir unsere verfügbaren Actions weiter verbessern und neue veröffentlichen, die weitere Azure-Dienste einbinden.

Probieren Sie GitHub Actions für Azure aus, und teilen Sie uns Ihr Feedback über Twitter unter @AzureDevOps oder in der Entwicklercommunity mit. Wenn Sie während der Vorschauphase auf ein Problem stoßen, öffnen Sie bitte ein Problem im GitHub-Repository für die jeweilige Action.