İçeriğe atla
Şimdi yükleniyor
AKAşkın KILIÇ
  • Anasayfa
  • Azure & Bulut
    • Microsoft Azure
    • Bulut Altyapı
    • Microsoft 365
  • Yazılım
    • DevOps
    • Geliştirici Araçları
    • Konteyner & K8s
  • AI & Veri
    • Yapay Zeka
    • Veri & Analitik
  • Güvenlik
    • Güvenlik & Kimlik
    • Kurumsal Teknoloji
  • Hakkımda
    • İletişim
×
  • Azure
  • Bulut Altyapı
  • DevOps
  • Geliştirici Araçları
  • Güvenlik & Kimlik
  • Konteyner & Kubernetes
  • Kurumsal Teknoloji
  • Microsoft 365
  • Microsoft Azure
  • Veri & Analitik
  • Yapay Zeka
  • Başlangıç
  • DevOps
  • azd Hook’larını Python, TypeScript, .NET ile Yazın
Bulut Altyapı DevOps Geliştirici Araçları .NET, azd hook, Azure Developer CLI, deployment pipeline, DevOps, Python, TypeScript Aşkın KILIÇ 23/04/2026 3 Yorumlar

azd Hook’larını Python, TypeScript, .NET ile Yazın

azd Hook'larını Python, TypeScript, .NET ile Yazın
⏱️ 11 dk okuma📅 23 Nisan 2026🔄 Güncelleme: 15 Temmuz 2026

Şahsen, Geçen hafta bir müşteride, finans tarafında çalışan epey kalabalık bir ekiple, azd ile deployment pipeline’ı kuruyorduk (ben de ilk duyduğumda şaşırmıştım). Hook yazma kısmına gelince ekipteki Python geliştiricisi bir anda durdu ve, “Ben Bash bilmiyorum, bu hook’u nasıl yazacağım?” dedi. Haklıydı. Adam bütün gün Python yazıyor, sonra tek bir hook için Bash öğrenmeye kalkıyor; açık konuşayım, bu iş biraz ters dürüyor.

📋 İçindekiler

  1. Maliyet ve Performans: Kimse Konuşmuyor Ama…

    Herkes yeni özelliklere atlıyor da, performans tarafını pek kurcalamıyor (kendi tecrübem). Ben sorayım o zaman. Peki neden?

    İşin garibi, Hook’lar her azd komutu çalıştığında tetikleniyor. Yanı azd up dediğiniz anda preprovision, postprovision, postdeploy hook’ları sırayla devreye giriyor; sonra da her birinin kendi bağımlılık hazırlığı başlıyor (Python için venv açılıyor, JavaScript tarafında npm install koşuyor, bazen de ufak ufak başka işler çıkıyor), işte tam burada süre uzuyor.

    Bence, Kendi testlerimde şunu gördüm: basit bir Python hook’u ilk çalıştırmada yaklaşık 12 saniye sürüyor, sonraki çalıştırmalarda işe 2 saniye civarına düşüyor. TypeScript tarafı biraz daha ağır geliyor; ilk seferde 18 saniye civarı görüyorum (npm install ile tsx ayağa kalkana kadar bekliyorsunuz),.NET proje modunda işe build süresi projenin boyutuna göre değişiyor, yanı sabit bir sayı vermek zor.

    İlgili içerik: Node.js Addon'larını .NET Native AOT ile Yazmak

    Kısa bir not düşeyim buraya.

    Enterprise CI/CD pipeline’ında bu süreler küçük görünse de can sıkabiliyor. Günde 50 deployment yapıyorsanız ve her deployment’a 30 saniye ekleniyorsa, ay sonunda ortaya saatler çıkıyor; açık konuşayım, ekip bunu ilk başta fark etmeyebiliyor ama fatura gelince tablo netleşiyor. Bütçe tarafı hassassa, hook bağımlılıklarını minimal tutun; mesela bir hook içine pandas koymayın, çoğu senaryoda sadece requests yetiyor olabilir.

    💡 Bilgi: Azure DevOps pipeline’larında azd hook’ları kullanıyorsanız, Microsoft-hosted agent’larda Python, Node.js ve.NET zaten yüklü geliyor. Ama self-hosted agent kullanıyorsanız bu runtime’ları kendiniz kurmanız gerekir. Bunu atlayan çok ekip gördüm.

    Pratik Uygulama: Nereden Başlamalı?

    Tamam, özellik netleşti. Peki yarın sabah ne yapacaksınız? (kendi tecrübem)

    İlk iş, mevcut Bash ve PowerShell hook’larını tek tek açıp bakın; hangisi gerçekten işe yarıyor, hangisi sadece yıllardır orada dürüyor, önü ayıklayın (ben olsam önce en basit olanı seçerim), çünkü hepsini aynı anda çevirmeye kalkınca iş biraz dağılıyor ve gereksiz yere kafa karıştırıyor.

    Sonra azure.yaml dosyanıza girin ve hook tanımlarını güncelleyin. Dosya uzantısını değiştirmeniz çoğu zaman yetiyor, azd de bunu genelde kendi kendine yakalıyor. Basit gibi dürüyor.

    Şahsen, Üçüncü adımda işi lokalde bırakmayın, CI/CD pipeline içinde de deneyin; çünkü yerelde çalışan bir hook, pipeline tarafında bambaşka bir sürpriz çıkarabiliyor (özellikle dosya yolları, ortam değişkenleri ve agent farkları yüzünden), yanı “bende çalıştı” cümlesi burada pek kurtarmıyor.

    Bir de şu detay var: Azure SDK Nisan 2026: Kritik Güvenlik Yaması ve Yenilikler yazısında anlattığım SDK güncellemelerini hook’larınızda kullanıyorsanız, versiyon uyumluluğunu mutlaka kontrol edin; eski SDK sürümleri yeni azd hook sistemiyle bazen garip hatalar veriyor, hani “neden şimdi patladı?” dedirten cinsten.

    Alternatif Yaklaşım: Bütçeniz Kısıtlıysa

    Açıkçası, Eğer henüz azd’ye geçmediyseniz. Bütçe tarafı sıkışıkse, hook’ları doğrudan Azure DevOps pipeline task’ları olarak da yazabilirsiniz. Aynı esnekliği vermiyor, açık konuşayım; ama sıfır ek maliyetle ilerliyorsunuz (küçük projelerde bu tercih gayet idare eder), üstelik bazen sırf sadelik için daha mantıklı bile olabiliyor.

    azd’nın hook sistemi daha düzenli geliyor bana, fakat “olmazsa olmaz” da değil. Hele bir de küçük ekiplerde önce çalışan çözümü kurup sonra iyileştirmek daha sağlıklı oluyor (eh, fena değil). Azure DevOps Server Nisan Yaması: Ne Geldi, Ne Yapmalı? yazısında DevOps tarafındaki güncel gelişmeleri bulabilirsiniz.

    Beklentim vs Gerçeklik

    Açık konuşayım: özellik fena değil, ama henüz tam oturmamış. Birkaç yerde insanın kaşı kalkıyor.

    Birincisi, hata mesajları baya zayıf. Hook içinde bir Python hatası patlayınca azd’nın döndürdüğü şey çoğu zaman “hook failed with exit code 1” gibi kuru bir satır oluyor; alttaki Python traceback’ını görmek için verbose mode açmanız gerekiyor, yanı sorun aslında orada dürüyor. Size ilk anda gösterilmiyor. Yeni başlayan biriyseniz, bu durum biraz sınır bozucu, hatta gereksiz yere vakit yediriyor.

    İkincisi, hook’lar arasında veri taşımak hâlâ uğraştırıyor. Preprovision hook’undan postprovision hook’una bir şey aktarmak istiyorsanız, ya ortam değişkenlerine yaslanıyorsunuz ya da dosya sistemiyle idare ediyorsunuz; iş görüyor. Pek zarif değil. Bence burada shared context objesi gibi daha temiz bir yol olabilirdi, çünkü şu anki yaklaşım biraz dolambaçlı kalıyor.

    Üçüncüsü — ve açıkçası beni en çok burası düşündürdü — hot reload yok. Hook’u değiştirip yeniden çalıştırdığınızda sistem her seferinde bağımlılıkları tekrar kontrol ediyor; küçük bir deneme yapacaksınız, hop bekliyorsunuz. Geliştirme aşamasında bu gerçekten yavaşlatıyor, insanın hevesi de biraz kırılıyor.

    Dürüst olmak gerekirse, Ama neyse, kağıt üstünde iyi bir adım bu. Pratikte işe biraz daha pişmesi lazım; şimdiye kadar gördüğüm kadarıyla birkaç versiyon sonra çok daha rahat kullanılacak hâle gelir diye düşünüyorum.

    Sıkça Sorulan Sorular

    azd hook’larında hangi diller destekleniyor?

    Bash ve PowerShell’e ek olarak artık Python, JavaScript, TypeScript ve.NET de destekleniyor. azd dosya uzantısına bakarak dili otomatik algılıyor (şaşırtıcı ama gerçek). Yanı çoğu durumda ekstra bir şey yapmanıza gerek yok (buna dikkat edin). Ama belirsiz bir durum varsa azure.yaml içinde kind alanıyla dili kendiniz belirtebilirsiniz.

    TypeScript hook’ları için tsconfig.json gerekiyor mu?

    Hayır, gerekmiyor. azd TypeScript dosyalarını npx tsx ile çalıştırıyor — ayrıca derleme adımı falan yok, tsconfig.json da istenmiyor. Aslında sadece bir package.json yeterli, bu kadar.

    .NET tek dosya modu hangi versiyondan itibaren çalışıyor?

    .NET 10. Üzeri sürümlerde tek bir.cs dosyasını doğrudan çalıştırabiliyorsunuz, hani proje dosyasına bile gerek kalmıyor. Ama daha eski.NET sürümlerindeyseniz.csproj dosyası hâlâ gerekiyor.

    Hook’lardaki bağımlılıklar her çalıştırmada yeniden mi kuruluyor?

    İlk seferinde evet — sanal ortam oluşturuluyor, bağımlılıklar kuruluyor. Sonrasında cache devreye giriyor, dolayısıyla — itiraz edebilirsiniz tabi — çok daha hızlı ilerliyor. Tecrübeme göre bu farkı özellikle büyük projelerde gerçekten hissediyorsunuz. Tabiî bağımlılık dosyası değişirse, mesela requirements.txt güncellediyseniz, yeniden kurulum yapılıyor.

    Mevcut Bash hook’larımı hemen değiştirmeli mıyım?

    Şöyle ki, Acil bir durum yok açıkçası — Bash ve PowerShell hook’ları sorunsuz çalışmaya devam ediyor (kendi tecrübem). Ama yeni bir hook yazacaksanız ya da mevcut olanları refactor edecekseniz, bence proje dilinize geçmek mantıklı. Hani sürekli dil değiştirmek zorunda kalmamak uzun vadede ciddi bir verimlilik artışı sağlıyor.

    Kaynaklar ve İleri Okuma

    Azure Developer CLI Extensibility — Resmî Dokümantasyon

    Write azd hooks in Python, JavaScript, TypeScript, or.NET — Azure SDK Blog

    Azure Developer CLI GitHub Repository

    🤖Bu yazı yapay zeka (büyük dil modelleri) ile hazırlanmış, insan editör tarafından incelenmiştir. İçerik üretim sürecimiz.
    Aşkın KILIÇ
    Aşkın KILIÇYazar

    20+ yıl deneyimli Azure Solutions Architect. Microsoft sertifikalı bulut mimari ve DevOps danışmanı. Azure, yapay zekâ ve bulut teknolojileri üzerine Türkçe teknik içerikler üretiyor.

    AZ-305AZ-104AZ-500AZ-400DP-203AI-102

    İlgili Yazılar

    GitHub Copilot ile Pull Request İnceleme ve Code Review
    GitHub Copilot ile Pull Request İnceleme ve Code Review28 Nis 2026
    Claude Fable 5 Microsoft Foundry'de: Otonom Ajan Devri Başlıyor
    Claude Fable 5 Microsoft Foundry'de: Otonom Ajan Devri Başlıyor16 Haz 2026
    VS Live! Las Vegas 2026: İzlenmesi Gereken 20 Oturum
    VS Live! Las Vegas 2026: İzlenmesi Gereken 20 Oturum17 Nis 2026
    Photoshop'ta MSVC ve SPGO ile %20 Hız Artışı: Nasıl Oldu?
    Photoshop'ta MSVC ve SPGO ile %20 Hız Artışı: Nasıl Oldu?17 Haz 2026

    Bu içerik işinize yaradı mı?

    Benzer içerikleri kaçırmamak için YouTube ve GitHub hesaplarımı takip edin.

    YouTube GitHub

    Haftalık Bülten

    Her pazar özenle seçilmiş teknoloji yazıları doğrudan e-postanıza gelsin.

Etiket .NET azd hook Azure Developer CLI deployment pipeline DevOps Python TypeScript
Önceki yazı

.NET 10 Data Protection Güvenlik Açığı ve Acil Yama

Sonraki yazı

SELinux Volume Label Değişikliği: v1.37 Öncesi Hazırlık

İlginizi Çekebilir

GPT-6 Astra Microsoft Foundry’de Genel Kullanıma Açıldı
Aşkın KILIÇ 0

GPT-6 Astra Microsoft Foundry’de Genel Kullanıma Açıldı

07/09/2026
MSTest 4.4 ile Native AOT Uygulamalarını Test Etmek
Aşkın KILIÇ 0

MSTest 4.4 ile Native AOT Uygulamalarını Test Etmek

07/09/2026
Multiple trusted publishing configurations for npm
Aşkın KILIÇ 0

Multiple trusted publishing configurations for npm

06/09/2026

3 comments

comments user
Aslı S. 23/04/2026 06:46

Sonunda bu özellik geldi, Bash’te hook yazmak bazen gerçekten can sıkıcı oluyordu. TypeScript ile yazabilmek özellikle frontend ağırlıklı ekipler için büyük kolaylık olacak, hemen deneyeceğim.

comments user
Oğuz L. 23/04/2026 15:22

Bash yazmak zorunda kalmadan Python ile hook yazabilmek gerçekten güzel bir gelişme, özellikle ekipte shell bilmeyen arkadaşlar için can kurtarıcı olacak. .NET desteği de eklenince artık hiçbir bahane kalmıyor sanırım.

comments user
Serkan D. 23/04/2026 19:22

Bash’te environment variable kontrolü yazmak her seferinde biraz eziyete dönüyordu, Python desteği gerçekten işe yarayacak. Peki mevcut hook’ları migrate etmek için özel bir araç var mı yoksa elle mi taşımak gerekiyor?

Yorumlar kapalı.

Yazı Ara

Takip Edin

  • Takipçi
  • Takipçi
  • Takipçi
  • Abone
  • Takipçi
  • GPT-6 Astra Microsoft Foundry’de Genel Kullanıma Açıldı
    07/09/2026 GPT-6 Astra Microsoft Foundry’de Genel Kullanıma Açıldı
  • MSTest 4.4 ile Native AOT Uygulamalarını Test Etmek
    07/09/2026 MSTest 4.4 ile Native AOT Uygulamalarını Test Etmek
  • Multiple trusted publishing configurations for npm
    06/09/2026 Multiple trusted publishing configurations for npm
  • Kurumsal Yapay Zekâda Azure’un Uçtan Uca Yaklaşımı
    06/09/2026 Kurumsal Yapay Zekâda Azure’un Uçtan Uca Yaklaşımı
  • Kesintisiz Şema Değişikliği İçin 6 Aşamalı Yol
    06/09/2026 Kesintisiz Şema Değişikliği İçin 6 Aşamalı Yol
  • Copilot Cloud Agent Metriği: Kullanımı Ölçmek Kolaylaştı
    11/04/2026 Copilot Cloud Agent Metriği: Kullanımı Ölçmek Kolaylaştı
  • GitHub Code Scanning’de Toplu Düzeltme: PR’lar Hızlandı
    07/04/2026 GitHub Code Scanning’de Toplu Düzeltme: PR’lar Hızlandı
  • MCP Apps’i Kolaylaştıran Fluent API: Sahada Ne Değişiyor?
    08/04/2026 MCP Apps’i Kolaylaştıran Fluent API: Sahada Ne Değişiyor?
  • GitHub Copilot Cloud Agent İçin Runner Kontrolü: Kurumsal Düzen
    03/04/2026 GitHub Copilot Cloud Agent İçin Runner Kontrolü: Kurumsal Düzen
  • Yapay Zekâ Çağında Sanayi Politikası: Asıl Mesela Ne?
    06/04/2026 Yapay Zekâ Çağında Sanayi Politikası: Asıl Mesela Ne?
  • GitHub Copilot Pro Denemeleri Neden Durdu?
    11/04/2026 GitHub Copilot Pro Denemeleri Neden Durduruldu?
  • vcpkg'de Paralel Kurulum ve Güvenlik Yaması: Neler Değişti?
    06/04/2026 vcpkg’de Paralel Kurulum ve Güvenlik Yaması: Neler Değişti?
  • MCP Apps’i Kolaylaştıran Fluent API: Sahada Ne Değişiyor?
    08/04/2026 MCP Apps’i Kolaylaştıran Fluent API: Sahada Ne Değişiyor?
  • Yapay Zekâ Çağında Sanayi Politikası: Asıl Mesela Ne?
    06/04/2026 Yapay Zekâ Çağında Sanayi Politikası: Asıl Mesela Ne?
  • Microsoft Foundry Mart 2026: Sahadan İlk İzlenimler
    10/04/2026 Microsoft Foundry Mart 2026: Sahadan İlk İzlenimler

SİZİN İÇİN DERLEDİK

GPT-6 Astra Microsoft Foundry’de Genel Kullanıma Açıldı
Bulut Altyapı Yapay Zeka

GPT-6 Astra Microsoft Foundry’de Genel Kullanıma Açıldı

07/09/2026 Aşkın KILIÇ
MSTest 4.4 ile Native AOT Uygulamalarını Test Etmek
DevOps Geliştirici Araçları Microsoft Azure

MSTest 4.4 ile Native AOT Uygulamalarını Test Etmek

07/09/2026 Aşkın KILIÇ
Multiple trusted publishing configurations for npm
Bulut Altyapı Geliştirici Araçları Güvenlik & Kimlik

Multiple trusted publishing configurations for npm

06/09/2026 Aşkın KILIÇ
Kurumsal Yapay Zekâda Azure’un Uçtan Uca Yaklaşımı
Microsoft Azure Yapay Zeka

Kurumsal Yapay Zekâda Azure’un Uçtan Uca Yaklaşımı

06/09/2026 Aşkın KILIÇ
Kesintisiz Şema Değişikliği İçin 6 Aşamalı Yol
Bulut Altyapı DevOps

Kesintisiz Şema Değişikliği İçin 6 Aşamalı Yol

06/09/2026 Aşkın KILIÇ
Fairwind Programı: Hükümetlere Sınırlı Siber Savunma
Güvenlik & Kimlik

Fairwind Programı: Hükümetlere Sınırlı Siber Savunma

06/09/2026 Aşkın KILIÇ
GitHub HydraFusion: Göreve Göre Model Orkestrasyonu
Bulut Altyapı Geliştirici Araçları Yapay Zeka

GitHub HydraFusion: Göreve Göre Model Orkestrasyonu

05/09/2026 Aşkın KILIÇ
Kubernetes v1.37’de Rootless Mod Beta Aşamasına Geldi
Güvenlik & Kimlik Konteyner & Kubernetes

Kubernetes v1.37’de Rootless Mod Beta Aşamasına Geldi

05/09/2026 Aşkın KILIÇ
SQL Decomposition: T-SQL’de Karmaşıklığı Azaltma
Geliştirici Araçları Veri & Analitik

SQL Decomposition: T-SQL’de Karmaşıklığı Azaltma

05/09/2026 Aşkın KILIÇ
AMIE ile Gerçek Zamanlı Klinik Video Görüşmeleri
Bulut Altyapı Yapay Zeka

AMIE ile Gerçek Zamanlı Klinik Video Görüşmeleri

05/09/2026 Aşkın KILIÇ
GitHub Copilot weekly releases — August 31
Bulut Altyapı Geliştirici Araçları Yapay Zeka

GitHub Copilot weekly releases — August 31

04/09/2026 Aşkın KILIÇ
GPT-6 Astra GitHub Copilot’ta Kullanıma Sunuldu
DevOps Microsoft Azure

GPT-6 Astra GitHub Copilot’ta Kullanıma Sunuldu

04/09/2026 Aşkın KILIÇ

Hakkımda

Aşkın KILIÇ

Microsoft Azure Çözüm Uzmanı. Bulut bilişim, yapay zekâ, DevOps ve kurumsal güvenlik üzerine yazılar yazıyorum.

Devamını Oku →

Kategoriler

  • Azure
  • Bulut Altyapı
  • DevOps
  • Geliştirici Araçları
  • Güvenlik & Kimlik
  • Konteyner & Kubernetes
  • Kurumsal Teknoloji
  • Microsoft 365
  • Microsoft Azure
  • Veri & Analitik
  • Yapay Zeka

Popüler Etiketler

AI ajanları ASP.NET Core Azure azure app service Azure Cosmos DB Azure Developer CLI Azure DevOps azure sdk Azure SQL bulut bilişim C++ CI/CD CodeQL code review copilot Copilot CLI DevOps geliştirici verimliliği GitHub GitHub Actions GitHub Copilot güvenlik Kimlik Doğrulama Kubernetes Kurumsal geliştirme kurumsal güvenlik kurumsal yapay zeka maliyet optimizasyonu MCP Microsoft Agent Framework Microsoft Azure Microsoft Foundry otomasyon performans Pull Request RAG SEO uyumlu verimlilik veri yönetimi Visual Studio Visual Studio 2026 VS Code yapay zeka yapay zeka ajanları Yazılım geliştirme
  • Gizlilik Politikası
  • Çerez Politikası
  • Kullanım Koşulları
  • Hakkımda
  • İletişim

© 2026 Aşkın KILIÇ | Tüm hakları saklıdır. | Powered By SpiceThemes

Çerez tercihleri Zorunlu çerezler sitenin çalışması için kullanılır. Analitik çerezler yalnız açık izninizden sonra Google Analytics ve Microsoft Clarity için etkinleştirilir. KVKK ve Çerez Politikası
✉

Haftalık Bülten

Azure, DevOps ve Yapay Zeka dünyasındaki en güncel içerikleri her hafta doğrudan e-postanıza alın.

Spam yok. İstediğiniz zaman iptal edebilirsiniz.
📱
Uygulamayı Yükle Ana ekrana ekle, çevrimdışı oku
Ana Sayfa
Kategoriler
💻 Geliştirici Araçları 432 yazı 🏗️ Bulut Altyapı 345 yazı 🤖 Yapay Zeka 289 yazı 🔧 DevOps 242 yazı ☁️ Microsoft Azure 231 yazı 🔒 Güvenlik & Kimlik 199 yazı 🏢 Kurumsal Teknoloji 83 yazı 📊 Veri & Analitik 62 yazı 🐳 Konteyner & Kubernetes 53 yazı 📧 Microsoft 365 22 yazı 📁 Azure 1 yazı
Ara
Popüler
Yapay Zeka Azure Kubernetes DevOps Copilot Docker
Paylaş
WhatsApp
İçindekiler
    ← .NET 10 Data Protection Güvenl...
    SELinux Volume Label Değişikli... →
    📩

    Gitmeden önce!

    Her pazar özenle seçilmiş teknoloji yazıları ve AI haberleri doğrudan e-postanıza gelsin. Ücretsiz, spam yok.

    🔒 Bilgileriniz güvende. İstediğiniz zaman ayrılabilirsiniz.

    📬 Haftalık bülten: Teknoloji + AI haberleri
    Beni Takip Et Yeni Azure / AI / DevOps yazılarını GitHub ve RSS üzerinden takip edin.
    GitHub RSS