Latihan - Membuat lingkungan sementara untuk permintaan pull

Selesai

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.

  1. Di terminal Visual Studio Code, periksa cabang utama repositori.

    git checkout main
    
  2. Tarik versi terbaru kode dari GitHub, yang menyertakan perubahan yang Anda gabungkan di latihan sebelumnya.

    git pull
    
  3. Buka file .github/workflows/pr-validation.yml di Visual Studio Code.

  4. Di dekat bagian atas file, di bawah setelan name, tambahkan setelan concurrency:

    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.

  5. Di dekat bagian atas file, di bawah bagian on yang menentukan pemicu, tentukan bagian permissions:

    name: pr-validation
    concurrency: ${{ github.event.number }}
    
    on: pull_request
    
    permissions:
      id-token: write
      contents: read
    
  6. 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 nama pr_123, dengan keterangan 123 adalah nomor permintaan pull unik.

    Variabel lingkungan resourceGroupLocation menentukan bahwa semua lingkungan jangka pendek Anda harus disebarkan ke wilayah Azure Barat AS 3.

  7. Tentukan pekerjaan baru bernama deploy, di bawah pekerjaan lint:

    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.

  8. 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 }}
    
  9. 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
    
  10. 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 }}"
    
  11. Simpan perubahan Anda.

  12. 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.

  13. 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.

  1. Buat file baru bernama pr-closed.yml di folder .github/workflows.

    Cuplikan layar Visual Studio Code yang menunjukkan file YML titik tertutup PR dalam folder alur kerja.

  2. 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
    
  3. 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.

  4. 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 }}
    
  5. 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
    
  6. Simpan perubahan Anda.

  7. 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.

  8. 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.

  1. Di terminal Visual Studio Code, buat cabang baru untuk perubahan Anda dengan menjalankan perintah berikut:

    git checkout -b feature/container-app
    
  2. Buka file main.bicep di folder deploy.

  3. Perbarui nilai variabel appServiceAppLinuxFrameworkVersion:

    var appServiceAppLinuxFrameworkVersion = 'DOCKER|dockersamples/static-site:latest'
    
  4. Simpan perubahan Anda.

  5. 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.

  1. Di browser Anda, pilih Kode, lalu pilih 3 cabang.

    Cuplikan layar GitHub yang menampilkan daftar cabang repositori.

  2. Di bawah Cabang Anda, di samping fitur/aplikasi kontainer, pilih Permintaan pull baru.

    Cuplikan layar GitHub yang menunjukkan tautan untuk membuat permintaan tarik untuk cabang aplikasi kontainer garis miring fitur.

  3. Pilih Buat permintaan pull.

Melihat lingkungan jangka pendek dibuat

  1. Pada halaman detail permintaan pull, tunggu item pemeriksaan status muncul.

  2. Dalam daftar, di samping pekerjaan penyebaran, pilih Detail.

    Cuplikan layar permintaan tarik GitHub yang menunjukkan item pemeriksaan status. Tautan 'Detail' untuk pekerjaan 'deploy' disorot.

    Tunggu hingga penyebaran selesai.

  3. Pilih Tampilkan nama host situs web.

  4. Pilih URL dalam log.

    Cuplikan layar log penyebaran GitHub Actions. URL situs web di langkah Tampilkan nama host situs web disorot.

    Situs web memuat dan menampilkan pesan Hello Docker! yang menunjukkan bahwa situs web berjalan dari gambar kontainer yang ditentukan dalam perubahan permintaan pull.

    Cuplikan layar beranda situs web setelah penyebaran selesai.

  5. 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.

  1. Pilih Permintaan pull, lalu pilih permintaan pull Gunakan citra kontainer untuk situs web.

    Cuplikan layar GitHub yang menampilkan daftar permintaan tarik terbuka di repositori.

    Pemeriksaan status telah berlalu.

    Cuplikan layar permintaan tarik GitHub yang menunjukkan bahwa kedua pemeriksaan status telah lulus.

  2. Pilih Gabungkan permintaan pull.

  3. Pilih Konfirmasi penggabungan.

Meninjau penghapusan grup sumber daya

  1. 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.

    Cuplikan layar panel Tindakan GitHub yang menunjukkan bahwa alur kerja tertutup PR sedang berjalan.

  2. 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

    1. Dari repositori GitHub, buka Pengaturan>Tindakan Rahasia dan variabel.>
    2. Pilih tombol Hapus untuk setiap rahasia repositori dan ikuti perintahnya.
  • Repositori GitHub

    1. Buka Pengaturan>Umum
    2. Gulir ke bagian bawah layar, pilih Hapus repositori ini, dan ikuti perintahnya.
  • Kredensial federasi dan perwakilan layanan pendaftaran Aplikasi Azure.

    1. Dari beranda portal, cari ID Microsoft Entra dan pilih dari daftar Layanan.
    2. Buka Kelola> Pendaftaran aplikasi.
    3. Dalam Aplikasi yang dimiliki pilih toy-website-auto-review.
    4. Pilih Hapus dan ikuti perintah.
    5. 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.