Egyéni tároló üzembe helyezése az App Service-ben a GitHub Actions használatával

A GitHub Actions használatával automatizált szoftverfejlesztési munkafolyamatot hozhat létre. Az Azure Web Deploy művelettel automatizálhatja a munkafolyamatot, és egyéni tárolókat helyezhet üzembe az Azure App Service-ben.

A munkafolyamatokat egy YAML-fájl (.yml) határozza meg az /.github/workflows/ adattár elérési útján. Ez a definíció a munkafolyamat különböző lépéseit és paramétereit tartalmazza.

Egy App Service-tároló munkafolyamata esetében a fájl három szakaszból áll:

Section Tevékenységek
Hitelesítés 1. Kérje le a szolgáltatásnevet vagy tegye közzé a profilt.
2. Hozzon létre egy GitHub-titkos kulcsot.
Build 1. Hozza létre a környezetet.
2. Hozza létre a tárolórendszerképet.
Telepítés 1. Helyezze üzembe a tárolórendszerképet.

Előfeltételek

Üzembehelyezési hitelesítő adatok létrehozása

Javasoljuk, hogy az Azure App Services for GitHub Actions használatával hitelesítse magát az OpenID Connect használatával. Hitelesítést szolgáltatásnévvel vagy közzétételi profillal is végezhet.

Az Azure-ral való hitelesítéshez mentse a közzétételi profil hitelesítő adatait vagy szolgáltatásnevét GitHub-titkos kódként. A titkos kulcsot a munkafolyamaton belül érheti el.

A közzétételi profil egy alkalmazásszintű hitelesítő adat. A közzétételi profil beállítása GitHub-titkos kódként.

  1. Nyissa meg az App Service-t az Azure Portalon.

  2. Az Áttekintés panelen válassza a Közzétételi profil lekérése lehetőséget.

    Feljegyzés

    2020 októberétől a felhasználóknak a WEBSITE_WEBDEPLOY_USE_SCM a Linux-webalkalmazások true alkalmazásbeállítását. A webalkalmazások általános beállításainak konfigurálásáról az App Service-alkalmazás konfigurálása az Azure Portalon című témakörben tájékozódhat.

  3. Mentse a letöltött fájlt. A fájl tartalmával létrehozhat egy GitHub-titkos kulcsot.

A GitHub-titkos kód konfigurálása hitelesítéshez

A GitHubon tallózzon az adattárban. Válassza a Beállítások>Biztonság>Titkok és változók>Műveletek>Új adattár titka lehetőséget.

Alkalmazásszintű hitelesítő adatok használatához illessze be a letöltött közzétételi profilfájl tartalmát a titkos kód értékmezőbe. Nevezze el a titkos kulcsot AZURE_WEBAPP_PUBLISH_PROFILE.

A GitHub-munkafolyamat konfigurálásakor használja a AZURE_WEBAPP_PUBLISH_PROFILE titkos kulcsot az Azure Web App üzembe helyezéséhez. Példa:

- uses: azure/webapps-deploy@v2
  with:
    publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}

GitHub-titkos kulcsok konfigurálása a beállításjegyzékhez

A Docker Bejelentkezési művelettel használandó titkos kulcsok meghatározása. A cikkben szereplő példa az Azure Container Registryt használja a tárolóregisztrációs adatbázishoz.

  1. Nyissa meg a tárolót az Azure Portalon vagy a Dockerben, és másolja ki a felhasználónevet és a jelszót. Az Azure Container Registry felhasználónevét és jelszavát az Azure Portalon, a beállításjegyzék beállításkulcsai> alatt találja.

  2. Adjon meg egy új titkos kulcsot a beállításjegyzékben szereplő felhasználónévhez REGISTRY_USERNAME.

  3. Adjon meg egy új titkos kulcsot a beállításjegyzékjelszóhoz REGISTRY_PASSWORD.

Tárolórendszerkép létrehozása

Az alábbi példa a Node.js Docker-rendszerképet összeállító munkafolyamat egy részét mutatja be. A Docker Login használatával jelentkezzen be egy privát tárolóregisztrációs adatbázisba. Ez a példa az Azure Container Registryt használja, de ugyanez a művelet más adatbázisok esetében is működik.

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 }}     

A Docker-bejelentkezés használatával egyszerre több tárolóregisztrációs adatbázisba is bejelentkezhet. Ez a példa két új GitHub-titkos kódot tartalmaz a docker.io való hitelesítéshez. A példa feltételezi, hogy a beállításjegyzék gyökérszintjén található egy Dockerfile.

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 }}     

Az alábbi példa a Windows Docker-rendszerképet összeállító munkafolyamat egy részét mutatja be. A Docker Login használatával jelentkezzen be egy privát tárolóregisztrációs adatbázisba. Ez a példa az Azure Container Registryt használja, de ugyanez a művelet más adatbázisok esetében is működik.

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 }}     

A Docker-bejelentkezés használatával egyszerre több tárolóregisztrációs adatbázisba is bejelentkezhet. Ez a példa két új GitHub-titkos kódot tartalmaz a docker.io való hitelesítéshez. A példa feltételezi, hogy a beállításjegyzék gyökérszintjén található egy Dockerfile.

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 }}     

Üzembe helyezés App Service-tárolóban

Ha a rendszerképet egy egyéni tárolóban szeretné üzembe helyezni az App Service-ben, használja a azure/webapps-deploy@v2 műveletet. Ez a művelet hét paraméterből áll:

Paraméter Magyarázat
app-name (Kötelező) Az App Service-alkalmazás neve.
publish-profile (Nem kötelező) Webalkalmazásokkal (Windows és Linux) és webalkalmazás-tárolókkal (Linux) használható. A többtárolós forgatókönyv nem támogatott. Profilfájl \*.publishsettings tartalmának közzététele webes üzembe helyezési titkos kódokkal.
slot-name (Nem kötelező) Adjon meg egy meglévő szlotot, amely eltér a gyártási szlottól.
package (Nem kötelező) Csak webalkalmazásokkal használható: A csomag vagy mappa elérési útja. \*.zip, \*.war, \*.jarvagy egy üzembe helyezendő mappa.
images (Kötelező) Csak webalkalmazás-tárolók esetén használható: Adja meg a teljes tárolórendszerkép nevét. Például, myregistry.azurecr.io/nginx:latest vagy python:3.12.12-alpine/. Többtárolós alkalmazások esetén több tárolórendszerkép neve is megadható (többsoros elválasztva).
configuration-file (Nem kötelező) Csak webalkalmazás-tárolókhoz használható: A Docker Compose-fájl elérési útja. Teljes elérési útnak kell lennie, vagy az alapértelmezett munkakönyvtárhoz képest. Többtárolós alkalmazásokhoz szükséges.
startup-command (Nem kötelező) Adja meg az indítási parancsot. Például: dotnet run vagy 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 }}'

A GitHubon különböző adattárakba csoportosított műveletkészletet találhat. Minden adattár dokumentációt és példákat tartalmaz a GitHub CI/CD-hez való használatához és az alkalmazások Azure-ban való üzembe helyezéséhez.