Latihan - Mempromosikan ke Pentahapan
Alur rilis Anda sekarang memiliki tiga tahap: Build, Dev, dan Test. Anda dan tim Tailspin memiliki satu tahap lagi untuk diimplementasikan: Pentahapan.
Di bagian ini, Anda akan:
- Buat lingkungan penahapan di Azure Pipelines, dan tetapkan diri Anda sebagai pemberi persetujuan.
- Tentukan tahap Pentahapan, yang hanya berjalan setelah pemberi izin memverifikasi hasil tahap Pengujian.
Membuat staging environment
Di sini, Anda membuat lingkungan di Azure Pipelines untuk Pentahapan. Untuk tujuan pembelajaran, Anda menetapkan diri Anda sebagai pemberi izin. Dalam praktiknya, Anda akan menetapkan pengguna yang diharuskan menyetujui perubahan sebelum perubahan tersebut berpindah ke tahap berikutnya. Untuk tim Tailspin, Amita menyetujui perubahan sehingga mereka dapat dipromosikan dari Uji ke Pentahapan.
Sebelumnya dalam modul ini, Anda menentukan environment
pengaturan untuk tahap Dev dan Pengujian. Berikut adalah contoh untuk tahap Dev.
- stage: 'Deploy'
displayName: 'Deploy the web application'
dependsOn: Build
jobs:
- deployment: Deploy
pool:
vmImage: 'ubuntu-20.04'
environment: dev
variables:
- group: Release
Anda dapat menentukan lingkungan melalui Azure Pipelines yang menyertakan kriteria khusus untuk rilis Anda. Kriteria ini dapat mencakup alur yang berwenang untuk disebarkan ke lingkungan. Anda juga dapat menentukan persetujuan manusia yang diperlukan untuk mempromosikan rilis dari satu tahap ke tahap berikutnya. Di sini, Anda menentukan persetujuan tersebut.
Untuk membuat staging environment:
Dari Azure Pipelines, pilih Lingkungan.
Pilih Lingkungan baru.
Di bagian Nama, masukkan pentahapan.
Untuk singkatnya, Anda membiarkan bidang yang tersisa pada nilai defaultnya.
Pilih Buat.
Pada halaman staging environment, buka menu dropdown, lalu pilih Persetujuan dan pemeriksaan.
Pilih Persetujuan.
Di bawah Pemberi Izin, pilih Tambahkan pengguna dan grup, lalu pilih akun Anda.
Di bawah Instruksi untuk pemberi izin, masukkan Setujui perubahan ini saat siap untuk pentahapan.
Pilih Buat.
Mempromosikan perubahan ke Pentahapan
Di sini, Anda mengubah konfigurasi alur untuk menyebarkan build ke tahap Pentahapan.
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' - stage: 'Staging' displayName: 'Deploy to the staging environment' dependsOn: Test jobs: - deployment: Deploy pool: vmImage: 'ubuntu-20.04' environment: staging 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: '$(WebAppNameStaging)' package: '$(Pipeline.Workspace)/drop/$(buildConfiguration)/*.zip'
Kode ini menambahkan tahap Pentahapan. Tahap ini disebarkan ke lingkungan pentahapan, yang mencakup persetujuan rilis.
Tip
Anda mungkin memperhatikan bahwa ketiga tahap penyebaran Anda mengikuti langkah-langkah serupa. Anda dapat menggunakan templat untuk menentukan tugas build umum satu kali dan menggunakannya kembali beberapa kali. Anda sudah menggunakan teknik ini dalam modul Membuat alur build dengan Azure Pipelines. Untuk tujuan pembelajaran, kami mengulangi langkah-langkah di setiap tahap.
Dari terminal terintegrasi, tambahkan azure-pipelines.yml ke indeks. Selanjutnya, terapkan perubahan dan dorong hingga GitHub.
Tip
Sebelum Anda menjalankan perintah Git ini, simpan azure-pipelines.yml.
git add azure-pipelines.yml git commit -m "Deploy to Staging" git push origin release
Di Azure Pipelines, buka build. Lacak build saat berjalan.
Ketika build mencapai Pentahapan, Anda melihat bahwa alur menunggu semua pemeriksaan diteruskan. Dalam hal ini, ada satu pemeriksaan - persetujuan rilis manual.
Anda dapat mengonfigurasi Azure DevOps untuk mengirimi Anda pemberitahuan email saat build memerlukan persetujuan. Berikut contohnya:
Pilih Tinjau>Setujui.
Dalam praktiknya, untuk memverifikasi bahwa mereka memenuhi kebutuhan Anda, Anda akan memeriksa perubahan.
Setelah build selesai, buka browser web. Buka URL yang terkait dengan instans App Service untuk lingkungan penahapan 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. Selanjutnya, pilih staging environment.
Azure Pipelines merekam riwayat penyebaran Anda, yang memungkinkan Anda melacak perubahan di lingkungan kembali ke penerapan kode dan item kerja.
Tim Tailspin berkumpul untuk mendiskusikan kemajuan mereka. Amita menyetujui perubahan dalam tahap Ujian sementara yang lain menonton.
Tim: Sejujurnya, awalnya aku sedikit gugup dengan alur rilis otomatis. Tapi aku benar-benar menyukai ini sekarang bahwa saya melihatnya bekerja. Setiap tahap dapat memiliki lingkungan sendiri, pengujian terkait, dan pemberi persetujuan. Alur mengotomatiskan banyak hal yang harus kami lakukan secara manual. Tapi kita masih memiliki kontrol di mana kita membutuhkannya.
Amita: Aku bisa membayangkan kita melakukan sesuatu yang mirip dengan mempromosikan perubahan dari Pentahapan ke Produksi. Berbicara tentang... kapan kita menambahkan lingkungan produksi ?
- Sebentar lagi. Saya pikir kita masih perlu mengisi beberapa bagian di sini terlebih dahulu sebelum kita menambahkan itu.