Mert Özen Her Satırda Daha İleri

Blog

Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.

Seriler
271 yazı bulundu
Classic Release Pipeline'larından YAML'a Geçiş ve 2023–2026'da Azure Pipelines'ta Değişenler
DevOps SERİ 09

Classic Release Pipeline'larından YAML'a Geçiş ve 2023–2026'da Azure Pipelines'ta Değişenler

Classic release pipeline'ları YAML'a dışa aktarılamaz; build'ler Export to YAML ile başlar, release'ler stage, check ve template'lerle elle yeniden kurulur. Bookstore'da task group'u step template'ine, eski release'i yeniden deploy etmeyi pipeline resource'lu bir pipeline'a çeviriyor, classic oluşturmayı kapatıyor ve 2023–2026 arasındaki değişiklikleri, roadmap'i ve Azure DevOps'ta kalma kararını tarihleriyle topluyoruz.

15 Kas 2026 10 dk 8
Azure Pipelines Agent'ları ve Güvenlik: Microsoft-Hosted, Self-Hosted, Managed DevOps Pools ve Protected Resource'lar
DevOps SERİ 08

Azure Pipelines Agent'ları ve Güvenlik: Microsoft-Hosted, Self-Hosted, Managed DevOps Pools ve Protected Resource'lar

Microsoft-hosted agent her job için yeni bir makine verir ama ücretsiz katmanda tek parallel job ve 60 dakika sınırı var; daha fazlası için self-hosted agent ya da Managed DevOps Pools gerekir. Bookstore için tek job'lık bir container agent'ı hazırlıyor, image takvimini, job authorization scope'u, protected resource'ları, settableVariables ile değişken kısıtlamayı ve Node.js runner'larının kaldırılma tarihlerini görüyoruz.

15 Kas 2026 10 dk 7
Azure Pipelines ile Azure'a Şifresiz Deploy: Workload Identity Federation, App Service Slot'ları ve EF Core Migration Bundle
DevOps SERİ 07

Azure Pipelines ile Azure'a Şifresiz Deploy: Workload Identity Federation, App Service Slot'ları ve EF Core Migration Bundle

Workload identity federation ile Azure service connection'ı hiçbir secret saklamadan çalışır: Azure DevOps bir OIDC token'ı üretir, Entra ID onu federated credential ile eşleştirip access token verir. Bookstore'u resource group'a sınırlı connection'larla App Service staging slot'una deploy ediyor, smoke test ve swap yapıyor, migration bundle'ı Key Vault'tan gelen connection string'le çalıştırıyor ve Azure DevOps issuer'ının 2027 emekliliğini görüyoruz.

15 Kas 2026 11 dk 8
Environment, Approval ve Check'ler: Deployment Job ile YAML'da Release Süreci
DevOps SERİ 06

Environment, Approval ve Check'ler: Deployment Job ile YAML'da Release Süreci

Azure Pipelines'ta approval ve check'ler YAML'da değil, environment gibi resource'ların üzerinde tanımlanır; bu yüzden pipeline dosyasını değiştiren biri onları atlayamaz. Bookstore'a deployment job'lı dev, staging ve production stage'leri ekliyor, release artifact'ını doğruluyor, check'lerin sırasını, production'a yalnızca main'den onayla gitmeyi ve classic release karşılıklarını görüyoruz.

15 Kas 2026 11 dk 8
Azure Artifacts Feed'leri: NuGet ve npm Paketlerini Yayınlamak, Upstream Source'lar ve View'lar
DevOps SERİ 05

Azure Artifacts Feed'leri: NuGet ve npm Paketlerini Yayınlamak, Upstream Source'lar ve View'lar

Azure Artifacts feed'i NuGet ve npm paketlerini değişmez sürümlerle saklar; upstream source ile nuget.org ve npmjs'i tek adresten sunar, view'larla da hangi sürümün kime görüneceğini belirler. Bookstore'un contract paketini NuGetAuthenticate@1 ve dotnet nuget push ile yayınlıyor, CI restore'unu feed'e bağlıyor, build kimliğinin rollerini, promotion, retention ve eski Artifacts task'larının roadmap durumunu görüyoruz.

15 Kas 2026 14 dk 6
Azure Pipelines ile .NET + Angular CI: UseDotNet, NuGet Cache, Test Sonuçları, Coverage ve Pipeline Artifact
DevOps SERİ 04

Azure Pipelines ile .NET + Angular CI: UseDotNet, NuGet Cache, Test Sonuçları, Coverage ve Pipeline Artifact

Azure Pipelines'ta .NET ve Angular CI'ı, lock dosyasına bağlı Cache@2, TRX ve JUnit için PublishTestResults@2, Cobertura için PublishCodeCoverageResults@2 ve job'lar arası PublishPipelineArtifact@1 ile kurulur. Bookstore'un template'lerine bunları ekliyor, DotNetCoreCLI@2'nin Microsoft.Testing.Platform'da --report-trx eklemesini, --locked-mode'u ve api ile web çıktısını tek release paketinde birleştiren job'ı görüyoruz.

15 Kas 2026 12 dk 8
Azure Pipelines Template'leri: Step, Job, Stage ve extends Template ile Ortak Pipeline Kurmak
DevOps SERİ 03

Azure Pipelines Template'leri: Step, Job, Stage ve extends Template ile Ortak Pipeline Kurmak

Azure Pipelines template'leri step, job, stage ve variable seviyesinde YAML'ı tekrar kullanmayı sağlar; extends template ise pipeline'ın iskeletini merkeze alır ve required template check ile bağlayıcı olur. Bookstore için .NET ve Angular job template'lerini ayrı bir pipeline-templates repository'sine taşıyıp tag'e pin'liyor, each ve koşullu eklemeyle inline script'leri engelleyen, audit job'ını zorunlu kılan bir iskelet kuruyoruz.

15 Kas 2026 13 dk 6
Azure Pipelines'ta Variable, Parameter ve Expression'lar: ${{ }}, $( ) ve $[ ] Farkı
DevOps SERİ 02

Azure Pipelines'ta Variable, Parameter ve Expression'lar: ${{ }}, $( ) ve $[ ] Farkı

Azure Pipelines'ta ${{ }} dosya işlenirken, $( ) her task'tan hemen önce, $[ ] ise job veya stage başlarken değerlendirilir; hangisini seçtiğin değerin o anda var olup olmadığını belirler. Bookstore için sürümü bir job'da hesaplayıp output olarak taşıyor, secret'ların env'e neden kendiliğinden gelmediğini, runtime parameter'ları, variable group'ları ve CI, zamanlanmış ve pipeline completion trigger'larını görüyoruz.

15 Kas 2026 13 dk 6
Azure DevOps Pipelines Nedir? Organization, Project, YAML Pipeline ve İlk CI Çalıştırması
DevOps SERİ 01

Azure DevOps Pipelines Nedir? Organization, Project, YAML Pipeline ve İlk CI Çalıştırması

Azure Pipelines, Azure DevOps'un bir project içindeki YAML dosyasını trigger'larla çalıştırıp job'ları agent'larda koşturan CI/CD servisidir; hiyerarşi pipeline, stage, job ve step'tir. Bookstore için restore, build ve SQL Server'lı integration testi yapan ilk pipeline'ı yazıyor, Azure Repos'ta pull request doğrulamasının branch policy ile yapıldığını, GitHub App bağlantısını ve GitHub Actions eşlemesini görüyoruz.

15 Kas 2026 14 dk 5
Terraform'da Sorun Giderme: Plan'ı Okumak, TF_LOG, Provider Hataları, State Kilidi, "Already Exists" ve Drift
DevOps SERİ 14

Terraform'da Sorun Giderme: Plan'ı Okumak, TF_LOG, Provider Hataları, State Kilidi, "Already Exists" ve Drift

Terraform'da sorun gidermenin ilk adımı hatanın hangi aşamada (init, plan ya da apply) çıktığına bakmak ve plan'daki notları okumaktır. Plan'ı metin ve JSON olarak okuyor, TF_LOG ile provider'ın içine bakıyor, lock file uyumsuzluğunu, "already exists" hatasını, kilitli state'i, provider'ın göremediği drift'i, cycle hatasını ve -target'ı gerçek çıktılarla inceliyor; Azure'da soft-delete'te bekleyen Key Vault vakasını çözüyoruz.

15 Kas 2026 13 dk 6
Terraform Built-in Function'ları ve Expression Kalıpları: String, Collection, Encoding, Filesystem ve Network Fonksiyonları, for, Splat ve terraform console
DevOps SERİ 13

Terraform Built-in Function'ları ve Expression Kalıpları: String, Collection, Encoding, Filesystem ve Network Fonksiyonları, for, Splat ve terraform console

Terraform expression'larını rahat yazmanın yolu, 119 built-in fonksiyonu aileleriyle tanımak ve her ifadeyi önce terraform console'da denemektir. String, collection, encoding, filesystem ve network fonksiyonlarını, for ve splat'i, optional() varsayılanlarını ve AzureRM'in provider function'larını deniyor; Bookstore'da ortam başına subnet'i cidrsubnet ile, API ayarlarını da YAML'dan kuruyoruz.

15 Kas 2026 14 dk 7
Windows Container'ları: .NET Framework 4.8 ve IIS Uygulamasını Container'a Almak, Server Core, Nano Server ve Isolation Modları
DevOps SERİ 17

Windows Container'ları: .NET Framework 4.8 ve IIS Uygulamasını Container'a Almak, Server Core, Nano Server ve Isolation Modları

Bir .NET Framework 4.8 ve IIS uygulaması Windows container'ına girer, ama yalnız Windows host'ta ve image'ın Windows sürümü host'unkine uyduğunda çalışır. Bookstore'un eski back office'i için Server Core tabanlı Dockerfile'ı, web.config'i ortam değişkenleriyle güncelleyen configuration builder'ları, ServiceMonitor ve LogMonitor'ü, process ve Hyper-V isolation'ı, 2,6 GB'lık image'ı, çok işletim sistemli tag'leri ve AKS'teki Windows node pool'u ele alıyor, .NET 10'a taşıma kararını tartışıyoruz.

15 Kas 2026 14 dk 8
Blog Haritası