Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
Met Azure DevOps kunt u uw code hosten, bouwen, plannen en testen met gratis werkstromen. Met Behulp van Azure Pipelines als een van deze werkstromen kunt u uw toepassing implementeren met CI/CD die werkt met elk platform en elke cloud. Een pijplijn wordt gedefinieerd als een YAML-bestand in de hoofdmap van uw opslagplaats.
In dit artikel gebruiken we Azure Pipelines om een Windows-containertoepassing te implementeren in App Service vanuit een Git-opslagplaats in Azure DevOps. Hierbij wordt ervan uitgegaan dat u al een .NET-toepassing hebt met een ondersteunend dockerfile in Azure DevOps.
Vereisten
- Een Azure-account met een actief abonnement. Gratis een account maken
- een Azure DevOps-organisatie. Maak gratis een account.
- Een werkende Windows-app met Dockerfile die wordt gehost op Azure-opslagplaatsen.
Een serviceverbinding toevoegen
Voordat u uw pijplijn maakt, moet u eerst uw serviceverbinding maken, omdat u wordt gevraagd uw verbinding te kiezen en te verifiëren bij het maken van uw sjabloon. Met een serviceverbinding kunt u verbinding maken met uw keuzeregister (ACR of Docker Hub) wanneer u de taaksjablonen gebruikt. Wanneer u een nieuwe serviceverbinding toevoegt, kiest u de optie Docker Registry. In het volgende formulier wordt u gevraagd Docker Hub of Azure Container Registry te kiezen, samen met informatie die betrekking heeft. Als u deze zelfstudie wilt volgen, gebruikt u Azure Container Registry. U kunt hier een nieuwe serviceverbinding maken volgens de instructies.
Uw geheimen beveiligen
Omdat we gevoelige informatie gebruiken die u niet wilt dat anderen toegang hebben, gebruiken we variabelen om onze gegevens te beveiligen. Maak een variabele door de instructies hier te volgen.
Als u een variabele wilt toevoegen, klikt u op de knop Variabelen naast de knop Opslaan in de rechterbovenhoek van de bewerkingsweergave voor uw pijplijn.
Selecteer de knop Nieuwe variabele en voer uw gegevens in. Voeg de onderstaande variabelen toe met uw eigen geheimen die geschikt zijn voor elke resource.
- vmImageName: 'windows-latest'
- imageRepository: 'uw-afbeelding-repo-naam'
- dockerfilePath: '$(Build.SourcesDirectory)/pad/naar/Dockerfile'
- dockerRegistryServiceConnection: 'uw-serviceverbindingnummer'
Een nieuwe pipeline maken
Zodra uw opslagplaats is gemaakt met uw .NET-toepassing en ondersteuning voor dockerfile, kunt u de pijplijn maken door deze stappen te volgen.
- Navigeer naar Pijplijnen in de linkermenubalk en klik op de knop Pijplijn maken
- Selecteer In het volgende scherm Azure Repos Git als uw opslagplaatsoptie en selecteert u de opslagplaats waarin uw code zich bevindt
- Kies op het tabblad Configureren de optie Starter-pijplijn
- Onder het volgende tabblad Controleren, klik op de knop Opslaan
Containerafbeeldingen bouwen en uploaden naar Azure Container Registry
Nadat uw pijplijn is gemaakt en opgeslagen, moet u de pijplijn bewerken om de stappen uit te voeren voor het bouwen van de container, het pushen naar een register en het implementeren van de image in App Service. Als u wilt beginnen, gaat u naar het menu Pijplijnen , kiest u de pijplijn die u hebt gemaakt en klikt u op de knop Bewerken .
Eerst moet u de Docker-taak toevoegen, zodat u de image kunt bouwen. Voeg de volgende code toe en vervang de Dockerfile: app/Dockerfile door het pad naar uw Dockerfile.
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)
De App Service-implementatietaak toevoegen
Vervolgens moet u de implementatietaak instellen. Hiervoor is uw abonnementsnaam, toepassingsnaam en containerregister vereist.
Voeg een nieuwe fase toe aan het yaml-bestand door de onderstaande code te plakken.
- stage: Deploy displayName: Deploy to App Service jobs: - job: Deploy displayName: Deploy pool: vmImage: $(vmImageName) steps:Navigeer naar het tabblad Assistent weergeven in de rechterbovenhoek en zoek de azure App Service-implementatietaak en vul het volgende formulier in:
- Verbindingstype: Azure Resource Manager
- Azure-abonnement: naam van uw abonnement
- App Service-type: Web App for Containers (Windows)
- Naam van de app-service: uw app naam
- Register of naamruimte: uw-azure-container-registry-naamruimte
- Afbeelding: your-azure-container-registry-image-name
Klik op de knop Toevoegen om de onderstaande taak toe te voegen:
- task: AzureRmWebAppDeployment@4 inputs: ConnectionType: 'AzureRM' azureSubscription: 'my-subscription-name' appType: 'webAppHyperVContainer' WebAppName: 'my-app-name' DockerNamespace: 'myregsitry.azurecr.io' DockerRepository: 'dotnetframework:12'
Nadat u de taak hebt toegevoegd, is de pijplijn gereed om uit te voeren. Klik op de knop Valideren en opslaan en voer de pijplijn uit. De pijplijn doorloopt de stappen voor het bouwen en uploaden van de Windows-containerafbeelding naar Azure Container Registry en implementeert de afbeelding in App Service.
Hieronder ziet u het voorbeeld van het volledige yaml-bestand:
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'