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
223 yazı bulundu
GitHub Actions ile Angular CI: setup-node, npm ci, Lint, Vitest, Build Budget'ları ve Playwright
DevOps SERİ 06

GitHub Actions ile Angular CI: setup-node, npm ci, Lint, Vitest, Build Budget'ları ve Playwright

Angular 22 CI'ında Node sürümünü setup-node@v7 ile package.json'daki devEngines'ten oku, npm ci ile lock dosyasına bağlı kur, ng lint, Vitest ve budget'lı ng build çalıştır, Playwright e2e'yi API ve PostgreSQL service container'ıyla koştur. Monorepo'da setup-node'un otomatik npm cache'inin neden açılmadığını, lock drift hatasını, Node sürüm uyumsuzluğunu ve tarayıcı cache'inin etkisini act çıktılarıyla gösteriyoruz.

8 Kas 2026 12 dk 41
GitHub Actions ile .NET CI: setup-dotnet, global.json, NuGet Cache, Test Raporu ve Coverage
DevOps SERİ 05

GitHub Actions ile .NET CI: setup-dotnet, global.json, NuGet Cache, Test Raporu ve Coverage

.NET 10 CI'ında SDK'yı global.json ve setup-dotnet@v6 ile sabitle, restore'u lock dosyaları ve --locked-mode ile yap, NuGet cache'ini lock hash'ine bağla, dotnet format ve -warnaserror ile kapı koy. xUnit v3'ün Microsoft.Testing.Platform modunda TRX ve Cobertura raporu üretip job summary'ye yazıyor, upload-artifact ile saklıyoruz; act'in v7 artifact sınırını ve Linux'taki dosya adı tuzağını da gerçek çıktılarla gösteriyoruz.

8 Kas 2026 11 dk 35
GitHub Actions'ta Job'lar: needs, matrix, concurrency, timeout ve Service Container'lar
DevOps SERİ 04

GitHub Actions'ta Job'lar: needs, matrix, concurrency, timeout ve Service Container'lar

Job'lar varsayılan olarak paralel koşar; needs ile bir DAG kurulur, kırılan job'a bağlı her şey skipped olur. Bookstore CI'ını format, unit-test (OS matrix), integration-test (PostgreSQL 16/17/18 service container), web-build ve publish job'larına bölüp act ile koşturuyor; include/exclude, fail-fast, max-parallel, concurrency, timeout-minutes, continue-on-error ve Nisan 2026'da gelen service command/entrypoint'i inceliyoruz.

8 Kas 2026 11 dk 41
GitHub Actions'ta Expression, Context ve Variable'lar: if, outputs ve GITHUB_ENV
DevOps SERİ 03

GitHub Actions'ta Expression, Context ve Variable'lar: if, outputs ve GITHUB_ENV

${{ }} içindeki expression'lar context'lerden (github, env, vars, steps, needs, inputs…) değer okur, loose karşılaştırma yapar ve if: koşullarını belirler. if içinde ${{ }} dışında metin bırakmanın neden her zaman doğru sayıldığını, contains/fromJSON/hashFiles/case fonksiyonlarını, GITHUB_OUTPUT ve GITHUB_ENV ile veri taşımayı, GITHUB_STEP_SUMMARY ile test tablosunu ve always ile !cancelled farkını act çıktılarıyla gösteriyoruz.

8 Kas 2026 11 dk 47
GitHub Actions Trigger'ları: push, pull_request, workflow_dispatch, schedule ve Filtreler
DevOps SERİ 02

GitHub Actions Trigger'ları: push, pull_request, workflow_dispatch, schedule ve Filtreler

Workflow'u ne zaman çalıştıracağını on altındaki event'ler ve filtreler belirler: push ve pull_request için branches, tags, paths ve ! negation; activity type'lar, workflow_dispatch input'ları, timezone destekli schedule, workflow_run, repository_dispatch ve merge_group. github.event.inputs ile boolean okuma tuzağını, actionlint'in yakaladığı trigger hatalarını ve act'in filtreleri neden değerlendirmediğini gerçek çıktılarla gösteriyoruz.

8 Kas 2026 12 dk 39
GitHub Actions Nedir? Workflow, Event, Job, Step ve Runner ile İlk CI
DevOps SERİ 01

GitHub Actions Nedir? Workflow, Event, Job, Step ve Runner ile İlk CI

GitHub Actions, repository'deki event'lere göre .github/workflows altındaki YAML workflow'larını runner'larda koşturan CI/CD platformudur. Bookstore API için restore, build ve unit test yapan ilk workflow'u yazıp act ve actionlint ile yerelde deniyor; uses ile run farkını, run log'unu, re-run'ı ve Web API 31'deki workflow'un nedenlerini konuşuyoruz.

8 Kas 2026 13 dk 35
Pipeline'ı Ölçmek ve Hızlandırmak: DORA Metrikleri, Cache ve Paralellik
DevOps SERİ 08

Pipeline'ı Ölçmek ve Hızlandırmak: DORA Metrikleri, Cache ve Paralellik

DORA'nın güncel beş metriği (change lead time, deployment frequency, failed deployment recovery time, change fail rate, deployment rework rate) deploy kayıtlarından hesaplanır ve ekip bazında trend olarak izlenmelidir; pipeline'ı hızlandırmak ise ölçümle başlar. Tek dosyalık bir C# hesaplayıcı, act'te NuGet cache'inin restore'u sadece 0,2 saniye hızlandırıp 2,3 saniyelik geri yükleme maliyeti getirdiği gerçek ölçüm, cache key tasarımı ve path filter tuzağı.

8 Kas 2026 10 dk 29
Pipeline Güvenliği ve Secret'lar: Least Privilege, Kısa Ömürlü Credential ve Supply Chain
DevOps SERİ 07

Pipeline Güvenliği ve Secret'lar: Least Privilege, Kısa Ömürlü Credential ve Supply Chain

Pipeline production anahtarlarına sahip en güçlü kullanıcıdır; secret'ları store'da tutmak, job başına least privilege, uzun ömürlü cloud key'leri yerine OIDC ile kısa ömürlü token ve action'ları commit SHA'sına pin'lemek riskin büyük kısmını kapatır. Base64'e çevrilen secret'ın maskelemeden kaçtığı gerçek act çıktısı, actionlint'in yakaladığı script injection, fork PR riskleri ve SLSA v1.2 ile SBOM'a kısa bakış.

8 Kas 2026 9 dk 39
Approval, Gate ve Deploy Kontrolleri: Pipeline'a İnsan ve Kural Eklemek
DevOps SERİ 06

Approval, Gate ve Deploy Kontrolleri: Pipeline'a İnsan ve Kural Eklemek

Otomatik gate'ler (smoke test, health check, deploy freeze) 'bu değişiklik çalışıyor mu?' sorusunu, manuel approval ise 'şimdi mi?' sorusunu cevaplamalı; DORA, ağır dış onayların change fail rate'i düşürdüğüne dair kanıt bulamadı. Jenkins input step'inde herkes yöneticiyken submitter'ın işe yaramadığını gösteren gerçek çıktı, GitHub environment protection rule'ları ve Azure DevOps check'leri.

8 Kas 2026 10 dk 28
Environment'lar ve Promotion: Dev, Test, Staging, Production ve Configuration
DevOps SERİ 05

Environment'lar ve Promotion: Dev, Test, Staging, Production ve Configuration

Aynı artifact dev, test, staging ve production'a yeniden build edilmeden taşınır; basamaktan basamağa değişen tek şey ortamdan gelen configuration olmalıdır. ASP.NET Core'da appsettings.{Environment}.json ve ortam değişkenleriyle katmanlı configuration, ValidateOnStart ile açılışta kırılan eksik ayar, staging ile production arasında fark envanteri, PR başına preview environment ve non-prod veriyi maskelemek.

8 Kas 2026 9 dk 37
Pipeline'da Test: Hızlı Geri Bildirim, Quality Gate'ler ve Flaky Test'ler
DevOps SERİ 04

Pipeline'da Test: Hızlı Geri Bildirim, Quality Gate'ler ve Flaky Test'ler

Testleri pipeline'a ucuzdan pahalıya dizmek (format, unit, Testcontainers ile integration, Playwright ile e2e) ve uyarı, coverage ve bundle budget gibi quality gate'leri eklemek hızlı ve güvenilir geri bildirim verir; flaky test'i retry ile örtmek yerine kökünü bulmak gerekir. Assertion'sız testin coverage'ı nasıl şişirdiği, 30 koşuda 2 kez kırılan gerçek bir flaky test ve boş kalan Playwright shard'ı.

8 Kas 2026 11 dk 31
Build Once, Deploy Many: Artifact, Versiyonlama ve Immutable Paket
DevOps SERİ 03

Build Once, Deploy Many: Artifact, Versiyonlama ve Immutable Paket

Artifact'ı bir kez build edip aynısını, tag'i ya da digest'iyle staging'den production'a taşımak, staging'de test edilen şeyin production'a gitmesini garanti eder; aynı commit'ten iki kez build almak bile farklı image üretir. Lock dosyaları ve npm ci ile reproducible build, SHA ile sürüm damgalama, :latest tuzağı ve Angular için runtime config.json.

8 Kas 2026 10 dk 28
Blog Haritası