Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
U kunt GitHub Actions gebruiken om een geautomatiseerde werkstroom voor softwareontwikkeling te bouwen. U kunt de actie Azure Web Deploy gebruiken om uw werkstroom te automatiseren en aangepaste containers te implementeren in Azure App Service.
Een werkstroom wordt gedefinieerd door een YAML-bestand (.yml) in het pad /.github/workflows/ in uw opslagplaats. Deze definitie bevat de verschillende stappen en parameters die zich in de werkstroom bevinden.
Voor een App Service-containerwerkstroom heeft het bestand drie secties:
| Sectie | Opdrachten |
|---|---|
| Verificatie | 1. Haal een service-principal of een publicatieprofiel op. 2. Maak een GitHub-geheim. |
| Bouwen | 1. Maak de omgeving. 2. Bouw de containerinstallatiekopieën. |
| Implementeren | 1. Implementeer de containerinstallatiekopieën. |
Vereisten
- Een Azure-account met een actief abonnement. Gratis een account maken
- Een GitHub-account. Als u geen account hebt, kunt u zich registreren voor een gratis account. U moet code in een GitHub-opslagplaats hebben om te implementeren in Azure-app Service.
- Een werkend containerregister en Azure-app Service-app voor containers. In dit voorbeeld wordt Azure Container Registry gebruikt. Zorg ervoor dat u de volledige implementatie naar Azure App Service voor containers voltooit. In tegenstelling tot gewone web-apps hebben web-apps voor containers geen standaardlandingspagina. Publiceer de container om een werkend voorbeeld te hebben.
- Voer deze taken uit: leer hoe u een in een container geplaatste Node.js toepassing maakt met behulp van Docker, de containerinstallatiekopieën naar een register pusht en vervolgens de installatiekopieën implementeert in Azure App Service.
Genereer implementatiereferenties
U wordt aangeraden zich te verifiëren met Azure App Services voor GitHub Actions met behulp van OpenID Connect. U kunt zich ook verifiëren met een service-principal of een publicatieprofiel.
Om te authentiseren met Azure, sla je je publicatieprofiel of service-principal op als een GitHub-geheim. U krijgt toegang tot de verborgen functie binnen uw werkstroom.
Een publicatieprofiel is een referentie op app-niveau. Stel uw publicatieprofiel in als een GitHub-geheim.
Ga naar App Service in Azure Portal.
Selecteer in het deelvenster Overzicht de optie Publicatieprofiel ophalen.
Notitie
Vanaf oktober 2020 moeten gebruikers de app-instelling voor Linux-web-apps
WEBSITE_WEBDEPLOY_USE_SCMtrueinstellen voordat ze het bestand downloaden. Als u wilt weten hoe u algemene web-app-instellingen configureert, gaat u naar Een App Service-app configureren in Azure Portal.Sla het gedownloade bestand op. U gebruikt de inhoud van het bestand om een GitHub-geheim te maken.
Het GitHub-geheim configureren voor verificatie
In GitHub, bladert u in uw opslagplaats. Selecteer Beveiligingsgeheimen>en variabelen Instellingen Voor nieuwe>
Als u referenties op app-niveau wilt gebruiken, plakt u de inhoud van het gedownloade publicatieprofielbestand in het waardeveld van het geheim. Geef het geheim AZURE_WEBAPP_PUBLISH_PROFILEeen naam.
Wanneer u uw GitHub-werkstroom configureert, gebruikt u het AZURE_WEBAPP_PUBLISH_PROFILE geheim in de azure-web-app-actie implementeren. Voorbeeld:
- uses: azure/webapps-deploy@v2
with:
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
GitHub-geheimen configureren voor uw register
Geheimen definiëren die moeten worden gebruikt met de actie Docker-aanmelding. In het voorbeeld in dit artikel wordt Azure Container Registry gebruikt voor het containerregister.
Ga naar uw container in Azure Portal of Docker en kopieer de gebruikersnaam en het wachtwoord. U vindt de gebruikersnaam en het wachtwoord van Azure Container Registry in Azure Portal onder Toegangssleutels voor instellingen>voor uw register.
Definieer een nieuw geheim voor de gebruikersnaam van het register met de naam
REGISTRY_USERNAME.Definieer een nieuw geheim voor het registerwachtwoord met de naam
REGISTRY_PASSWORD.
De containerafbeelding bouwen
In het volgende voorbeeld ziet u een deel van de workflow die een Node.js Docker-image bouwt. Gebruik Docker-aanmelding om u aan te melden bij een privécontainerregister. In dit voorbeeld wordt Azure Container Registry gebruikt, maar dezelfde actie werkt voor andere registers.
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 }}
U kunt docker-aanmelding ook gebruiken om u tegelijkertijd aan te melden bij meerdere containerregisters. Dit voorbeeld bevat twee nieuwe GitHub-geheimen voor verificatie met docker.io. In het voorbeeld wordt ervan uitgegaan dat er een Dockerfile is op het hoofdniveau van het register.
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 }}
In het volgende voorbeeld ziet u een deel van de werkstroom waarmee een Windows Docker-installatiekopieën worden gebouwd. Gebruik Docker-aanmelding om u aan te melden bij een privécontainerregister. In dit voorbeeld wordt Azure Container Registry gebruikt, maar dezelfde actie werkt voor andere registers.
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 }}
U kunt docker-aanmelding ook gebruiken om u tegelijkertijd aan te melden bij meerdere containerregisters. Dit voorbeeld bevat twee nieuwe GitHub-geheimen voor verificatie met docker.io. In het voorbeeld wordt ervan uitgegaan dat er een Dockerfile is op het hoofdniveau van het register.
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 }}
Implementeren in een App Service-container
Als u uw installatiekopieën wilt implementeren in een aangepaste container in App Service, gebruikt u de azure/webapps-deploy@v2 actie. Deze actie heeft zeven parameters:
| Parameter | Uitleg |
|---|---|
app-name |
(Vereist) Naam van de App Service-app. |
publish-profile |
(Optioneel) Wordt gebruikt met web-apps (Windows en Linux) en web-app-containers (Linux). Scenario met meerdere containers wordt niet ondersteund. Inhoud van profielbestand \*.publishsettings publiceren met Web Deploy secrets. |
slot-name |
(Optioneel) Voer een ander slot in dan het productieslot. |
package |
(Optioneel, alleen gebruikt met webapps: Pad naar pakket of map.)
\*.zip, \*.war, \*.jar, of een map die u wilt uitrollen. |
images |
(Vereist) Alleen gebruikt met web-app-containers: specificeer de volledig gekwalificeerde containerimagenaam. Een voorbeeld hiervan is myregistry.azurecr.io/nginx:latest of python:3.12.12-alpine/. Voor een app met meerdere containers kunnen meerdere container-images worden opgegeven (opgesplitst per regel). |
configuration-file |
(Optioneel) Alleen gebruikt met web-app-containers: Pad van het Docker Compose-bestand. Moet een volledig gekwalificeerd pad zijn of ten opzichte van de standaardwerkmap. Vereist voor apps met meerdere containers. |
startup-command |
(Optioneel) Voer de opstartopdracht in. Bijvoorbeeld: dotnet run of 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 }}'
Verwante inhoud
U vindt onze set acties die zijn gegroepeerd in verschillende opslagplaatsen op GitHub. Elke opslagplaats bevat documentatie en voorbeelden voor het gebruik van GitHub voor CI/CD en het implementeren van uw apps in Azure.