Share via


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

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.

  1. Ga naar uw app-service in Azure Portal.

  2. 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 ingesteld true 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.

  3. 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_PROFILEeen 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.

  1. 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.

  2. Definieer een nieuw geheim voor de gebruikersnaam van het register met de naam REGISTRY_USERNAME.

  3. 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.