Övning – Flytta upp till teststeget
Utgivningspipelinjen har fortfarande två steg, men de är nu annorlunda än tidigare. Stegen är Build och Dev. Varje ändring som du skickar till GitHub utlöser byggfasen som ska köras. Utvecklingssteget körs endast när ändringen finns i versionsgrenen. Här lägger du till teststeget i pipelinen.
Kom ihåg att teamet bestämde sig för att använda en schemalagd utlösare för att marknadsföra bygget från Dev-fasen till testfasen 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.
I utbildningssyfte definierar du schemat här, men tillåter att bygget går 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 testfasen vid den schemalagda tiden.
Främja ändringar till teststeget
Här ändrar du pipelinekonfigurationen för att distribuera bygget till teststeget .
Ändra azure-pipelines.yml på följande sätt 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
schedulesdefinierar 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åfalseså 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.Reasondefinierar 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 så att ändringen kan gå från Dev till Test utan att vänta på att schemat utlöses.
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
Spara azure-pipelines.yml innan du kör de här Git-kommandona.
git add azure-pipelines.yml git commit -m "Deploy to the Test stage" git push origin releaseI 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 testmiljön .
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å sidan App Service-information .
Du ser att Space Game-webbplatsen distribueras till App Service och att den körs.
Som ett valfritt steg väljer du Miljöer i Azure Pipelines. 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 teststeget 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 till Staging.
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 mellanlagringsmiljön för Tim. På så sätt flyttas ändringarna endast till Förberedelsemiljö när du är redo.