Latihan - Membuat lingkungan sementara untuk permintaan pull
Beberapa anggota tim telah memberi tahu Anda bahwa mereka menghargai mendapatkan umpan balik linter Bicep otomatis tentang perubahan kode mereka sebelum mengirimkan perubahan kode ke anggota tim lain untuk ditinjau. Sekarang, Anda telah memutuskan untuk memberi kontributor dan pengulas kemampuan untuk menyebarkan dan meninjau kode mereka dalam lingkungan jangka pendek.
Dalam latihan ini, Anda akan memperbarui alur kerja permintaan pull untuk menyebarkan lingkungan jangka pendek setiap kali permintaan pull dibuka, dan menyebarkannya ulang saat kode didorong ke cabang permintaan pull. Anda juga akan membuat alur kerja lain untuk menghapus lingkungan secara otomatis saat permintaan pull ditutup. Anda akan menguji perubahan dengan membuat permintaan pull agar situs web Anda menggunakan citra kontainer Docker.
Selama proses tersebut, Anda akan:
- Perbarui alur kerja permintaan pull untuk menyebarkan lingkungan jangka pendek.
- Buat alur kerja penghapusan permintaan pull untuk menghapus lingkungan jangka pendek.
- Buat permintaan pull dan lihat lingkungan jangka pendek dibuat.
- Setujui permintaan pull dan lihat lingkungan jangka pendek dihapus.
Memperbarui alur kerja permintaan pull untuk menyebarkan lingkungan jangka pendek
Untuk memulai, Anda perlu memperbarui alur kerja pr-validasi Anda untuk membuat lingkungan jangka pendek.
Di terminal Visual Studio Code, periksa cabang utama repositori.
git checkout main
Tarik versi terbaru kode dari GitHub, yang menyertakan perubahan yang Anda gabungkan di latihan sebelumnya.
git pull
Buka file .github/workflows/pr-validation.yml di Visual Studio Code.
Di dekat bagian atas file, di bawah setelan
name
, tambahkan setelanconcurrency
:name: pr-validation concurrency: ${{ github.event.number }}
Setelan ini mencegah beberapa alur kerja untuk permintaan pull yang sama berjalan secara bersamaan, yang bisa menyebabkan hasil tidak dapat diprediksi saat Anda menyebarkan sumber daya ke Azure.
Di dekat bagian atas file, di bawah bagian
on
yang menentukan pemicu, tentukan bagianpermissions
:name: pr-validation concurrency: ${{ github.event.number }} on: pull_request permissions: id-token: write contents: read
Di bawah bagian
permissions
, tambahkan dua variabel lingkungan baru:name: pr-validation concurrency: ${{ github.event.number }} on: pull_request permissions: id-token: write contents: read env: resourceGroupName: pr_${{ github.event.number }} resourceGroupLocation: westus3
Variabel lingkungan
resourceGroupName
menentukan nama grup sumber daya yang akan digunakan untuk setiap lingkungan jangka pendek. Setiap grup sumber daya akan diberi namapr_123
, dengan keterangan123
adalah nomor permintaan pull unik.Variabel lingkungan
resourceGroupLocation
menentukan bahwa semua lingkungan jangka pendek Anda harus disebarkan ke wilayah Azure Barat AS 3.Tentukan pekerjaan baru bernama
deploy
, di bawah pekerjaanlint
:jobs: lint: uses: ./.github/workflows/lint.yml deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: azure/login@v1 name: Sign in to Azure with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
Pekerjaan pertama-tama memeriksa semua kode ke runner GitHub, lalu masuk ke lingkungan Azure Anda.
Tip
File YAML sensitif terhadap indentasi. Baik Anda mengetik atau menempelkan kode ini, pastikan lekukan Anda benar. Kemudian dalam latihan ini, Anda akan melihat definisi alur kerja YAML lengkap sehingga dapat memverifikasi bahwa file Anda cocok.
Tambahkan langkah untuk membuat grup sumber daya dengan nama yang ditentukan dalam variabel lingkungan:
- uses: Azure/cli@v1 name: Create resource group with: inlineScript: | az group create \ --name ${{ env.resourceGroupName }} \ --location ${{ env.resourceGroupLocation }}
Setelah langkah pembuatan grup sumber daya, tambahkan langkah untuk menyebarkan file Bicep ke grup sumber daya:
- uses: azure/arm-deploy@v1 id: deploy name: Deploy Bicep file with: failOnStdErr: false deploymentName: ${{ github.run_number }} resourceGroupName: ${{ env.resourceGroupName }} template: ./deploy/main.bicep parameters: > environmentType=Test
Setelah langkah penyebaran, tambahkan langkah untuk menampilkan alamat situs web lingkungan jangka pendek dalam log alur kerja:
- name: Show website hostname run: | echo "Access the website at this address: https://${{ steps.deploy.outputs.appServiceAppHostName }}"
Simpan perubahan Anda.
Pastikan pr-validation.yml terlihat seperti berikut:
name: pr-validation concurrency: ${{ github.event.number }} on: pull_request permissions: id-token: write contents: read env: resourceGroupName: pr_${{ github.event.number }} resourceGroupLocation: westus3 jobs: lint: uses: ./.github/workflows/lint.yml deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: azure/login@v1 name: Sign in to Azure with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} - uses: Azure/cli@v1 name: Create resource group with: inlineScript: | az group create \ --name ${{ env.resourceGroupName }} \ --location ${{ env.resourceGroupLocation }} - uses: azure/arm-deploy@v1 id: deploy name: Deploy Bicep file with: failOnStdErr: false deploymentName: ${{ github.run_number }} resourceGroupName: ${{ env.resourceGroupName }} template: ./deploy/main.bicep parameters: > environmentType=Test - name: Show website hostname run: | echo "Access the website at this address: https://${{ steps.deploy.outputs.appServiceAppHostName }}"
Jika tidak, perbarui agar sesuai dengan contoh ini, lalu simpan.
Di terminal Visual Studio Code, terapkan perubahan. Anda belum akan mendorongnya ke repositori jarak jauh.
git add . git commit -m "Update pull request validation workflow to deploy an ephemeral environment"
Menambahkan alur kerja penghapusan permintaan pull
Anda telah membuat alur kerja yang secara otomatis menyebarkan perubahan di setiap permintaan pull ke grup sumber daya jangka pendek. Sekarang, Anda akan mengonfigurasi alur kerja kedua untuk menghapus lingkungan jangka pendek saat tidak diperlukan lagi.
Buat file baru bernama pr-closed.yml di folder .github/workflows.
Di bagian atas file, beri nama alur kerja, konfigurasikan kunci konkurensi yang sama yang Anda gunakan dalam alur kerja validasi permintaan tarik, konfigurasikan alur kerja untuk dijalankan setiap kali permintaan tarik ditutup, dan izinkan alur kerja mendapatkan token akses:
name: pr-closed concurrency: ${{ github.event.number }} on: pull_request: types: [closed] permissions: id-token: write contents: read
Di bawah kode yang baru saja Anda masukkan, tentukan variabel lingkungan untuk nama grup sumber daya yang terkait dengan lingkungan jangka pendek permintaan pull:
env: resourceGroupName: pr_${{ github.event.number }}
Nama grup sumber daya sama dengan yang digunakan untuk alur kerja validasi permintaan pull.
Di bawah kode yang ditambahkan, tentukan pekerjaan baru bernama
remove
, dan konfigurasikan untuk masuk ke Azure:jobs: remove: runs-on: ubuntu-latest steps: - uses: azure/login@v1 name: Sign in to Azure with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
Dalam pekerjaan
remove
, tentukan langkah untuk menghapus grup sumber daya dengan menggunakan Azure CLI, dan konfirmasi penghapusan dengan menggunakan argumen--yes
:- uses: Azure/cli@v1 name: Delete resource group with: inlineScript: | az group delete \ --name ${{ env.resourceGroupName }} \ --yes
Simpan perubahan Anda.
Pastikan file pr-closed.yml terlihat seperti berikut:
name: pr-closed concurrency: ${{ github.event.number }} on: pull_request: types: [closed] permissions: id-token: write contents: read env: resourceGroupName: pr_${{ github.event.number }} jobs: remove: runs-on: ubuntu-latest steps: - uses: azure/login@v1 name: Sign in to Azure with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} - uses: Azure/cli@v1 name: Delete resource group with: inlineScript: | az group delete \ --name ${{ env.resourceGroupName }} \ --yes
Jika tidak, perbarui agar sesuai dengan contoh ini, lalu simpan.
Di terminal Visual Studio Code, terapkan perubahan dan dorong perubahan ini ke repositori jarak jauh:
git add . git commit -m 'Add pull request closed workflow' git push
Perbarui file Bicep
Selanjutnya, perbarui file Bicep Anda agar menggunakan gambar kontainer Docker untuk aplikasi situs web Anda.
Di terminal Visual Studio Code, buat cabang baru untuk perubahan Anda dengan menjalankan perintah berikut:
git checkout -b feature/container-app
Buka file main.bicep di folder deploy.
Perbarui nilai variabel
appServiceAppLinuxFrameworkVersion
:var appServiceAppLinuxFrameworkVersion = 'DOCKER|dockersamples/static-site:latest'
Simpan perubahan Anda.
Komit dan dorong perubahan Anda ke repositori Git Anda dengan menjalankan perintah berikut di terminal Visual Studio Code:
git add . git commit -m "Use container image for website" git push origin feature/container-app
Membuat permintaan pull
Anda telah menentukan alur kerja untuk membuat dan mengelola lingkungan jangka pendek secara otomatis dalam permintaan pull. Sekarang, Anda akan membuat permintaan pull lain untuk perubahan Bicep.
Di browser Anda, pilih Kode, lalu pilih 3 cabang.
Di bawah Cabang Anda, di samping fitur/aplikasi kontainer, pilih Permintaan pull baru.
Pilih Buat permintaan pull.
Melihat lingkungan jangka pendek dibuat
Pada halaman detail permintaan pull, tunggu item pemeriksaan status muncul.
Dalam daftar, di samping pekerjaan penyebaran, pilih Detail.
Tunggu hingga penyebaran selesai.
Pilih Tampilkan nama host situs web.
Pilih URL dalam log.
Situs web memuat dan menampilkan pesan Hello Docker! yang menunjukkan bahwa situs web berjalan dari gambar kontainer yang ditentukan dalam perubahan permintaan pull.
Secara opsional, buka portal Microsoft Azure, dan buka grup sumber daya lingkungan jangka pendek.
Tinjau sumber daya yang disebarkan: akun penyimpanan, Layanan aplikasi, dan paket layanan Aplikasi.
Menggabungkan permintaan pull
Setelah menguji permintaan pull, Anda dapat menggabungkannya ke cabang utama.
Pilih Permintaan pull, lalu pilih permintaan pull Gunakan citra kontainer untuk situs web.
Pemeriksaan status telah berlalu.
Pilih Gabungkan permintaan pull.
Pilih Konfirmasi penggabungan.
Meninjau penghapusan grup sumber daya
Di browser, pilih Tindakan lalu, di panel kiri, pilih alur kerja pr-closed.
Anda dapat melihat bahwa alur kerja telah dipanggil secara otomatis karena permintaan pull ditutup.
Pilih alur kerja untuk meninjau log.
Mungkin diperlukan waktu beberapa menit agar alur kerja selesai menghapus grup sumber daya di Azure.
Penting
Anda tidak perlu menunggu eksekusi alur kerja hingga selesai. Tetapi, pastikan untuk membuka portal Microsoft Azure nanti, baik untuk memverifikasi bahwa grup sumber daya lingkungan jangka pendek telah berhasil dihapus dan untuk menghindari timbulnya biaya untuk sumber daya Azure.
Membersihkan sumber daya
Setelah selesai dengan modul, Anda dapat menghapus sumber daya yang Anda buat:
Rahasia GitHub
- Dari repositori GitHub, buka Pengaturan>Tindakan Rahasia dan variabel.>
- Pilih tombol Hapus untuk setiap rahasia repositori dan ikuti perintahnya.
Repositori GitHub
- Buka Pengaturan>Umum
- Gulir ke bagian bawah layar, pilih Hapus repositori ini, dan ikuti perintahnya.
Kredensial federasi dan perwakilan layanan pendaftaran Aplikasi Azure.
- Dari beranda portal, cari ID Microsoft Entra dan pilih dari daftar Layanan.
- Buka Kelola> Pendaftaran aplikasi.
- Dalam Aplikasi yang dimiliki pilih toy-website-auto-review.
- Pilih Hapus dan ikuti perintah.
- Pilih Aplikasi yang dihapus untuk menghapus pendaftaran aplikasi secara permanen.
Penting
Dimungkinkan untuk memiliki pendaftaran Aplikasi duplikat dan nama perwakilan layanan. Disarankan untuk memverifikasi ID aplikasi untuk memastikan Anda menghapus sumber daya yang benar.