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
239 yazı bulundu
Jenkins'te Parallel, Matrix, input ve Deploy Stage'leri
DevOps SERİ 09

Jenkins'te Parallel, Matrix, input ve Deploy Stage'leri

Aynı paketi önce staging'e, agent'sız bir input onayından sonra production'a sshagent, rsync ve systemctl ile deploy ediyoruz; Lockable Resources eşzamanlılığı, milestone ise sırayı çözer. Health check'li deploy script'i, eski build'in yeniden sonra deploy ettiği gerçek kilit çıktısı, inversePrecedence, failFast, Node 22/24 matrix'i ve IIS için app_offline.htm yapısı.

8 Kas 2026 10 dk 30
Jenkins ile Angular Pipeline: Node Container, npm Cache, Headless Test ve stash/unstash
DevOps SERİ 08

Jenkins ile Angular Pipeline: Node Container, npm Cache, Headless Test ve stash/unstash

Angular 22 uygulamasını node:24 container'ında npm ci, ng lint, Vitest ve ng build ile .NET API'yle paralel build edip stash/unstash ile tek pakette birleştiriyoruz. npm cache volume'ü, Vitest'in JUnit reporter'ı, budget'lar, browser modu için eksik paket hatası, 329 MB'lık node_modules'ü stash etmemek ve Pipeline Graph View'da paralel stage süreleri.

8 Kas 2026 9 dk 29
Jenkins ile .NET Pipeline: dotnet SDK Container'ı, Test Sonuçları, Coverage ve Publish Artifact'ı
DevOps SERİ 07

Jenkins ile .NET Pipeline: dotnet SDK Container'ı, Test Sonuçları, Coverage ve Publish Artifact'ı

Bookstore.Api'yi .NET SDK container'ında restore, build, test ve publish edip JUnit raporunu, Cobertura coverage'ı ve fingerprint'li artifact'ı Jenkins'e kaydediyoruz. NuGet cache volume'ünün izin hatası ve kazandırdığı süre, .NET 10'da Microsoft.Testing.Platform ile xUnit v3'ün JUnit çıktısı, coverage quality gate'i ve test raporu bulunamayınca kırmızıya dönen build.

8 Kas 2026 9 dk 41
Jenkins Multibranch Pipeline ve GitHub Entegrasyonu: Webhook, PR Build'leri ve Status Check
DevOps SERİ 06

Jenkins Multibranch Pipeline ve GitHub Entegrasyonu: Webhook, PR Build'leri ve Status Check

Multibranch pipeline her branch ve PR için otomatik job açar; webhook ile saniyeler içinde build başlar, sonuç commit'e status check olarak döner. Branch source trait'leri, webhook'un localhost URL'i ve Gitea'nın SSRF engeline takılması, when ile branch/PR ayrımı, fork PR'ında Jenkinsfile'ın base branch'ten okunması, required check ve PAT yerine GitHub App.

8 Kas 2026 10 dk 40
Jenkins Credentials: withCredentials, Credential Binding ve Groovy String Interpolation Tuzağı
DevOps SERİ 05

Jenkins Credentials: withCredentials, Credential Binding ve Groovy String Interpolation Tuzağı

Secret'ı credentials() veya withCredentials ile en dar scope'ta açar, sh adımında tek tırnakla shell değişkeni olarak okursun; çift tırnakla Groovy interpolation process'e sızdırır. Credential türleri ve SYSTEM/GLOBAL/folder scope'ları, JCasC'de readFile, masking'in base64'ü yakalayıp parçayı kaçırması, sshagent, folder credential ile ekip izolasyonu ve harici secret store'lar.

8 Kas 2026 8 dk 38
Jenkins Agent'ları: SSH Agent, Inbound Agent, Label'lar ve Docker Container'da Build
DevOps SERİ 04

Jenkins Agent'ları: SSH Agent, Inbound Agent, Label'lar ve Docker Container'da Build

SSH agent'ta bağlantıyı controller, inbound agent'ta agent açar; build'i label expression'larla seçtiğin agent'ta ya da agent { docker } ile SDK container'ında koşturursun. JCasC ile agent tanımı, gerçek SSH ve WebSocket bağlantı log'ları, Docker Pipeline'ın workspace mount'u ve uid 1000 ayrıntısı, cleanWs ile disk, Kubernetes pod template ve Windows agent'a kısa bakış.

8 Kas 2026 10 dk 32
Jenkinsfile ile İlk Pipeline: Declarative Syntax, stages, steps, post ve environment
DevOps SERİ 03

Jenkinsfile ile İlk Pipeline: Declarative Syntax, stages, steps, post ve environment

Jenkinsfile, pipeline'ı kodla aynı repository'de tarif eder; Declarative syntax'ta agent, stages ve steps iskeletin kendisi, environment, options, parameters, triggers ve post ise davranışı belirler. Linter çıktısı, tırnak kuralı, ilk build'de shell'e boş gelen parametre, when ile atlanan stage, Snippet Generator ve Replay, Scripted Pipeline ve NotSerializableException ile @NonCPS.

8 Kas 2026 10 dk 29
Jenkins Kurulumu: Docker ile LTS, Java 21, İlk Admin ve Plugin Seçimi
DevOps SERİ 02

Jenkins Kurulumu: Docker ile LTS, Java 21, İlk Admin ve Plugin Seçimi

Jenkins'i Docker'da sürümü sabit bir LTS image'ı, isimli bir JENKINS_HOME volume'ü ve Java 21 ile kurarsın; setup wizard'ı plugins.txt ve JCasC ile atlarsın. Anonim volume tuzağı, initialAdminPassword, Docker-in-Docker'ın TLS sertifika hatası, anonymous erişim, controller'da sıfır executor, CSRF crumb'ı, agent → controller security ve Linux paketiyle kurulum.

8 Kas 2026 9 dk 30
Jenkins Nedir? Controller, Agent, Executor ve Ne Zaman GitHub Actions Yerine Jenkins
DevOps SERİ 01

Jenkins Nedir? Controller, Agent, Executor ve Ne Zaman GitHub Actions Yerine Jenkins

Jenkins, işleri planlayan bir controller ile build'leri executor'larında koşan agent'lardan oluşan self-hosted bir CI/CD sunucusudur. Hudson'dan bugüne geçmişi, workspace ve label kavramları, eşleşmeyen label'ın build'i nasıl queue'da beklettiği, plugin ekosisteminin bedeli, Freestyle ve Pipeline, LTS ve weekly hattı ve Jenkins'in GitHub Actions'a göre ne zaman doğru seçim olduğu.

8 Kas 2026 10 dk 29
.NET 6'dan .NET 10'a Hosting'de Ne Değişti: Port 8080, HTTP_PORTS, KnownIPNetworks ve Diğerleri
DevOps SERİ 12

.NET 6'dan .NET 10'a Hosting'de Ne Değişti: Port 8080, HTTP_PORTS, KnownIPNetworks ve Diğerleri

.NET 8'den beri ASP.NET Core image'ları 80 yerine 8080'i dinliyor ve hazır bir app kullanıcısı getiriyor, ama varsayılan kullanıcı hâlâ root; .NET 10'da image'lar Ubuntu tabanlı ve KnownNetworks ile WebHost obsolete. Eski -p 8000:80 komutunun connection reset vermesini, Docker'da root olmayan 80'in neden çalışıp başka runtime'da çalışmayabileceğini, eski tutorial'lardaki tuzakları ve .NET 11'in hosting'e dokunan breaking change'lerini gerçek koşularla görüyoruz.

8 Kas 2026 9 dk 32
Hosting Seçimi ve Production Checklist'i: Nginx, IIS, Caddy, Container ve PaaS
DevOps SERİ 11

Hosting Seçimi ve Production Checklist'i: Nginx, IIS, Caddy, Container ve PaaS

Hosting seçimini önce ekibin neyi işletebildiği, sonra servis sayısı, deploy sıklığı ve maliyet belirler; Linux VM ve Nginx, IIS, Caddy, Traefik, YARP, PaaS ve container aynı soruların farklı cevapları. Caddy'yi yedi satırlık config ve active health check ile deniyor, go-live öncesi on maddelik bir kontrol script'iyle yedinci yazının config'inde dışarıdan görünmeyen health endpoint'i ve 443'te eksik default server'ı yakalıyoruz.

8 Kas 2026 11 dk 27
IIS'te Production: Deploy, app_offline.htm, Kilitli Dosyalar, Application Initialization ve Angular
DevOps SERİ 10

IIS'te Production: Deploy, app_offline.htm, Kilitli Dosyalar, Application Initialization ve Angular

IIS'te çalışan uygulamanın DLL'leri kilitli; deploy'u app_offline.htm ile ya da .NET 7'den beri desteklenen enableShadowCopy ile yap ve bu ayarları sunucuda değil projedeki web.config'te tut, publish onları koruyor. Recycle ve overlapped recycle, Application Initialization ve idle timeout, IIS'te Data Protection, sub-application, URL Rewrite ile Angular ve IIS yerine AddWindowsService; IIS bu Mac'te çalıştırılmadı, web.config ve build çıktıları gerçek.

8 Kas 2026 11 dk 28
Blog Haritası