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
9 yazı bulundu #ci
.NET + Angular Monorepo'da GitHub Actions: Path Filtreleri, Artifact Aktarımı ve Tek Release Paketi
DevOps SERİ 07

.NET + Angular Monorepo'da GitHub Actions: Path Filtreleri, Artifact Aktarımı ve Tek Release Paketi

Path filtreli ayrı workflow'lar required check'i pending bırakır; monorepo'da tek workflow, git diff ile karar veren bir changes job'ı ve her zaman koşan bir özet job (ci-ok) bu sorunu çözer. Angular dist'ini artifact ile .NET publish'in wwwroot'una taşıyıp tag push'unda tek bir release zip'i üretiyor, artifact ile cache farkını ve gh release create ile GitHub Release'i act çıktılarıyla anlatıyoruz.

8 Kas 2026 10 dk 4
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 5
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 4
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 5
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 5
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 5
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 5
ADR'dan Otomatik Kontrole: Kararları Fitness Function ve CI ile Doğrulamak
Yazılım Mimarisi SERİ 06

ADR'dan Otomatik Kontrole: Kararları Fitness Function ve CI ile Doğrulamak

Her ADR'ın Confirmation bölümü bir fitness function'ın spesifikasyonudur: karar ya her PR'da, ya takvimle, ya production'da sürekli kontrol edilir ya da kısa bir manuel listeye düşer. Bookstore'da public API kararını oasdiff ile, bundle boyutu kararını Angular budget'larıyla, migration'ların geri alınabilirliğini bir xUnit test'iyle ve .NET destek süresini haftalık bir kontrolle gerçek çıktılarıyla doğruluyoruz.

8 Kas 2026 15 dk 5
Mimariyi Zaman İçinde Korumak: Architecture Erosion ve Fitness Function'lar
Yazılım Mimarisi SERİ 09

Mimariyi Zaman İçinde Korumak: Architecture Erosion ve Fitness Function'lar

Mimari kararlar code review'da değil, her PR'da çalışan fitness function'larla korunur: ArchUnitNET ile kapalı layer kuralı, ratchet'li coupling eşiği ve sorgu sayısını sayan bir performans test'i, build'i geçen ama mimariyi bozan bir PR'ı yakalıyor. Erosion ve drift, fitness function türleri, GitHub Actions adımı ve kategori yol haritası.

7 Kas 2026 13 dk 6
Blog Haritası