Latihan - Mempromosikan ke tahap Pengujian
Alur rilis Anda masih memiliki dua tahap, namun kini berbeda dengan sebelumnya. Tahap ini adalah Build dan Dev. Setiap perubahan yang Anda terapkan ke GitHub memicu tahap Build untuk dijalankan. Tahap Dev hanya berjalan saat perubahan berada di cabang rilis. Di sini, Anda menambahkan tahap Uji ke alur.
Ingatlah bahwa mempromosikan build dari tahap Dev ke tahap Uji pada pukul 3 pagi setiap pagi. Untuk menyiapkan pemicu terjadwal:
- Tentukan jadwal dalam konfigurasi build Anda.
- Tentukan tahap Uji, yang mencakup kondisi yang menjalankan tahap hanya jika alasan build ditandai sebagai
Schedule
.
Untuk tujuan pembelajaran, di sini, Anda menentukan jadwal tetapi mengizinkan build langsung dari Dev ke Uji. Penyiapan ini menghindari kebutuhan untuk menunggu jadwal dipicu. Setelah Anda menyelesaikan modul ini, coba bereksperimen dengan ekspresi cron yang berbeda untuk menjalankan tahap Uji hanya pada waktu yang dijadwalkan.
Mempromosikan perubahan ke tahap Uji
Di sini, Anda mengubah konfigurasi alur untuk menyebarkan build ke tahap Uji.
Di Visual Studio Code, ubah azure-pipelines.yml seperti berikut:
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'
Bagian
schedules
menentukan satu ekspresi cron. Anda dapat menentukan lebih dari satu ekspresi dalam konfigurasi. Ekspresi memicu alur berjalan terhadap cabang rilis pada pukul 3 pagi setiap hari. Benderaalways
diatur kefalse
sehingga alur hanya berjalan saat cabang rilis berisi perubahan dari eksekusi sebelumnya.Tahap
Test
menentukan kondisi yang menjalankan tahap hanya ketika alasan build sama denganSchedule
. (Variabel bawaanBuild.Reason
menentukan alasan build.) Jika kondisi ini false, tahap akan dilewati, tetapi tahap sebelumnya tetap berjalan.Catatan
Kondisi ini ditampilkan untuk tujuan pembelajaran. Ini dikomentari agar perubahan dapat berpindah dari Dev ke Test tanpa menunggu jadwal dipicu.
Dari terminal terintegrasi, ke indeks, tambahkan azure-pipelines.yml. Kemudian, terapkan perubahan, dan dorong ke GitHub.
Tip
Sebelum Anda menjalankan perintah Git ini, simpan azure-pipelines.yml.
git add azure-pipelines.yml git commit -m "Deploy to the Test stage" git push origin release
Di Azure Pipelines, buka build. Lacak build saat berjalan.
Setelah build selesai, untuk kembali ke halaman ringkasan, pilih tombol kembali.
Anda melihat bahwa penyebaran berhasil diselesaikan.
Dari browser web, buka URL yang terkait dengan instans App Service untuk lingkungan Pengujian Anda.
Jika Anda masih membuka tab browser, refresh halaman. Jika Anda tidak ingat URL-nya, temukan di portal Azure, di halaman detail App Service.
Anda melihat bahwa situs web Space Game disebarkan ke App Service, dan sedang berjalan.
Sebagai langkah opsional, di Azure Pipelines, pilih Lingkungan. Kemudian, pilih lingkungan uji.
Azure Pipelines merekam riwayat penyebaran Anda. Dalam riwayat, Anda dapat melacak perubahan di lingkungan kembali ke penerapan kode dan item kerja.
Andy dan Mara menambahkan tahap Uji ke alur. Mereka menunjukkan hasilnya kepada Amita.
Amita: Saya suka perubahan itu dibangun dan disebarkan sehingga saya dapat mengujinya setiap pagi. Tapi saya tidak melihat bagaimana saya dapat mengontrol ketika perubahan sampai pada Penahapan.
Mara: Ya, penyebaran melalui otomatisasi menghemat banyak waktu. Ingatlah bahwa kami hanya menyertakan pemicu terjadwal. Mari kita tambahkan persetujuan rilis untuk Anda saat kami menyiapkan lingkungan Penahapan untuk Tim. Dengan begitu, perubahan berpindah ke Penahapan hanya saat Anda siap.