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


Egyéni tároló üzembe helyezése az App Service-ben az Azure Pipelines használatával

Az Azure DevOps lehetővé teszi a kód ingyenes munkafolyamatokkal való üzemeltetését, összeállítását, tervezését és tesztelését. Az Azure Pipelines ezen munkafolyamatok egyikeként való használata lehetővé teszi az alkalmazás üzembe helyezését a CI/CD-vel, amely bármilyen platformmal és felhővel működik. A folyamat yaML-fájlként van definiálva az adattár gyökérkönyvtárában.

Ebben a cikkben az Azure Pipelines használatával helyezünk üzembe egy Windows-tárolóalkalmazást az App Service-ben egy Git-adattárból az Azure DevOpsban. Feltételezi, hogy már rendelkezik egy .NET-alkalmazással, amely támogatja a dockerfile-t az Azure DevOpsban.

Előfeltételek

Szolgáltatáskapcsolat hozzáadása

A folyamat létrehozása előtt először létre kell hoznia a szolgáltatáskapcsolatot, mivel a sablon létrehozásakor a rendszer kérni fogja a kapcsolat kiválasztására és ellenőrzésére. A szolgáltatáskapcsolatokkal a feladatsablonok használatakor csatlakozhat a választott beállításjegyzékhez (ACR vagy Docker Hub). Új szolgáltatáskapcsolat hozzáadásakor válassza a Docker Registry lehetőséget. Az alábbi űrlap arra kéri, hogy válassza ki a Docker Hubot vagy az Azure Container Registryt a kapcsolódó információk mellett. Az oktatóanyag követéséhez használja az Azure Container Registryt. Az itt ismertetett utasításokat követve létrehozhat egy új szolgáltatáskapcsolatot.

Titkos kulcsok védelme

Mivel olyan bizalmas adatokat használunk, amelyeket nem szeretne, hogy mások hozzáférjenek, változókat használunk az információink védelmére. Hozzon létre egy változót az itt ismertetett utasítások követésével.

Változó hozzáadásához kattintson a folyamat szerkesztési nézetének jobb felső sarkában található Mentés gomb melletti Változók gombra. Válassza az Új változó gombot, és adja meg az adatait. Adja hozzá az alábbi változókat az egyes erőforrásokhoz megfelelő titkos kódokkal.

  • vmImageName: "windows-latest"
  • imageRepository: "your-image-repo-name"
  • dockerfilePath: "$(Build.SourcesDirectory)/path/to/Dockerfile"
  • dockerRegistryServiceConnection: "your-service-connection-number"

Új folyamat létrehozása

Miután létrehozta az adattárat a .NET-alkalmazással, és támogatja a dockerfile-t, az alábbi lépéseket követve létrehozhatja a folyamatot.

  1. A bal oldali menüsávon lépjen a Folyamatok elemre, és kattintson a Folyamat létrehozása gombra
  2. A következő képernyőn válassza az Azure Repos Git lehetőséget adattárként, és válassza ki azt az adattárat, amelyben a kód található
  3. A Konfigurálás lapon válassza a Kezdőfolyamat lehetőséget
  4. A következő Véleményezés lapon kattintson a Mentés gombra

Rendszerkép létrehozása és leküldése az Azure Container Registrybe

A folyamat létrehozása és mentése után szerkesztenie kell a folyamatot a tároló létrehozásának, a beállításjegyzékbe való leküldésnek és a rendszerkép App Service-ben való üzembe helyezésének lépéseinek futtatásához. A kezdéshez lépjen a Folyamatok menübe, válassza ki a létrehozott folyamatot, és kattintson a Szerkesztés gombra.

Először hozzá kell adnia a docker-feladatot a rendszerkép létrehozásához. Adja hozzá a következő kódot, és cserélje le a Dockerfile: app/Dockerfile fájlt a Dockerfile elérési útjára.

trigger:
 - main

 pool:
   vmImage: 'windows-latest' 

 variables:
   vmImageName: 'windows-latest'
   imageRepository: 'your-image-repo-name'
   dockerfilePath: '$(Build.SourcesDirectory)/path/to/Dockerfile'
   dockerRegistryServiceConnection: 'your-service-connection-number'

- stage: Build
  displayName: Build and push stage
  jobs:  
  - job: Build
    displayName: Build job
    pool:
      vmImage: $(vmImageName)
    steps:
    - task: Docker@2
      displayName: Build and push an image to container registry
      inputs:
        command: buildAndPush
        repository: $(imageRepository)
        dockerfile: $(dockerfilePath)
        containerRegistry: $(dockerRegistryServiceConnection)
        tags: |
          $(tag)

Az App Service üzembe helyezési feladatának hozzáadása

Ezután be kell állítania az üzembe helyezési feladatot. Ehhez meg kell követelni az előfizetés nevét, az alkalmazás nevét és a tárolóregisztrációs adatbázist. Adjon hozzá egy új szakaszt a yaml-fájlhoz az alábbi kód beillesztésével.

- stage: Deploy
  displayName: Deploy to App Service
  jobs:
  - job: Deploy
    displayName: Deploy
    pool:
      vmImage: $(vmImageName)
    steps:

Ezután lépjen a jobb felső sarokban található Segéd megjelenítése lapra, keresse meg a Azure-alkalmazás Szolgáltatás üzembe helyezési feladatát, és töltse ki a következő űrlapot:

  • Kapcsolat típusa: Azure Resource Manager
  • Azure-előfizetés: az Ön előfizetésének neve
  • App Service-típus: Web App for Containers (Windows)
  • App Service-név: saját alkalmazásnév
  • Beállításjegyzék vagy névtér: az Ön-azure-container-registry-namespace
  • Kép: a-azure-container-registry-image-name

Miután kitöltötte a feladatokat, kattintson a Hozzáadás gombra az alábbi feladat hozzáadásához:

- task: AzureRmWebAppDeployment@4
  inputs:
    ConnectionType: 'AzureRM'
    azureSubscription: 'my-subscription-name'
    appType: 'webAppHyperVContainer'
    WebAppName: 'my-app-name'
    DockerNamespace: 'myregsitry.azurecr.io'
    DockerRepository: 'dotnetframework:12'

A feladat hozzáadása után a folyamat készen áll a futtatásra. Kattintson az Ellenőrzés és mentés gombra, és futtassa a folyamatot. A folyamat végighalad a Windows-tárolórendszerkép Azure Container Registrybe történő összeállításának és leküldésének lépésein, és üzembe helyezi a rendszerképet az App Service-ben.

Az alábbi példa a teljes yaml-fájlra mutat:

trigger:
 - main

 pool:
   vmImage: 'windows-latest' 

 variables:
   vmImageName: 'windows-latest'
   imageRepository: 'your-image-repo-name'
   dockerfilePath: '$(Build.SourcesDirectory)/path/to/Dockerfile'
   dockerRegistryServiceConnection: 'your-service-connection-number'

- stage: Build
  displayName: Build and push stage
  jobs:  
  - job: Build
    displayName: Build job
    pool:
      vmImage: $(vmImageName)
    steps:
    - task: Docker@2
      displayName: Build and push an image to container registry
      inputs:
        command: buildAndPush
        repository: $(imageRepository)
        dockerfile: $(dockerfilePath)
        containerRegistry: $(dockerRegistryServiceConnection)
        tags: |
          $(tag)

- stage: Deploy
  displayName: Deploy to App Service
  jobs:
  - job: Deploy
    displayName: Deploy
    pool:
      vmImage: $(vmImageName)
    steps:
    - task: AzureRmWebAppDeployment@4
		  inputs:
		    ConnectionType: 'AzureRM'
		    azureSubscription: 'my-subscription-name'
		    appType: 'webAppHyperVContainer'
		    WebAppName: 'my-app-name'
		    DockerNamespace: 'myregsitry.azurecr.io'
		    DockerRepository: 'dotnetframework:12'