Een aangepaste container implementeren in App Service met behulp van GitHub Actions
GitHub Actions biedt u de flexibiliteit om een geautomatiseerde werkstroom voor softwareontwikkeling te bouwen. Met de Azure Web Deploy-actiekunt u uw werkstroom automatiseren om aangepaste containers te implementeren in App Service met behulp GitHub Actions.
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 in de werkstroom.
Voor een Azure App Service containerwerkstroom heeft het bestand drie secties:
| Sectie | Taken |
|---|---|
| Verificatie | 1. Haal een service-principal op of publiceer een profiel. 2. Maak een GitHub-opslagplaats. |
| Build | 1. Maak de omgeving. 2. Bouw de containerafbeelding. |
| Implementeren | 1. De containerafbeelding implementeren. |
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. Zorg ervoor dat u de volledige implementatie voor Azure App Service containers voltooit. In tegenstelling tot gewone web-apps hebben web-apps voor containers geen standaardlandingspagina. Publiceer de container om een werkend voorbeeld te hebben.
Genereer implementatiereferenties
De aanbevolen manier om te verifiëren met Azure-app Services voor GitHub Actions is met een publicatieprofiel. U kunt ook verifiëren met een service-principal, maar voor het proces zijn meer stappen vereist.
Sla uw publicatieprofielreferentie of service-principal op als een GitHub-geheim om te verifiëren bij Azure. U hebt toegang tot het geheim in uw werkstroom.
Een publicatieprofiel is een referentie op app-niveau. Stel uw publicatieprofiel in als een GitHub-geheim.
Ga naar uw app-service in de Azure Portal.
Selecteer op de pagina Overzicht de optie Publicatieprofiel krijgen.
Notitie
Vanaf oktober 2020 moet voor Linux-web-apps de app-instelling zijn
WEBSITE_WEBDEPLOY_USE_SCMingesteld op voordat het bestand wordttruegedownload. Deze vereiste wordt in de toekomst verwijderd. Zie Een App Service-app configureren in de Azure Portalvoor meer informatie over het configureren van algemene web-app-instellingen.Sla het gedownloade bestand op. U gebruikt de inhoud van het bestand om een GitHub-geheim te maken.
Het GitHub-geheim voor verificatie configureren
Blader in GitHubdoor uw opslagplaats, selecteer Instellingen > Geheimen > Een nieuw geheim toevoegen.
Als u referenties op app-niveau wiltgebruiken, plakt u de inhoud van het gedownloade publicatieprofielbestand in het waardeveld van het geheim. Noem het geheim AZURE_WEBAPP_PUBLISH_PROFILE .
Wanneer u uw GitHub-werkstroom configureert, gebruikt u AZURE_WEBAPP_PUBLISH_PROFILE de in de actie Azure Web App implementeren. Bijvoorbeeld:
- uses: azure/webapps-deploy@v2
with:
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
GitHub-geheimen configureren voor uw register
Definieer geheimen die moeten worden gebruikt met de actie Docker-aanmelding. In het voorbeeld in dit document wordt Azure Container Registry gebruikt voor het containerregister.
Ga naar uw container in de Azure Portal of Docker en kopieer de gebruikersnaam en het wachtwoord. U vindt de Azure Container Registry en het wachtwoord in de Azure Portal onder Instellingen Toegangssleutels > voor uw register.
Definieer een nieuw geheim voor de register-gebruikersnaam met de naam
REGISTRY_USERNAME.Definieer een nieuw geheim voor het registerwachtwoord met de naam
REGISTRY_PASSWORD.
De containerafbeelding bouwen
In het volgende voorbeeld wordt een deel van de werkstroom voor het bouwen van een Node.JS Docker-afbeelding. Gebruik Docker-aanmelding om u aan te melden bij een privécontainerregister. In dit voorbeeld wordt Azure Container Registry 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 aan te melden bij meerdere containerregisters tegelijk. Dit voorbeeld bevat twee nieuwe GitHub-geheimen voor verificatie met docker.io. In het voorbeeld wordt ervan uitgenomen 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 }}
Implementeren naar een App Service container
Als u uw afbeelding 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) Is van toepassing Web Apps (Windows en Linux) en Web App Containers (Linux). Scenario met meerdere containers wordt niet ondersteund. Bestandsinhoud van * profiel (.publishsettings) publiceren met Web Deploy-geheimen |
| sleufnaam | (Optioneel) Een andere bestaande sleuf dan de productiesleuf invoeren |
| package | (Optioneel) Alleen van toepassing op web-app: pad naar pakket of map. *.zip, * .war, * .jar of een map die moet worden geïmplementeerd |
| Afbeeldingen | (vereist) Alleen van toepassing op web-app-containers: geef de volledig gekwalificeerde containernaam(en) op. Bijvoorbeeld 'myregistry.azurecr.io/nginx:latest' of 'python:3.7.2-alpine/'. Voor een app met meerdere containers kunnen meerdere namen van containerafbeeldingen worden opgegeven (gescheiden door meerdere lijnen) |
| configuratiebestand | (Optioneel) Alleen van toepassing op web-app-containers: pad van Docker-Compose bestand. Moet een volledig gekwalificeerd pad zijn of relatief ten opzichte van de standaarddirectory. Vereist voor apps met meerdere containers. |
| startup-command | (Optioneel) Voer de opstartopdracht in. Voor 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 }}'
Volgende stappen
U vindt onze set acties gegroepeerd in verschillende opslagplaatsen op GitHub, elk met documentatie en voorbeelden om u te helpen GitHub voor CI/CD te gebruiken en uw apps te implementeren in Azure.