Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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
- Be kell jelentkeznie a GitHub-fiókjába a Visual Studióban.
- Egy Azure-fiók. Ha nem rendelkezik Azure-fiókkal, aktiválja az Azure-előnyöket a Visual Studio előfizetői számára , vagy regisztráljon egy ingyenes próbaverzióra.
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.
A következő képernyőn válassza az Azure-t , majd a Tovább gombot.
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.
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.
A Visual Studio létrehoz egy új GitHub Actions-munkafolyamatot, és megkéri, hogy véglegesítse és küldje el a GitHub.com.
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 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.
A sikeres üzembe helyezéshez szolgáltatásazonosítóhoz is hozzá kell férni.
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.
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.
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.
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ó.
A GitHub Actions-munkafolyamat célképernyőjén válassza az Azure-t.
Az adott célhoz válassza az Azure Container Appst. A varázsló a Container App képernyőre lép.
Válasszon ki egy meglévő Azure Container App alkalmazást, vagy válassza az Új létrehozása lehetőséget.
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.
A létrehozás után megjelenik az új Azure Container Apps-példány.
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.
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.
A létrehozás után az új beállításjegyzék megjelenik a képernyőn.
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.
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.
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.
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