Postingan ini diterjemahkan secara otomatis. Untuk versi aslinya, klik di sini.
Jika pernah memiliki proyek yang sepenuhnya ditulis dalam .NET namun tetap harus menulis script Bash untuk hooks azd, rasa frustrasi itu sudah pasti familiar. Mengapa harus beralih ke sintaks shell di langkah pre-provisioning ketika seluruh proyek menggunakan C#?
Masalah ini kini memiliki solusi resmi. Azure Developer CLI baru saja meluncurkan dukungan multi-bahasa untuk hooks, dan hasilnya sesuai ekspektasi.
Apa itu hooks
Hooks adalah script yang berjalan di titik-titik penting dalam siklus hidup azd — sebelum provisioning, setelah deployment, dan lainnya. Didefinisikan di azure.yaml, mereka memungkinkan injeksi logika kustom tanpa memodifikasi CLI.
Sebelumnya hanya Bash dan PowerShell yang didukung. Kini bisa menggunakan Python, JavaScript, TypeScript, atau .NET — dan azd menangani sisanya secara otomatis.
Cara kerja deteksi bahasa
Cukup arahkan hook ke sebuah file dan azd akan menyimpulkan bahasa dari ekstensinya:
hooks:
preprovision:
run: ./hooks/setup.py
postdeploy:
run: ./hooks/seed.ts
postprovision:
run: ./hooks/migrate.cs
Tanpa konfigurasi tambahan. Jika ekstensinya ambigu, bisa menambahkan kind: python (atau bahasa yang sesuai) secara eksplisit.
Detail penting per bahasa
Python
Letakkan requirements.txt atau pyproject.toml di samping script (atau direktori induknya). azd akan otomatis membuat virtual environment, menginstal dependensi, dan menjalankan script.
JavaScript dan TypeScript
Pola yang sama — letakkan package.json dekat script dan azd akan menjalankan npm install terlebih dahulu. Untuk TypeScript, menggunakan npx tsx tanpa langkah kompilasi dan tanpa tsconfig.json.
.NET
Dua mode tersedia:
- Mode project: Jika ada
.csprojdi samping script,azdotomatis menjalankandotnet restoredandotnet build. - Mode single-file: Di .NET 10+, file
.csmandiri dapat dijalankan langsung viadotnet run script.cs. Tidak perlu file project.
Konfigurasi per executor
Setiap bahasa mendukung blok config opsional:
hooks:
preprovision:
run: ./hooks/setup.ts
config:
packageManager: pnpm
postprovision:
run: ./hooks/migrate.cs
config:
configuration: Release
framework: net10.0
Mengapa ini penting bagi developer .NET
Hooks adalah tempat terakhir dalam proyek berbasis azd yang memaksa pergantian bahasa. Sekarang seluruh deployment pipeline — dari kode aplikasi hingga lifecycle hooks — bisa hidup dalam satu bahasa. Utility .NET yang sudah ada bisa digunakan kembali di hooks, shared library bisa direferensikan, dan pemeliharaan shell script pun berakhir.
Penutup
Salah satu perubahan yang terlihat kecil namun benar-benar mengurangi gesekan dalam workflow azd sehari-hari. Dukungan multi-bahasa untuk hooks sudah tersedia sekarang — cek post resmi untuk dokumentasi lengkap.
