Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Sie können GitHub-Aktionen verwenden, um einen automatisierten Softwareentwicklungsworkflow zu erstellen. Sie können die Azure Web Deploy-Aktion verwenden, um Ihren Workflow zu automatisieren und benutzerdefinierte Container in Azure App Service bereitzustellen.
Ein Workflow wird durch eine YAML-Datei im Pfad /.github/workflows/ in Ihrem Repository definiert. Diese Definition enthält die verschiedenen Schritte und Parameter im Workflow.
Für einen App Service-Containerworkflow weist die Datei drei Abschnitte auf:
| `Section` | Aufgaben |
|---|---|
| Authentifizierung | 1. Abrufen eines Dienstprinzipals oder Veröffentlichungsprofils 2. Erstellen Sie ein GitHub-Geheimnis. |
| Build | 1. Erstellen der Umgebung 2. Erstellen des Containerimages |
| Bereitstellen | 1. Bereitstellen des Containerimages |
Voraussetzungen
- Ein Azure-Konto mit einem aktiven Abonnement. Kostenlos ein Konto erstellen.
- Ein GitHub-Konto. Falls Sie noch nicht über ein Konto verfügen, können Sie sich kostenlos registrieren. Für die Bereitstellung in Azure App Service benötigen Sie Code in einem GitHub-Repository.
- Eine funktionierende Containerregistrierung und eine Azure App Service-App für Container. In diesem Beispiel wird Azure Container Registry verwendet. Stellen Sie sicher, dass Sie die vollständige Bereitstellung für Azure App Service für Container abschließen. Im Gegensatz zu regulären Web-Apps verfügen Web-Apps für Container nicht über eine standardmäßige Landing Page. Veröffentlichen Sie den Container, und erhalten Sie so ein funktionsfähiges Beispiel.
- Führen Sie die folgenden Aufgaben aus: Erfahren Sie, wie Sie mithilfe von Docker eine containerisierte Node.js Anwendung erstellen, das Containerimage an eine Registrierung übertragen und dann das Image in Azure App Service bereitstellen.
Generieren von Anmeldeinformationen für die Bereitstellung
Es wird empfohlen, sich mit Azure App Services für GitHub-Aktionen mithilfe von OpenID Connect zu authentifizieren. Sie können sich auch mit einem Dienstprinzipal oder einem Veröffentlichungsprofil authentifizieren.
Speichern Sie die Anmeldeinformationen des Veröffentlichungsprofils oder den Dienstprinzipal als GitHub-Geheimnis, um sich bei Azure zu authentifizieren. Sie greifen auf den geheimen Schlüssel in Ihrem Workflow zu.
Ein Veröffentlichungsprofil stellt Anmeldeinformationen auf App-Ebene dar. Richten Sie Ihr Veröffentlichungsprofil als GitHub-Geheimnis ein.
Wechseln Sie im Azure-Portal zu App Service.
Wählen Sie im Bereich "Übersicht " die Option "Veröffentlichungsprofil abrufen" aus.
Hinweis
Ab Oktober 2020 müssen Benutzer die App-Einstellung für Linux-Web-Apps
WEBSITE_WEBDEPLOY_USE_SCMauftruefestlegen, bevor sie die Datei herunterladen. Informationen zum Konfigurieren allgemeiner Web-App-Einstellungen finden Sie unter "Konfigurieren einer App Service-App" im Azure-Portal.Speichern Sie die heruntergeladene Datei. Sie verwenden den Inhalt der Datei, um einen GitHub-Geheimschlüssel zu erstellen.
Konfigurieren des GitHub-Geheimnisses für die Authentifizierung
Suchen Sie auf GitHub nach Ihrem Repository. Wählen Sie Einstellungen>Sicherheit>Geheimnisse und Variablen>Aktionen>Neues Repositorygeheimnis aus.
Um Anmeldeinformationen auf App-Ebene zu verwenden, fügen Sie den Inhalt der heruntergeladenen Veröffentlichungsprofildatei in das Wertfeld des Geheimnisses ein. Geben Sie dem Geheimnis den Namen AZURE_WEBAPP_PUBLISH_PROFILE.
Wenn Sie Ihren GitHub-Workflow konfigurieren, verwenden Sie das AZURE_WEBAPP_PUBLISH_PROFILE-Geheimnis in der Bereitstellungsaktion für die Azure-Web-App. Beispiel:
- uses: azure/webapps-deploy@v2
with:
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
Konfigurieren von GitHub-Geheimnissen für die Registrierung
Definieren Sie Geheimnisse für die Docker-Anmeldeaktion. Im Beispiel in diesem Artikel wird azure Container Registry für die Containerregistrierung verwendet.
Wechseln Sie im Azure-Portal oder in Docker zu Ihrem Container, und kopieren Sie den Benutzernamen und das Kennwort. Den Benutzernamen und das Kennwort für Azure Container Registry finden Sie im Azure-Portal unter Einstellungen>Zugriffsschlüssel für Ihre Registrierung.
Definieren Sie ein neues Geheimnis für den Registrierungsbenutzer mit dem Namen
REGISTRY_USERNAME.Definieren Sie ein neues Geheimnis für das Registrierungskennwort mit dem Namen
REGISTRY_PASSWORD.
Erstellen des Containerimages
Das folgende Beispiel zeigt einen Teil des Workflows, der ein Node.js Docker-Image erstellt. Verwenden Sie Docker Login , um sich bei einer privaten Containerregistrierung anzumelden. In diesem Beispiel wird Azure Container Registry verwendet, die gleiche Aktion funktioniert jedoch auch mit anderen Registrierungen.
name: Linux Container Node Workflow
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: azure/docker-login@v1
with:
login-server: mycontainer.azurecr.io
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- run: |
docker build . -t mycontainer.azurecr.io/myapp:${{ github.sha }}
docker push mycontainer.azurecr.io/myapp:${{ github.sha }}
Sie können die Docker-Anmeldung auch verwenden, um sich gleichzeitig bei mehreren Containerregistrierungen anzumelden. Dieses Beispiel enthält zwei neue GitHub-Geheimnisse für die Authentifizierung mit docker.io. Im Beispiel wird davon ausgegangen, dass ein Dockerfile auf der Stammebene der Registrierung vorhanden ist.
name: Linux Container Node Workflow
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: azure/docker-login@v1
with:
login-server: mycontainer.azurecr.io
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- uses: azure/docker-login@v1
with:
login-server: index.docker.io
username: ${{ secrets.DOCKERIO_USERNAME }}
password: ${{ secrets.DOCKERIO_PASSWORD }}
- run: |
docker build . -t mycontainer.azurecr.io/myapp:${{ github.sha }}
docker push mycontainer.azurecr.io/myapp:${{ github.sha }}
Das folgende Beispiel zeigt einen Teil des Workflows zum Erstellen eines Windows-Docker-Images. Verwenden Sie Docker Login , um sich bei einer privaten Containerregistrierung anzumelden. In diesem Beispiel wird Azure Container Registry verwendet, die gleiche Aktion funktioniert jedoch auch mit anderen Registrierungen.
name: Windows Container Workflow
on: [push]
jobs:
build:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- uses: azure/docker-login@v1
with:
login-server: mycontainer.azurecr.io
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- run: |
docker build . -t mycontainer.azurecr.io/myapp:${{ github.sha }}
docker push mycontainer.azurecr.io/myapp:${{ github.sha }}
Sie können die Docker-Anmeldung auch verwenden, um sich gleichzeitig bei mehreren Containerregistrierungen anzumelden. Dieses Beispiel enthält zwei neue GitHub-Geheimnisse für die Authentifizierung mit docker.io. Im Beispiel wird davon ausgegangen, dass ein Dockerfile auf der Stammebene der Registrierung vorhanden ist.
name: Windows Container Workflow
on: [push]
jobs:
build:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- uses: azure/docker-login@v1
with:
login-server: mycontainer.azurecr.io
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- uses: azure/docker-login@v1
with:
login-server: index.docker.io
username: ${{ secrets.DOCKERIO_USERNAME }}
password: ${{ secrets.DOCKERIO_PASSWORD }}
- run: |
docker build . -t mycontainer.azurecr.io/myapp:${{ github.sha }}
docker push mycontainer.azurecr.io/myapp:${{ github.sha }}
Bereitstellung in einem App Service-Container
Um Ihr Image in einem benutzerdefinierten Container in App Service bereitzustellen, verwenden Sie die Aktion azure/webapps-deploy@v2. Diese Aktion umfasst sieben Parameter:
| Parameter | Erklärung |
|---|---|
app-name |
(Erforderlich) Name der App Service-App. |
publish-profile |
(Optional) Wird mit Web-Apps (Windows und Linux) und Web-App-Containern (Linux) verwendet. Szenario mit mehreren Containern wird nicht unterstützt. Veröffentlichen der Inhalte der Profildatei \*.publishsettings mit Web Deploy-Geheimnissen. |
slot-name |
(Optional) Geben Sie einen anderen Slot als den Produktionsslot ein. |
package |
(Optional) Wird nur für Web-Apps verwendet: Pfad zum Paket oder Ordner.
\*.zip, \*.war, \*.jaroder ein Ordner, der bereitgestellt werden soll. |
images |
(Erforderlich) Wird nur für Web-App-Container verwendet: Geben Sie den vollqualifizierten Containerimagenamen an. Zum Beispiel: myregistry.azurecr.io/nginx:latest oder python:3.12.12-alpine/. Für eine App mit mehreren Containern können mehrere Containerimagenamen angegeben werden (mehrere getrennte Zeilen). |
configuration-file |
(Optional) Wird nur für Web-App-Container verwendet: Pfad der Docker Compose-Datei. Es muss sich um einen vollqualifizierten Pfad oder einen Pfad relativ zum Standardarbeitsverzeichnis handeln. Dieser Parameter ist beim Konfigurieren von Apps mit mehreren Containern erforderlich. |
startup-command |
(Optional) Geben Sie den Startbefehl ein. Beispiel: dotnet run oder dotnet filename.dll. |
name: Linux Container Node Workflow
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: azure/docker-login@v1
with:
login-server: mycontainer.azurecr.io
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- run: |
docker build . -t mycontainer.azurecr.io/myapp:${{ github.sha }}
docker push mycontainer.azurecr.io/myapp:${{ github.sha }}
- uses: azure/webapps-deploy@v2
with:
app-name: 'myapp'
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
images: 'mycontainer.azurecr.io/myapp:${{ github.sha }}'
name: Windows_Container_Workflow
on: [push]
jobs:
build:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- uses: azure/docker-login@v1
with:
login-server: mycontainer.azurecr.io
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- run: |
docker build . -t mycontainer.azurecr.io/myapp:${{ github.sha }}
docker push mycontainer.azurecr.io/myapp:${{ github.sha }}
- uses: azure/webapps-deploy@v2
with:
app-name: 'myapp'
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
images: 'mycontainer.azurecr.io/myapp:${{ github.sha }}'
Verwandte Inhalte
Sie finden unsere Gruppe von Aktionen, die in verschiedenen Repositorys auf GitHub gruppiert sind. Jedes Repository enthält Dokumentationen und Beispiele, mit denen Sie GitHub für CI/CD verwenden und Ihre Apps in Azure bereitstellen können.