Latihan - Menerbitkan modul ke registri

Selesai

Di perusahaan mainan, Anda telah menerbitkan modul Bicep ke dalam registri. Anda telah menjalankan proses penerbitan secara manual dari komputer Anda sendiri. Sekarang, Anda ingin membuat alur kerja untuk menangani proses penerbitan.

Dalam latihan ini, Anda akan:

  • Buat registri kontainer untuk modul Bicep Anda.
  • Menambahkan pekerjaan lint ke alur kerja Anda.
  • Tambahkan pekerjaan alur kerja untuk menerbitkan modul ke registri Anda.
  • Verifikasi bahwa alur kerja Anda berhasil dijalankan.
  • Periksa modul yang diterbitkan di registri Anda.

Membuat registri kontainer

Sebelum Anda dapat menerbitkan modul Bicep untuk CDN dan situs web, Anda perlu membuat registri untuk organisasi Anda. Di sini, Anda menggunakan portal Azure untuk membuat registri.

  1. Di browser Anda, buat registri kontainer baru dalam portal Microsoft Azure.

  2. Pada tab Dasar , pilih langganan target Anda dan grup sumber daya ToyReusable yang Anda buat sebelumnya.

  3. Masukkan nama untuk registri Anda dan lokasi yang dekat dengan Anda.

    Penting

    Nama registri harus unik dalam Azure dan berisi 5-50 karakter alfanumerik. Tanda centang di samping nama registri menunjukkan bahwa nama yang Anda pilih tersedia.

  4. Untuk Paket harga, pilih Dasar.

    Biarkan nilai default untuk pengaturan konfigurasi lainnya.

  5. Pilih Tinjau dan buat.

    Cuplikan layar portal Microsoft Azure yang memperlihatkan halaman pembuatan registri kontainer.

  6. Saat pesan Validasi lulus muncul, pilih Buat.

    Tunggu hingga penyebaran selesai, yang biasanya memakan waktu 1-2 menit.

  7. Saat pesan Penyebaran berhasil muncul, pilih Buka sumber daya untuk membuka registri kontainer.

    Cuplikan layar portal Microsoft Azure yang memperlihatkan penyebaran registri kontainer, dengan tombol untuk membuka sumber daya yang disorot.

  8. Di area Gambaran Umum registri kontainer, perhatikan nilai pengaturan Server masuk . Namanya menyerup yourregistryname.azurecr.io.

    Cuplikan layar portal Microsoft Azure yang memperlihatkan detail registri kontainer, dengan server masuk disorot.

    Anda akan membutuhkan string ini segera.

Tambahkan file metadata modul

Di unit sebelumnya, Anda belajar tentang pentingnya memiliki strategi penerapan versi untuk modul Anda. Anda juga mempelajari cara menggunakan file metadata modul untuk menentukan nomor versi utama dan minor modul Anda dalam alur kerja. Di sini, Anda menambahkan file metadata untuk modul akun penyimpanan Anda.

  1. Di Visual Studio Code, perluas folder modul/storage-account di akar repositori Anda.

  2. Buat file baru bernama metadata.json.

    Cuplikan layar Visual Studio Code yang memperlihatkan lokasi file metadata J S O N.

  3. Tambahkan konten berikut ke file:

    {
      "version": {
        "major": 1,
        "minor": 2
      }
    }
    

    Dalam file metadata, Anda secara terpisah menentukan nomor versi utama dan minor. Setiap kali alur kerja Anda berjalan, alur kerja menggabungkan angka-angka ini bersama dengan nomor eksekusi alur kerja untuk membentuk nomor versi lengkap.

  4. Simpan perubahan Anda ke file tersebut.

Memperbarui definisi alur kerja Anda dan menambahkan pekerjaan lint

Repositori Anda berisi draf alur kerja yang bisa Anda gunakan sebagai titik awal.

  1. Di Visual Studio Code, perluas folder .github/workflows di akar repositori.

  2. Buka file module-storage-account.yml.

    Cuplikan layar Visual Studio Code yang memperlihatkan lokasi file definisi alur kerja.

  3. Perbarui nilai MODULE_REGISTRY_SERVER variabel lingkungan ke nama server registri kontainer Anda. Anda menyalin nama itu sebelumnya dalam latihan ini.

    Misalnya, jika server masuk registri Anda yourregistryname.azurecr.io, kode Anda seperti contoh ini:

    env:
      MODULE_NAME: storage-account
      MODULE_REGISTRY_SERVER: yourregistryname.azurecr.io
      MODULE_FILE_PATH: modules/storage-account/main.bicep
      MODULE_METADATA_FILE_PATH: modules/storage-account/metadata.json
    
  4. Di bagian bawah file, untuk # To be added komentar, tambahkan definisi pekerjaan lint berikut:

    jobs:
      lint:
        runs-on: ubuntu-latest
        steps:
        - uses: actions/checkout@v3
        - name: Run Bicep linter
          run: az bicep build --file ${{ env.MODULE_FILE_PATH }}
    

Menambahkan pekerjaan terbitkan ke alur kerja Anda

Sekarang, Anda dapat menambahkan pekerjaan kedua untuk menerbitkan modul ke registri kontainer Anda.

  1. Di bagian bawah file module-storage-account.yml, tambahkan bagian pertama dari definisi tugas penerbitan.

    publish:
      runs-on: ubuntu-latest
      needs: [ lint ]
      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 }}
    

    Dua langkah awal dalam definisi ini adalah memeriksa kode dari repositori Anda dan masuk ke Azure.

  2. Di bawah kode yang baru saja Anda tambahkan, tambahkan langkah lain yang membaca nomor versi dari file metadata.json modul Anda dan mengaturnya sebagai variabel lingkungan.

    - name: Get module version number
      run: |
        majorMinorVersionNumber=$(jq '(.version.major | tostring) + "." + (.version.minor | tostring)' ${{ env.MODULE_METADATA_FILE_PATH }} -r )
        versionNumber="$majorMinorVersionNumber.${{ github.run_number }}"
        echo "MODULE_VERSION=$versionNumber" >> $GITHUB_ENV
    

    Langkah ini menjalankan skrip yang menggunakan jq aplikasi baris perintah untuk mengurai file JSON.

  3. Setelah langkah yang Anda buat, tambahkan langkah terakhir untuk menerbitkan modul ke registri.

    - uses: azure/cli@v1
      name: Publish module
      with:
        inlineScript: |
          az bicep publish \
            --target 'br:${{ env.MODULE_REGISTRY_SERVER }}/${{ env.MODULE_NAME }}:${{ env.MODULE_VERSION }}' \
            --file ${{ env.MODULE_FILE_PATH }}
    

    Langkah ini membangun nilai --target argumen secara dinamis. Ini menggabungkan nilai server registri, nama modul, dan nomor versi.

  4. Simpan perubahan Anda ke file tersebut.

Memverifikasi dan melakukan definisi alur kerja Anda

  1. Verifikasi bahwa file module-storage-account.yml Anda terlihat seperti contoh berikut:

    name: module-storage-account
    concurrency: module-storage-account
    
    on:
      workflow_dispatch:
      push:
        branches:
          - main
        paths:
          - 'modules/storage-account/**'
    
    permissions:
      id-token: write
      contents: read
    
    env:
      MODULE_NAME: storage-account
      MODULE_REGISTRY_SERVER: yourregistryname.azurecr.io
      MODULE_FILE_PATH: modules/storage-account/main.bicep
      MODULE_METADATA_FILE_PATH: modules/storage-account/metadata.json
    
    jobs:
      lint:
        runs-on: ubuntu-latest
        steps:
        - uses: actions/checkout@v3
        - name: Run Bicep linter
          run: az bicep build --file ${{ env.MODULE_FILE_PATH }}
    
      publish:
        runs-on: ubuntu-latest
        needs: [ lint ]
        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 }}
        - name: Get module version number
          run: |
            majorMinorVersionNumber=$(jq '(.version.major | tostring) + "." + (.version.minor | tostring)' ${{ env.MODULE_METADATA_FILE_PATH }} -r )
            versionNumber="$majorMinorVersionNumber.${{ github.run_number }}"
            echo "MODULE_VERSION=$versionNumber" >> $GITHUB_ENV
        - uses: azure/cli@v1
          name: Publish module
          with:
            inlineScript: |
              az bicep publish \
                --target 'br:${{ env.MODULE_REGISTRY_SERVER }}/${{ env.MODULE_NAME }}:${{ env.MODULE_VERSION }}' \
                --file ${{ env.MODULE_FILE_PATH }}
    

    Jika konten file berbeda, perbarui agar sesuai dengan contoh ini, lalu simpan file.

  2. Komit dan dorong perubahan Anda ke repositori Git Anda dengan menjalankan perintah berikut di terminal Visual Studio Code:

    git add .
    git commit -m "Add lint and publish jobs to storage account module workflow"
    git push
    

Memicu alur kerja

  1. Di browser Anda, buka repositori GitHub Anda dan pilih tab Tindakan .

  2. Pilih alur kerja module-storage-account .

    Perhatikan bahwa eksekusi alur kerja sudah berlangsung. Pemicu pendorongan diaktifkan karena Anda memodifikasi file metadata.json dalam folder modul.

  3. Pilih eksekusi terakhir dari daftar.

    Cuplikan layar GitHub yang menyoroti eksekusi terbaru alur kerja modul.

    Tunggu alur kerja selesai berjalan. Modul Bicep diterbitkan ke registri kontainer Anda.

    Perhatikan nomor eksekusi alur kerja, yang mungkin 3.

Meninjau modul di registri

Anda juga dapat melihat peringatan di portal Microsoft Azure.

  1. Di browser Anda, buka portal Microsoft Azure.

  2. Buka grup sumber daya ToyReusable .

  3. Di Sumber Daya, pilih registri kontainer yang Anda buat sebelumnya.

  4. Pilih Layanan>Repositori dari menu. Kemudian, pilih repositori modules/storage-account, yang mewakili modul yang dipublikasikan oleh alur kerja Anda.

    Cuplikan layar portal Microsoft Azure yang memperlihatkan modul Bicep di registri kontainer.

    Perhatikan bahwa ada satu tag, yang cocok dengan nomor versi modul yang diterbitkan alur kerja Anda. Versi utama (1) dan versi minor (2) cocok dengan nomor versi yang Anda tentukan dalam file metadata.json . Nomor revisi (3) cocok dengan nomor eksekusi alur kerja.

Membersihkan sumber daya

Sekarang setelah Anda menyelesaikan latihan, Anda dapat menghapus sumber daya sehingga Anda tidak ditagih untuk itu.

Di terminal Visual Studio Code, jalankan perintah berikut:

az group delete --resource-group ToyReusable --yes --no-wait

Grup sumber daya dihapus di latar belakang.

Remove-AzResourceGroup -Name ToyReusable -Force

Anda juga dapat menghapus rahasia dan repositori GitHub, serta identitas beban kerja Azure.

  • Rahasia GitHub

    1. Dari repositori GitHub, buka Pengaturan>Rahasia dan variabel>Tindakan.
    2. Untuk setiap rahasia GitHub yang disimpan, pilih ikon Hapus <nama> rahasia dan ikuti perintahnya.
  • Repositori GitHub

    1. Buka Pengaturan>Umum.
    2. 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 Mengelola>Pendaftaran aplikasi.
    3. Di tab Aplikasi yang dimiliki , pilih mainan yang dapat digunakan kembali.
    4. Pilih Hapus dan ikuti perintah.
    5. Pilih tab Aplikasi yang dihapus .
    6. Pilih mainan yang dapat digunakan kembali, pilih Hapus secara permanen, lalu pilih Ya untuk menghapus pendaftaran aplikasi secara permanen.

    Penting

    Anda dapat memiliki pendaftaran aplikasi duplikat dan nama perwakilan layanan. Kami menyarankan agar Anda memverifikasi ID aplikasi untuk memastikan Anda menghapus sumber daya yang benar.