Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022
Gebruik een Azure DevOps-pijplijn met meerdere fasen om uw CI/CD-proces te verdelen in fasen die verschillende onderdelen van uw ontwikkelingscyclus vertegenwoordigen. Een pijplijn met meerdere fasen biedt meer inzicht in uw implementatieproces en maakt het eenvoudiger om goedkeuringen en controles te integreren.
In dit artikel maakt u twee App Service-exemplaren en bouwt u een YAML-pijplijn met drie fasen:
In een praktijkscenario hebt u mogelijk nog een fase voor de implementatie in productie, afhankelijk van uw DevOps-proces.
De voorbeeldcode in deze oefening is voor een .NET-webtoepassing voor een pretend space game die een leaderboard bevat om hoge scores weer te geven. U implementeert zowel in ontwikkelings- als faseringsexemplaren van Azure Web App voor Linux.
Vereisten
| Product | Eisen |
|---|---|
| Azure DevOps | - Een Azure DevOps-organisatie en -project.
Maak er gratis een. - Machtigingen: - Als u toegang wilt verlenen tot alle pijplijnen in het project: u moet lid zijn van de groep Projectbeheerders. - Als u serviceverbindingen wilt maken: u moet de rol Beheerder of Maker hebben voor serviceverbindingen. - De mogelijkheid om pijplijnen uit te voeren op Microsoft-gehoste agents. Schakel de gratis laag in of koop een parallelle taak. |
| GitHub | - Een GitHub-account . |
Fork het project
Fork de volgende voorbeeldrepository op GitHub.
https://github.com/MicrosoftDocs/mslearn-tailspin-spacegame-web-deploy
De App Service-exemplaren maken
Voordat u uw pijplijn kunt uitrollen, moet u eerst een App Service-instantie maken waarnaar u deze kunt uitrollen. U gebruikt Azure CLI om de instantie te maken.
Meld u aan bij Azure Portal.
In het menu, selecteer Cloud Shell en Bash.
Genereer een willekeurig getal dat de domeinnaam van uw web-app uniek maakt. Het voordeel van een unieke waarde is dat uw App Service-exemplaar geen naamconflict heeft met andere cursisten die deze zelfstudie voltooien.
webappsuffix=$RANDOMOpen een opdrachtprompt en gebruik een
az group createopdracht om een resourcegroep te maken met de naam tailspin-space-game-rg die al uw App Service-exemplaren bevat. Werk delocationwaarde bij om uw dichtstbijzijnde regio te gebruiken.az group create --location eastus --name tailspin-space-game-rgGebruik de opdrachtprompt om een App Service-plan te maken.
az appservice plan create \ --name tailspin-space-game-asp \ --resource-group tailspin-space-game-rg \ --sku B1 \ --is-linuxMaak in de opdrachtprompt twee App Service-exemplaren, één voor elk exemplaar (Dev en Staging) met de
az webapp createopdracht.az webapp create \ --name tailspin-space-game-web-dev-$webappsuffix \ --resource-group tailspin-space-game-rg \ --plan tailspin-space-game-asp \ --runtime "DOTNET|8.0" az webapp create \ --name tailspin-space-game-web-staging-$webappsuffix \ --resource-group tailspin-space-game-rg \ --plan tailspin-space-game-asp \ --runtime "DOTNET|8.0"Gebruik de opdrachtprompt om met de opdracht
az webapp listbeide App Service-instanties weer te geven en te controleren of ze actief zijn.az webapp list \ --resource-group tailspin-space-game-rg \ --query "[].{hostName: defaultHostName, state: state}" \ --output tableKopieer de namen van de App Service-exemplaren die u wilt gebruiken als variabelen in de volgende sectie.
Uw Azure DevOps-project en -variabelen maken
Stel uw Azure DevOps-project en een build-pijplijn in. U voegt ook variabelen toe voor uw ontwikkel- en faseringsexemplaren.
Uw build-pijplijn:
- Bevat een trigger die wordt geactiveerd wanneer er een codewijziging in een branch wordt aangebracht
- Definieert twee variabelen,
buildConfigurationenreleaseBranchName - Bevat een fase met de naam Build waarmee de webtoepassing wordt gebouwd
- Hiermee publiceert u een artefact dat u in een latere fase gaat gebruiken
De buildfase toevoegen
Selecteer In uw Azure DevOps-project pijplijnen in het linkernavigatiemenu.
Selecteer Nieuwe pijplijn of Pijplijn maken als deze pijplijn de eerste is in het project.
Selecteer GitHub in het scherm Waar is uw code.
U wordt mogelijk omgeleid naar GitHub om u aan te melden. Voer in dat geval uw GitHub-referenties in.
Op het scherm Selecteer een opslagplaats selecteert u de opslagplaats waarin uw .NET-app zich bevindt.
U wordt mogelijk omgeleid naar GitHub om de Azure-pipelines-app te installeren. Als dat het zo is, selecteert u Goedkeuren en installeren.
Wanneer het tabblad Configureren wordt weergegeven, selecteert u Starter-pijplijn.
Vervang de inhoud van azure-pipelines.yml door deze code.
trigger: - '*' variables: buildConfiguration: 'Release' releaseBranchName: 'release' stages: - stage: 'Build' displayName: 'Build the web application' jobs: - job: 'Build' displayName: 'Build job' pool: vmImage: 'ubuntu-22.04' demands: - npm variables: wwwrootDir: 'Tailspin.SpaceGame.Web/wwwroot' dotnetSdkVersion: '8.x' steps: - task: UseDotNet@2 displayName: 'Use .NET SDK $(dotnetSdkVersion)' inputs: version: '$(dotnetSdkVersion)' - task: Npm@1 displayName: 'Run npm install' inputs: verbose: false - script: './node_modules/.bin/node-sass $(wwwrootDir) --output $(wwwrootDir)' displayName: 'Compile Sass assets' - task: gulp@1 displayName: 'Run gulp tasks' - script: 'echo "$(Build.DefinitionName), $(Build.BuildId), $(Build.BuildNumber)" > buildinfo.txt' displayName: 'Write build info' workingDirectory: $(wwwrootDir) - task: DotNetCoreCLI@2 displayName: 'Restore project dependencies' inputs: command: 'restore' projects: '**/*.csproj' - task: DotNetCoreCLI@2 displayName: 'Build the project - $(buildConfiguration)' inputs: command: 'build' arguments: '--no-restore --configuration $(buildConfiguration)' projects: '**/*.csproj' - task: DotNetCoreCLI@2 displayName: 'Publish the project - $(buildConfiguration)' inputs: command: 'publish' projects: '**/*.csproj' publishWebProjects: false arguments: '--no-build --configuration $(buildConfiguration) --output $(Build.ArtifactStagingDirectory)/$(buildConfiguration)' zipAfterPublish: true - publish: '$(Build.ArtifactStagingDirectory)' artifact: dropWanneer u klaar bent, selecteert u Opslaan en uitvoeren.
Exemplaarvariabelen toevoegen
Ga in Azure DevOps naar Pijplijnen>Bibliotheek.
Selecteer + Variabele groep.
Voeg onder Eigenschappenrelease toe voor de naam van de variabelegroep.
Maak twee variabelen aan voor de hostnamen van je ontwikkel- en stagingomgeving. Vervang de waarde
1234door de juiste waarde voor uw exemplaar.Variabelenaam Voorbeeldwaarde WebAppNameDev tailspin-space-game-web-dev-1234 WebAppNameStaging tailspin-space-game-web-staging-1234 Selecteer Opslaan om uw variabelen op te slaan.
De dev-fase toevoegen
Vervolgens gaat u uw pijplijn bijwerken om uw build te promoveren naar de Dev-fase .
Ga in Azure-pipelines naar Pipelines>Pipelines.
Selecteer Bewerken in het contextmenu om uw pijplijn te bewerken.
Werk azure-pipelines.yml bij om een dev-fase op te nemen. In de dev-fase doet uw pijplijn het volgende:
- Uitvoeren wanneer de Build-fase slaagt op basis van een voorwaarde
- Een artefact downloaden van
drop - Implementeren in Azure App Service met een Azure Resource Manager-serviceverbinding
trigger: - '*' variables: buildConfiguration: 'Release' releaseBranchName: 'release' stages: - stage: 'Build' displayName: 'Build the web application' jobs: - job: 'Build' displayName: 'Build job' pool: vmImage: 'ubuntu-22.04' demands: - npm variables: wwwrootDir: 'Tailspin.SpaceGame.Web/wwwroot' dotnetSdkVersion: '8.x' steps: - task: UseDotNet@2 displayName: 'Use .NET SDK $(dotnetSdkVersion)' inputs: version: '$(dotnetSdkVersion)' - task: Npm@1 displayName: 'Run npm install' inputs: verbose: false - script: './node_modules/.bin/node-sass $(wwwrootDir) --output $(wwwrootDir)' displayName: 'Compile Sass assets' - task: gulp@1 displayName: 'Run gulp tasks' - script: 'echo "$(Build.DefinitionName), $(Build.BuildId), $(Build.BuildNumber)" > buildinfo.txt' displayName: 'Write build info' workingDirectory: $(wwwrootDir) - task: DotNetCoreCLI@2 displayName: 'Restore project dependencies' inputs: command: 'restore' projects: '**/*.csproj' - task: DotNetCoreCLI@2 displayName: 'Build the project - $(buildConfiguration)' inputs: command: 'build' arguments: '--no-restore --configuration $(buildConfiguration)' projects: '**/*.csproj' - task: DotNetCoreCLI@2 displayName: 'Publish the project - $(buildConfiguration)' inputs: command: 'publish' projects: '**/*.csproj' publishWebProjects: false arguments: '--no-build --configuration $(buildConfiguration) --output $(Build.ArtifactStagingDirectory)/$(buildConfiguration)' zipAfterPublish: true - publish: '$(Build.ArtifactStagingDirectory)' artifact: drop - stage: 'Dev' displayName: 'Deploy to the dev environment' dependsOn: Build condition: succeeded() jobs: - deployment: Deploy pool: vmImage: 'ubuntu-22.04' environment: dev variables: - group: Release strategy: runOnce: deploy: steps: - download: current artifact: drop - task: AzureWebApp@1 displayName: 'Azure App Service Deploy: dev website' inputs: azureSubscription: 'your-subscription' appType: 'webAppLinux' appName: '$(WebAppNameDev)' package: '$(Pipeline.Workspace)/drop/$(buildConfiguration)/*.zip'Wijzig de
AzureWebApp@1taak zodat deze uw abonnement gebruikt.Selecteer Instellingen voor de taak.
Werk de
your-subscriptionwaarde voor azure-abonnement bij om uw eigen abonnement te gebruiken. Mogelijk moet u toegang autoriseren als onderdeel van dit proces. Als u een probleem ondervindt bij het autoriseren van uw resource in de YAML-editor, kunt u ook een serviceverbinding maken.
Stel het app-type in op Web App in Linux.
Selecteer Toevoegen om de taak bij te werken.
Sla uw pipeline op en voer deze uit.
De fase Staging toevoegen
Ten slotte promoveert u de Dev-fase naar Fasering. In tegenstelling tot de ontwikkelomgeving wilt u in de stagingomgeving meer controle hebben, dus voegt u een handmatige goedkeuringsstap toe.
Stagingomgeving aanmaken
Selecteer Omgevingen in Azure-pipelines.
Selecteer Nieuwe omgeving.
Maak een nieuwe omgeving met de naam staging en Resource ingesteld op Geen.
Selecteer Goedkeuringen en controles op de pagina faseringsomgeving.
Kies Goedkeuringen.
Selecteer in GoedkeurdersGebruikers en groepen toevoegen en selecteer vervolgens uw account.
Schrijf in Instructies voor goedkeurdersdeze wijziging goedkeuren wanneer deze klaar is voor fasering.
Selecteer Opslaan.
Nieuwe fase toevoegen aan pijplijn
U voegt een nieuwe fase Staging toe aan de pijplijn met een handmatige goedkeuring.
Bewerk uw pijplijnbestand en voeg de
Stagingsectie toe.trigger: - '*' variables: buildConfiguration: 'Release' releaseBranchName: 'release' stages: - stage: 'Build' displayName: 'Build the web application' jobs: - job: 'Build' displayName: 'Build job' pool: vmImage: 'ubuntu-22.04' demands: - npm variables: wwwrootDir: 'Tailspin.SpaceGame.Web/wwwroot' dotnetSdkVersion: '8.x' steps: - task: UseDotNet@2 displayName: 'Use .NET SDK $(dotnetSdkVersion)' inputs: version: '$(dotnetSdkVersion)' - task: Npm@1 displayName: 'Run npm install' inputs: verbose: false - script: './node_modules/.bin/node-sass $(wwwrootDir) --output $(wwwrootDir)' displayName: 'Compile Sass assets' - task: gulp@1 displayName: 'Run gulp tasks' - script: 'echo "$(Build.DefinitionName), $(Build.BuildId), $(Build.BuildNumber)" > buildinfo.txt' displayName: 'Write build info' workingDirectory: $(wwwrootDir) - task: DotNetCoreCLI@2 displayName: 'Restore project dependencies' inputs: command: 'restore' projects: '**/*.csproj' - task: DotNetCoreCLI@2 displayName: 'Build the project - $(buildConfiguration)' inputs: command: 'build' arguments: '--no-restore --configuration $(buildConfiguration)' projects: '**/*.csproj' - task: DotNetCoreCLI@2 displayName: 'Publish the project - $(buildConfiguration)' inputs: command: 'publish' projects: '**/*.csproj' publishWebProjects: false arguments: '--no-build --configuration $(buildConfiguration) --output $(Build.ArtifactStagingDirectory)/$(buildConfiguration)' zipAfterPublish: true - publish: '$(Build.ArtifactStagingDirectory)' artifact: drop - stage: 'Dev' displayName: 'Deploy to the dev environment' dependsOn: Build condition: succeeded() jobs: - deployment: Deploy pool: vmImage: 'ubuntu-22.04' environment: dev variables: - group: Release strategy: runOnce: deploy: steps: - download: current artifact: drop - task: AzureWebApp@1 displayName: 'Azure App Service Deploy: dev website' inputs: azureSubscription: 'your-subscription' appType: 'webAppLinux' appName: '$(WebAppNameDev)' package: '$(Pipeline.Workspace)/drop/$(buildConfiguration)/*.zip' - stage: 'Staging' displayName: 'Deploy to the staging environment' dependsOn: Dev jobs: - deployment: Deploy pool: vmImage: 'ubuntu-22.04' environment: staging variables: - group: 'Release' strategy: runOnce: deploy: steps: - download: current artifact: drop - task: AzureWebApp@1 displayName: 'Azure App Service Deploy: staging website' inputs: azureSubscription: 'your-subscription' appType: 'webAppLinux' appName: '$(WebAppNameStaging)' package: '$(Pipeline.Workspace)/drop/$(buildConfiguration)/*.zip'Wijzig de
AzureWebApp@1-taak in de fase Staging zodat deze uw abonnement gebruikt.Selecteer Instellingen voor de taak.
Werk de
your-subscriptionwaarde voor azure-abonnement bij om uw eigen abonnement te gebruiken. Mogelijk moet u toegang autoriseren als onderdeel van dit proces.
Stel het app-type in op Web App in Linux.
Selecteer Toevoegen om de taak bij te werken.
Ga naar de pijplijnuitvoering. Bekijk de build terwijl deze wordt uitgevoerd. Wanneer
Stagingis bereikt, wacht de pijplijn op handmatige goedkeuring voor vrijgave. U ontvangt ook een e-mailbericht dat u een pipeline hebt die wacht op goedkeuring.
Controleer de goedkeuring en laat de pijplijn uitvoeren.
Resources opruimen
Als u deze toepassing niet meer gaat gebruiken, verwijdert u de resourcegroep in Azure Portal en het project in Azure DevOps met de volgende stappen:
Uw resourcegroep opschonen:
Ga naar Azure Portal en meld u aan.
Selecteer Cloud Shell in de menubalk. Wanneer u hierom wordt gevraagd, selecteert u de Bash-ervaring .
Voer de volgende az group delete-opdracht uit om de resourcegroep te verwijderen die u hebt gebruikt.
tailspin-space-game-rgaz group delete --name tailspin-space-game-rg
Als u uw Azure DevOps-project, inclusief de build-pijplijn, wilt verwijderen, raadpleegt u Project verwijderen.