Latihan - Menerbitkan modul ke registri
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.
Di browser Anda, buat registri kontainer baru dalam portal Microsoft Azure.
Pada tab Dasar , pilih langganan target Anda dan grup sumber daya ToyReusable yang Anda buat sebelumnya.
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.
Untuk Paket harga, pilih Dasar.
Biarkan nilai default untuk pengaturan konfigurasi lainnya.
Pilih Tinjau dan buat.
Saat pesan Validasi lulus muncul, pilih Buat.
Tunggu hingga penyebaran selesai, yang biasanya memakan waktu 1-2 menit.
Saat pesan Penyebaran berhasil muncul, pilih Buka sumber daya untuk membuka registri kontainer.
Di area Gambaran Umum registri kontainer, perhatikan nilai pengaturan Server masuk . Namanya menyerup
yourregistryname.azurecr.io
.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.
Di Visual Studio Code, perluas folder modul/storage-account di akar repositori Anda.
Buat file baru bernama metadata.json.
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.
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.
Di Visual Studio Code, perluas folder .github/workflows di akar repositori.
Buka file module-storage-account.yml.
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
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.
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.
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.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.Simpan perubahan Anda ke file tersebut.
Memverifikasi dan melakukan definisi alur kerja Anda
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.
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
Di browser Anda, buka repositori GitHub Anda dan pilih tab Tindakan .
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.
Pilih eksekusi terakhir dari daftar.
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.
Di browser Anda, buka portal Microsoft Azure.
Buka grup sumber daya ToyReusable .
Di Sumber Daya, pilih registri kontainer yang Anda buat sebelumnya.
Pilih Layanan>Repositori dari menu. Kemudian, pilih repositori modules/storage-account, yang mewakili modul yang dipublikasikan oleh alur kerja Anda.
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
- Dari repositori GitHub, buka Pengaturan>Rahasia dan variabel>Tindakan.
- Untuk setiap rahasia GitHub yang disimpan, pilih ikon Hapus <nama> rahasia dan ikuti perintahnya.
Repositori GitHub
- Buka Pengaturan>Umum.
- 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 Mengelola>Pendaftaran aplikasi.
- Di tab Aplikasi yang dimiliki , pilih mainan yang dapat digunakan kembali.
- Pilih Hapus dan ikuti perintah.
- Pilih tab Aplikasi yang dihapus .
- 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.