Övning – Flytta upp till teststeget
Utgivningspipelinjen har fortfarande två steg, men de är nu annorlunda än tidigare. Stegen är Build och Dev. Varje ändring du skickar till GitHub utlöser byggprocessen fasen att köras. Dev-fasen körs endast när ändringen finns i versionsgrenen. Här lägger du till steget Test i pipelinen.
Kom ihåg att teamet bestämde sig för att använda en schemalagd utlösare för att höja upp bygget från Dev-fasen till Test-fasen klockan 03.00 varje morgon. Så här konfigurerar du den schemalagda utlösaren:
- Definiera schemat i byggkonfigurationen.
- Definiera testfasen , som innehåller ett villkor att endast köra fasen om byggorsaken är markerad som
Schedule
.
Här definierar du schemat i utbildningssyfte, men låter bygget gå direkt från Dev till Test. Med den här konfigurationen slipper du vänta tills schemat har utlösts. När du har slutfört den här modulen kan du prova att experimentera med olika cron-uttryck för att endast köra Test-fasen vid den schemalagda tiden.
Främja ändringar till teststeget
Här ändrar du pipelinekonfigurationen för att distribuera bygget till Test-fasen.
Ändra azure-pipelines.yml enligt följande i Visual Studio Code:
trigger: - '*' variables: buildConfiguration: 'Release' releaseBranchName: 'release' schedules: - cron: '0 3 * * *' displayName: 'Deploy every day at 3 A.M.' branches: include: - release always: false stages: - stage: 'Build' displayName: 'Build the web application' jobs: - job: 'Build' displayName: 'Build job' pool: vmImage: 'ubuntu-20.04' demands: - npm variables: wwwrootDir: 'Tailspin.SpaceGame.Web/wwwroot' dotnetSdkVersion: '6.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: | and ( succeeded(), eq(variables['Build.SourceBranchName'], variables['releaseBranchName']) ) jobs: - deployment: Deploy pool: vmImage: 'ubuntu-20.04' environment: dev variables: - group: Release strategy: runOnce: deploy: steps: - download: current artifact: drop - task: AzureWebApp@1 displayName: 'Azure App Service Deploy: website' inputs: azureSubscription: 'Resource Manager - Tailspin - Space Game' appName: '$(WebAppNameDev)' package: '$(Pipeline.Workspace)/drop/$(buildConfiguration)/*.zip' - stage: 'Test' displayName: 'Deploy to the test environment' dependsOn: Dev #condition: eq(variables['Build.Reason'], 'Schedule') jobs: - deployment: Deploy pool: vmImage: 'ubuntu-20.04' environment: test variables: - group: 'Release' strategy: runOnce: deploy: steps: - download: current artifact: drop - task: AzureWebApp@1 displayName: 'Azure App Service Deploy: website' inputs: azureSubscription: 'Resource Manager - Tailspin - Space Game' appName: '$(WebAppNameTest)' package: '$(Pipeline.Workspace)/drop/$(buildConfiguration)/*.zip'
Avsnittet
schedules
definierar ett cron-uttryck. Du kan definiera fler än ett uttryck i konfigurationen. Uttrycket triggar pipelinen för att köras mot versionsgrenen kl. 03.00 varje dag. Flagganalways
är inställd påfalse
så att pipelinen endast körs när utgivningsgrenen har ändringar från den föregående körningen.Test
-fasen definierar ett villkor som endast kör fasen när byggorsaken är lika medSchedule
. (Den inbyggda variabelnBuild.Reason
definierar byggorsaken.) Om det här villkoret är falskt hoppas fasen över, men de föregående stegen fortsätter att köras.Not
Det här villkoret visas i utbildningssyfte. Det kommenteras för att möjliggöra att ändringen går från Dev till Test utan att vänta på att schemat ska aktiveras.
Från den integrerade terminalen till indexet lägger du till azure-pipelines.yml. Genomför sedan ändringen och push-överför den till GitHub.
Tips
Innan du kör dessa Git-kommandon sparar du azure-pipelines.yml.
git add azure-pipelines.yml git commit -m "Deploy to the Test stage" git push origin release
I Azure Pipelines går du till versionen. Spåra bygget medan det körs.
När bygget är klart går du tillbaka till sammanfattningssidan genom att välja bakåtknappen.
Du ser att distributionen har slutförts framgångsrikt.
Från en webbläsare går du till url:en som är associerad med App Service-instansen för din Test-miljö.
Om du fortfarande har webbläsarfliken öppen uppdaterar du sidan. Om du inte kommer ihåg URL:en hittar du den i Azure-portalen på App Service-information sidan.
Du ser att webbplatsen Space Game är distribuerad till App Service och är igång.
Som ett valfritt steg i Azure Pipelines väljer du Miljöer. Välj sedan testmiljö .
Azure Pipelines registrerar distributionshistoriken. I historiken kan du spåra ändringar i miljön tillbaka till kodbidrag och arbetsobjekt.
Andy och Mara lägger till Test-fasen i pipelinen. De visar resultaten för Amita.
Amita: jag gillar att ändringar skapas och distribueras så att jag kan testa dem varje morgon. Men jag ser inte hur jag kan styra när ändringarna kommer mellanlagring.
Mara: Ja, distribution via automatisering sparar mycket tid. Kom ihåg att vi bara inkluderade den schemalagda utlösaren. Nu ska vi lägga till ett versionsgodkännande åt dig när vi konfigurerar Staging miljön för Tim. På så sätt flyttas ändringarna till Staging bara när du är redo.