Megosztás a következőn keresztül:


Az alkalmazás üzembe helyezése az Azure-ban a Visual Studio által létrehozott GitHub Actions-munkafolyamatokkal

A Visual Studio 2019 16.11-es verziójától kezdve létrehozhat új GitHub Actions-munkafolyamatokat a GitHub.com üzemeltetett .NET-projektekhez.

Előfeltételek

Egyetlen projekt üzembe helyezése az Azure-ban a GitHub Actions használatával

A Megoldáskezelőben kattintson a jobb gombbal a GitHub.com üzemeltetett projektre, és válassza a Közzététel lehetőséget.

kattintson a jobb gombbal a Közzététel gombra >

A következő képernyőn válassza az Azure-t , majd a Tovább gombot.

válassza az Azure-t

A projekt típusától függően egy másik listát kap az Azure-szolgáltatásokról, amelyek közül választhat. Válasszon az igényeinek megfelelő támogatott Azure-szolgáltatások közül.

válassza ki a projekthez megfelelő Azure-szolgáltatást

A varázsló utolsó lépésében válassza a CI/CD elemet a GitHub Actions-munkafolyamatok használatával (yml-fájlt hoz létre), majd válassza a Befejezés lehetőséget.

CI/CD GitHub Actions-munkafolyamatokkal (yml-fájlt hoz létre)

A Visual Studio létrehoz egy új GitHub Actions-munkafolyamatot, és megkéri, hogy véglegesítse és küldje el a GitHub.com.

véglegesítés és leküldés

Ha ezt a lépést a beépített Git-eszközzel hajtja végre, a Visual Studio észleli a munkafolyamat végrehajtását.

a munkafolyamat fut

A GitHub titkos kulcsainak beállítása

Ahhoz, hogy a létrehozott munkafolyamat sikeresen üzembe helyezhető legyen az Azure-ban, szükség lehet egy közzétételi profilhoz való hozzáférésre.

egy GitHub-titkos kód

A sikeres üzembe helyezéshez szolgáltatásazonosítóhoz is hozzá kell férni.

két GitHub-titkos kód

A Visual Studio minden esetben a megfelelő értékkel próbálja beállítani a GitHub-titkos kulcsot. Ha nem sikerül, tudatja Önével, és lehetőséget ad az újrapróbálkozására.

Hiányzik a GitHub titkos kódja

Ha nem állítja be újra a titkos kulcsot, a Visual Studio lehetővé teszi, hogy manuálisan hozzáférjen a titkos kódhoz, így a folyamatot az adattár GitHub.com oldalon keresztül hajthatja végre.

hiányzó GitHub-titok beállítása

Több projekt üzembe helyezése az Azure Container Appsben a GitHub Actions használatával

Ezek a lépések akkor megfelelőek, ha több, Docker-tárolót használó projektje van, és többprojektes alkalmazásként szeretné üzembe helyezni őket. Többprojektes alkalmazásokat is üzembe helyezhet, például mikroszolgáltatásokat megvalósító alkalmazásokat az Azure Container Appsben vagy az Azure Kubernetes Service-ben (AKS). Ez a cikk az Azure Container Appst ismerteti.

  1. Kattintson a jobb gombbal a GitHub Actions csomópontra a Megoldáskezelőben, és válassza az Új munkafolyamat lehetőséget. Megjelenik a GitHub Actions munkafolyamat varázsló.

    Képernyőkép a GitHub Actions csomópont menüjéről.

  2. A GitHub Actions-munkafolyamat célképernyőjén válassza az Azure-t.

  3. Az adott célhoz válassza az Azure Container Appst. A varázsló a Container App képernyőre lép.

    Képernyőkép a meglévő Azure Container Appsről.

  4. Válasszon ki egy meglévő Azure Container App alkalmazást, vagy válassza az Új létrehozása lehetőséget.

    Képernyőkép a meglévő Azure Container Appsről.

    Amikor újat hoz létre, megjelenik ez a képernyő. Tesztelés vagy tanulás során általában érdemes létrehozni egy új erőforráscsoportot, hogy később könnyebben törölhessen mindent. A Container Apps-környezet biztonságos határt jelent azon tárolóalkalmazások csoportjai körül, amelyek ugyanazt a virtuális hálózatot használják, és naplókat írnak ugyanahhoz a naplózási célhelyhez. Tekintse meg az Azure Container Apps-környezeteket. Ha nem tudja, hogy mi az, vagy még nem hozott létre egyet korábban, ehhez hozzon létre egy újat.

    Képernyőkép egy új Azure Container Apps-példány létrehozásáról.

    A létrehozás után megjelenik az új Azure Container Apps-példány.

    Képernyőkép az újonnan létrehozott Azure Container Apps-példányról.

  5. A Tovább gombot választva lépjen a Beállításjegyzék képernyőjére. Válasszon ki egy meglévő Azure Container Registryt, vagy hozzon létre egy újat.

    Képernyőkép az Azure Container Registry képernyőről.

    Ha úgy dönt, hogy létrehoz egy újat, megjelenik ez a képernyő. Adja meg az erőforráscsoportot, az termékváltozatot, és ha lehetséges, válassza ki ugyanazt a régiót, mint korábban. Az Azure Container Registry termékváltozatairól további információt az Azure Container Registry szolgáltatásszintjeiben talál.

    Képernyőkép az imént létrehozott új Azure Container Registryről.

    A létrehozás után az új beállításjegyzék megjelenik a képernyőn.

    Képernyőkép egy új Azure Container Registry létrehozásáról.

  6. Megjelennek a megoldásban üzembe helyezhető projektek; válassza ki azokat a projekteket, amelyeket együtt szeretne üzembe helyezni ugyanabban az Azure Container Apps-példányban.

    Képernyőkép az üzembe helyezendő projektek kiválasztásáról.

  7. Válassza a Befejezés lehetőséget. Láthatja az azure-beli objektumok létrehozásához és a hitelesítés beállításához kiadott parancsokat. Ha valami nem sikerül, jegyezze fel a használt parancssort, mert újra kipróbálhatja a parancssori felületről. Ne aggódjon túl sokat, ha ebben a szakaszban engedélyezési hibát kap. A hitelesítést később a Visual Studióban is beállíthatja.

  8. A befejezés után megjelenik az összefoglaló képernyő. Az összegző képernyőn a Visual Studio által a GitHub-adattárban a GitHub Actions titkos kulcsai alatt létrehozott bejegyzéseknek megfelelő hitelesítő adatok láthatók. Ellenőrizze, hogy vannak-e sárga figyelmeztető jelek. Ha a létrehozási folyamat során a hitelesítési lépések bármelyike sikertelen volt, ezt itt kijavíthatja a figyelmeztető jel hivatkozására kattintva és néhány lépés végrehajtásával.

  9. Nyissa meg a munkafolyamat-fájlt annak ellenőrzéséhez, hogy mit hozott létre a Visual Studio. Bár a Visual Studio mindent megtesz, hogy munkafolyamatot hozzon létre az Ön helyzetéhez, minden alkalmazás és adattár egyedi, ezért gyakran manuálisan kell szerkesztenie a Visual Studio által létrehozott munkafolyamat YML-fájlját, mielőtt az sikeresen lefutna. A megnyitásához bontsa ki a GitHub Actions csomópontot a Megoldáskezelőben, kattintson a jobb gombbal az imént létrehozott munkafolyamatra, és válassza a Szerkesztés parancsot.

Az alábbiakban egy példa látható a Visual Studio által egy olyan megoldáshoz létrehozott munkafolyamat-fájlra, amely két üzembe helyezhető projektet, a WebAPI-t és a WebFrontEndet tartalmazza.

on:
push:
  branches:
  - main
env:
CONTAINER_REGISTRY_LOGIN_SERVER: registry20230810121555.azurecr.io
CONTAINER_APP_NAME: containerapp20230810121017
CONTAINER_APP_RESOURCE_GROUP_NAME: webfrontend-container-app-1234
CONTAINER_APP_CONTAINER_NAME: containerapp
jobs:
WebApi_buildImageAndDeploy:
  runs-on: ubuntu-latest
  steps:
  - name: Checkout source code
    uses: actions/checkout@v3
  - name: Set up Docker Buildx
    uses: docker/setup-buildx-action@v2
  - name: Login to Docker registry
    uses: docker/login-action@v2
    with:
      registry: ${{ env.CONTAINER_REGISTRY_LOGIN_SERVER }}
      username: ${{ secrets.registry20230810121555_USERNAME_6891 }}
      password: ${{ secrets.registry20230810121555_PASSWORD_6891 }}
  - name: Build and push Docker image to Azure Container Registry
    uses: docker/build-push-action@v4
    with:
      push: true
      tags: ${{ env.CONTAINER_REGISTRY_LOGIN_SERVER }}/webapi:${{ github.sha }}
      file: WebApi\Dockerfile
  - name: Azure login
    uses: azure/login@v1
    with:
      creds: ${{ secrets.containerapp20230810121017_SPN }}
  - name: Deploy to Azure container app
    uses: azure/CLI@v1
    with:
      inlineScript: >-
        az config set extension.use_dynamic_install=yes_without_prompt
        az containerapp registry set --name ${{ env.CONTAINER_APP_NAME }} --resource-group ${{ env.CONTAINER_APP_RESOURCE_GROUP_NAME }} --server ${{ env.CONTAINER_REGISTRY_LOGIN_SERVER }} --username ${{ secrets.registry20230810121555_USERNAME_2047 }} --password ${{ secrets.registry20230810121555_PASSWORD_2047 }}
        az containerapp update --name ${{ env.CONTAINER_APP_NAME }} --container-name ${{ env.CONTAINER_APP_CONTAINER_NAME }} --resource-group ${{ env.CONTAINER_APP_RESOURCE_GROUP_NAME }} --image ${{ env.CONTAINER_REGISTRY_LOGIN_SERVER }}/webapi:${{ github.sha }}
  - name: Azure logout
    run: az logout
WebFrontEnd_buildImageAndDeploy:
  runs-on: ubuntu-latest
  needs: WebApi_buildImageAndDeploy
  steps:
  - name: Checkout source code
    uses: actions/checkout@v3
  - name: Set up Docker Buildx
    uses: docker/setup-buildx-action@v2
  - name: Login to Docker registry
    uses: docker/login-action@v2
    with:
      registry: ${{ env.CONTAINER_REGISTRY_LOGIN_SERVER }}
      username: ${{ secrets.registry20230810121555_USERNAME_2047 }}
      password: ${{ secrets.registry20230810121555_PASSWORD_2047 }}
  - name: Build and push Docker image to Azure Container Registry
    uses: docker/build-push-action@v4
    with:
      push: true
      tags: ${{ env.CONTAINER_REGISTRY_LOGIN_SERVER }}/webfrontend:${{ github.sha }}
      file: WebFrontEnd\Dockerfile
  - name: Azure login
    uses: azure/login@v1
    with:
      creds: ${{ secrets.containerapp20230810121017_SPN }}
  - name: Deploy to Azure container app
    uses: azure/CLI@v1
    with:
      inlineScript: >-
        az config set extension.use_dynamic_install=yes_without_prompt
        az containerapp registry set --name ${{ env.CONTAINER_APP_NAME }} --resource-group ${{ env.CONTAINER_APP_RESOURCE_GROUP_NAME }} --server ${{ env.CONTAINER_REGISTRY_LOGIN_SERVER }} --username ${{ secrets.registry20230810121555_USERNAME_2047 }} --password ${{ secrets.registry20230810121555_PASSWORD_2047 }}
        az containerapp update --name ${{ env.CONTAINER_APP_NAME }} --container-name ${{ env.CONTAINER_APP_CONTAINER_NAME }} --resource-group ${{ env.CONTAINER_APP_RESOURCE_GROUP_NAME }} --image ${{ env.CONTAINER_REGISTRY_LOGIN_SERVER }}/webfrontend:${{ github.sha }}
  - name: Azure logout
    run: az logout

A munkafolyamat fő funkciója, hogy a megfelelő hitelesítéssel jelentkezzen be az Azure-szolgáltatásokba, és futtassa a parancsokat az alkalmazás létrehozásához és üzembe helyezéséhez.

A munkafolyamat szerkesztése és tesztelése

A fenti eljárás létrehoz egy munkafolyamat YML-fájlt, de általában át kell tekintenie és testre kell szabnia, mielőtt az üzembe helyezéshez használható lenne. Előfordulhat, hogy a GitHub munkafolyamat-műveletek írására vonatkozó útmutatójára kell hivatkoznia; lásd : Az egyéni műveletek ismertetése. A munkafolyamat-fájl számos konfigurálható elemet tartalmaz, például a környezeti változók beállításait és a titkos kulcsok nevét. Megtekintheti a Dockerfile-fájlok helyére mutató hivatkozásokat, az Azure-tárolóalkalmazás nevét, a munkafolyamat-futtatások indításához használni kívánt adattárbeli ágat, valamint a GitHub titkos kulcsára mutató hivatkozásokat. A titkos kódokat a ${{ secrets.SECRET_NAME }}szintaxissal hivatkozzuk. Tekintse meg a GitHub Actions titkos kulcsokat.

Ha a projektek nem az adattár gyökerében találhatók, módosítania kell a munkafolyamatot a Docker-fájlok megkeresésének elérési útjának megadásához. Környezeti változók hozzáadása a Dockerfile relatív elérési útjaihoz mindkét projektben.

DOCKER_FILEPATH_WEBAPI: docker/ComposeSample/WebApi/Dockerfile
DOCKER_FILEPATH_WEBFRONTEND: docker/ComposeSample/WebFrontend/Dockerfile

Használja az alábbi környezeti változók értékeit a file paraméterhez az alábbiak szerint:

- name: Build and push Docker image to Azure Container Registry
  uses: docker/build-push-action@v4
  with:
    push: true
    tags: ${{ env.CONTAINER_REGISTRY_LOGIN_SERVER }}/webfrontend:${{ github.sha }}
    file: ${{ env.DOCKER_FILEPATH_WEBFRONTEND }}

Ha módosítania kell a Dockerfile-t, végezze el és mentse a módosításokat, véglegesítse és küldje el a távoli adattárba. A Visual Studio által létrehozott munkafolyamat tartalmaz egy eseményindítót, amely egy adott ágon való frissítés esetén futtatja azt. Ha a working ágra küldi a kódot, annak a következő kódhoz kell hasonlítania:

on:
  push:
  branches:
  - working

A módosítások teszteléséhez véglegesítse őket, és küldje el azokat az eseményindító kódban megadott adattár ágához. Nem kell lekéréses kérelmet (PR) létrehoznia. A munkafolyamat addig fut, amíg a push eseményindító a megfelelő ágra van állítva.

A GitHub.com tárhely Műveletek fülén keresse meg a munkafolyamat futását. Közvetlenül a Visual Studióban a GitHub Actions összegzési lapján található hivatkozással érheti el. A GitHubon megnyithatja a munkafolyamat-futtatásokat a naplók megtekintéséhez.

Hibaelhárítás

Az alábbi hibaelhárítási tippek hasznosak lehetnek, ha a munkafolyamat nem fut sikeresen.

Probléma: Az építési szakasz nem épül meg

A Dockerfile-ban az egyik probléma az lehet, hogy a buildelési fázis nem fog úgy működni, mint a Visual Studióban. A Visual Studio által a projekthez létrehozott alapértelmezett Dockerfile szemlélteti ezt a problémát. Ha rendelkezik ilyen Docker-fájlokkal, fontolja meg a buildelési szakasz alábbi módosításait. Íme egy példa arra, hogy egy projekt docker/ComposeSample/WebApi egy adattárban található. A teljes elérési út azért van megadva, mert a Dockerfile környezete a munkafolyamat kiépítési tárolójában az adattár gyökerére van beállítva, míg a Visual Studióban a projektmappa feletti mappára van beállítva. Az _build utótagot hozzáfűzi a buildmappa létrehozásához, és a projektfájl másolása helyett a teljes mappa ki lesz másolva. A Visual Studio által létrehozott alapértelmezett Dockerfile-fájlhoz képest a COPY parancs első argumentumában lévő elérési út fájlrésze el lett távolítva, így a projektfájl helyett a teljes mappát másoljuk. E módosítások nélkül ez a szakasz MSBuild hibát eredményez.

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["docker/ComposeSample/WebApi/", "WebApi_build/"]
RUN dotnet restore "WebApi_build/WebApi.csproj"
COPY . .
WORKDIR "/src/WebApi_build"
RUN dotnet build "WebApi.csproj" -c Release -o /app/build

Probléma: Hitelesítési adatok

A munkafolyamathoz be kell állítani a megfelelő felhasználónevet és jelszókulcsokat az Azure-hozzáféréshez. A Visual Studio ezt automatikusan megpróbálja megtenni az Azure-objektumok létrehozásakor vagy a GitHub Actions képernyőről a Microsoft Visual Studio IDE-ben. Ellenőrizheti a titkos kulcsokat a GitHubon, és ellenőrizheti, hogy ott vannak-e, vagy újragenerálhatja őket, és szükség esetén újból hozzáadhatja őket a GitHubhoz az adattár Beállítások szakaszával. Ellenőrizze a titkosítás azonosítóját a munkafolyamat egyes szakaszaiban található hivatkozásokkal szemben. Szükség esetén megnyithatja a tárolóregisztrációs adatbázist az Azure Portalon, és lekérheti a tárolóregisztrációs adatbázis felhasználónevét és jelszavát, és ezekkel az értékekkel frissítheti a titkos kulcsokat a GitHubon.

Ha a az ad sp create-for-rbac parancsot futtatta a szolgáltatásnév beállítására, valamint az ügyfélazonosító, ügyféltitok és bérlőazonosító lekérésére, akkor adja hozzá titkos kulcsként az ügyfélazonosítót és az ügyféltitkot a GitHub Actions Titkos kulcsok szakaszában a GitHub-adattárhoz. Az Azure-beli bejelentkezési hitelesítő adatokat felhasználónév (az alkalmazás ügyfélazonosítója) és jelszó (titkos ügyfélkód) formájában adhatja meg az Azure Container App-hitelesítéshez. Ehhez cserélje le a Azure login lépést a következő kódra. Használja az ügyfél-azonosítóhoz és az ügyfélkulcshoz létrehozott saját GitHub-titkosneveket, és használja a bérlőazonosítót ugyanannak a parancsnak a kimenetéből.

- name: Azure login
  uses: azure/CLI@v1
  with:
    inlineScript: |
      az login --service-principal -u ${{ secrets.GITHUB_SECRETID_FOR_USERNAME }} -p ${{ secrets.GITHUB_SECRETID_FOR_PASSWORD }} --tenant {your tenant ID}
      az account list

Ha a Dockerfile megfelelően működik, és a hitelesítés helyes, és továbbra is problémákat tapasztal a munkafolyamattal kapcsolatban, fontolja meg a következő erőforrásokat:

Mely projekttípusok támogatottak?

  • ASP.NET Core
  • ASP.NET 5-ös vagy újabb
  • Azure Functions

Mely Azure-szolgáltatások támogatottak?

  • Azure-webalkalmazások
  • Azure Functions
  • Azure API Management