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 actie Azure Web Deploy kunt u uw werkstroom automatiseren om aangepaste containers te implementeren in App Service met behulp van 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 die zich in de werkstroom bevinden.
Voor een Azure-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. |
Implementatie | 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.
Genereer implementatiereferenties
De aanbevolen manier om te verifiëren met Azure-app Services voor GitHub Actions is met een publicatieprofiel. U kunt zich ook verifiëren met een service-principal of Open ID Connect, maar het proces vereist meer stappen.
Sla uw publicatieprofielreferenties of service-principal op als een GitHub-geheim om te verifiëren met Azure. U opent 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 Azure Portal.
Selecteer Op de pagina Overzicht het profiel Publiceren ophalen.
Notitie
Vanaf oktober 2020 hebben Linux-web-apps de app-instelling nodig waarop deze is
WEBSITE_WEBDEPLOY_USE_SCM
ingesteldtrue
voordat het bestand wordt gedownload. Deze vereiste wordt in de toekomst verwijderd. Zie Een App Service-app configureren in Azure Portal voor 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 configureren voor verificatie
In GitHub, bladert u in uw opslagplaats. Selecteer Beveiligingsgeheimen > > en variabelen Instellingen Voor nieuwe > opslagplaatsgeheimen>.
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_PROFILE
een naam.
Wanneer u uw GitHub-werkstroom configureert, gebruikt u de AZURE_WEBAPP_PUBLISH_PROFILE
actie in de azure-web-app 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 document 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 containerinstallatiekopieën bouwen
In het volgende voorbeeld ziet u een deel van de werkstroom waarmee een Node.JS 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: 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 }}
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-naam | (Vereist) Naam van de App Service-app |
publicatieprofiel | (Optioneel) Van toepassing op Web Apps (Windows en Linux) en Web App Containers (Linux). Scenario met meerdere containers wordt niet ondersteund. Inhoud van het profiel (*.publishsettings) publiceren met Web Deploy-geheimen |
sitenaam | (Optioneel) Voer een andere site in dan de productiesite |
package | (Optioneel) Alleen van toepassing op web-app: pad naar pakket of map. *.zip, *.war, *.jar of een map die moet worden geïmplementeerd |
beelden | (Vereist) Alleen van toepassing op Web App Containers: Geef de volledig gekwalificeerde containerinstallatiekopieën op. Bijvoorbeeld 'myregistry.azurecr.io/nginx:latest' of 'python:3.7.2-alpine/'. Voor een app met meerdere containers kunnen meerdere namen van containerinstallatiekopieën worden opgegeven (gescheiden door meerdere regels) |
configuratiebestand | (Optioneel) Alleen van toepassing op 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. Voor bijvoorbeeld dotnet-uitvoering 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 die zijn gegroepeerd in verschillende opslagplaatsen op GitHub, elk met documentatie en voorbeelden om u te helpen GitHub voor CI/CD te gebruiken en uw apps in Azure te implementeren.