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
105 yazı bulundu
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 5
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 5
Pipeline Anatomisi: Trigger, Stage, Job, Step ve Fail Fast
DevOps SERİ 02

Pipeline Anatomisi: Trigger, Stage, Job, Step ve Fail Fast

Bir pipeline trigger'larla başlar, birbirine bağımlı job'lardan (Jenkins'te stage) ve sırayla koşan step'lerden oluşur; build mantığını lokalde çalışan bir script'e koyup pipeline'ı sadece orkestra şefi yapmak, ucuz kontrolleri öne almak ve paralel dallarda fail fast kullanmak geri bildirimi hızlandırır. GitHub Actions, Jenkins ve Azure DevOps terim eşlemesi, act ve Jenkins ile koşulmuş gerçek çıktılar.

8 Kas 2026 10 dk 5
CI, Continuous Delivery ve Continuous Deployment: Farkları ve Neden Önemli
DevOps SERİ 01

CI, Continuous Delivery ve Continuous Deployment: Farkları ve Neden Önemli

CI, herkesin işini her gün mainline'a entegre edip her push'ta otomatik build ve test koşturmaktır; continuous delivery her commit'i release edilebilir tutar ve production'a çıkışı bir karara bırakır, continuous deployment ise o butonu da kaldırır. Integration hell senaryosu, Fowler'ın 2024 pratikleri, act ile koşulmuş bir CI workflow'u ve MinimumCD kontrol listesi.

8 Kas 2026 8 dk 6
Git 3.0'a Hazırlık: Ne Değişiyor, Ne Kalkıyor, Bugünden Ne Yapmalı
DevOps SERİ 29

Git 3.0'a Hazırlık: Ne Değişiyor, Ne Kalkıyor, Bugünden Ne Yapmalı

Git 3.0 için resmi durumu (BreakingChanges.adoc: henüz tarih yok) GitLab ve LWN'in aktardığı plandan ayırıyoruz. main, SHA-256 ve reftable varsayılanlarını, safe.bareRepository'yi, zorunlu Rust'ı, kaldırılacak komutları ve git checkout'un neden kaldığını Git 2.54'te deneyip bir hazırlık listesi çıkarıyoruz.

6 Kas 2026 8 dk 18
Git 2.50–2.56: git history, Config Tabanlı Hook'lar ve git add --resolved
DevOps SERİ 28

Git 2.50–2.56: git history, Config Tabanlı Hook'lar ve git add --resolved

Git 2.50'den güncel 2.56'ya gelenleri görüyoruz: git history reword ve split (2.55 fixup, 2.56 drop), config tabanlı ve paralel hook'lar, stash export/import, pull.autostash ve conflict durumu, git last-modified, git repo info, reflog drop, branch --delete-merged, add --resolved ve -h çıkış kodu değişikliği.

6 Kas 2026 9 dk 15
Git 2.40–2.49: reftable, SHA-256, git replay ve Yeni git config
DevOps SERİ 27

Git 2.40–2.49: reftable, SHA-256, git replay ve Yeni git config

Git 3.0'ın temellerinin atıldığı 2.40–2.49 dönemini gerçek çıktılarla görüyoruz: reftable ref store ve git refs migrate, SHA-256 repo'larının bugünkü durumu, git config'in get/set/unset/list alt komutları, worktree add --orphan, git replay, safe.directory prefix'i, git backfill ve Rust'ın ilk adımı.

6 Kas 2026 9 dk 16
Git 2.23–2.39: checkout'tan switch ve restore'a, Eski Alışkanlıktan Yenisine
DevOps SERİ 26

Git 2.23–2.39: checkout'tan switch ve restore'a, Eski Alışkanlıktan Yenisine

Git 2.23–2.39 arasında gelenleri eskiyle yeniyi yan yana koyarak görüyoruz: checkout'tan switch ve restore'a geçiş, init.defaultBranch, pull'un divergent branches hatası, sparse-checkout, maintenance, fsmonitor, ort ve remerge-diff, rebase --update-refs, force-if-includes, safe.directory ve SSH imzalama.

6 Kas 2026 11 dk 13
Git Hook'ları ve Commit İmzalama: pre-commit'ten SSH Signature'ına
DevOps SERİ 25

Git Hook'ları ve Commit İmzalama: pre-commit'ten SSH Signature'ına

pre-commit ve commit-msg hook'larını gerçek çıktılarla yazıyor, core.hooksPath ile ekiple paylaşıyor, Git 2.54'ün config tabanlı hook'larını ve git hook list'i deniyoruz. Ardından commit'leri SSH anahtarıyla imzalıyor, allowed signers ile doğruluyor ve GitHub'daki Verified rozetinin şartlarını görüyoruz.

6 Kas 2026 11 dk 19
Git bisect ve git worktree: Hatayı Bulan Commit ve Aynı Anda İki Branch
DevOps SERİ 24

Git bisect ve git worktree: Hatayı Bulan Commit ve Aynı Anda İki Branch

Hatayı getiren commit'i git bisect ile ikili aramayla buluyoruz: good ve bad işaretlemek, bisect log ve reset, git bisect run ile çıkış koduna göre otomatik arama ve exit 125. Ardından git worktree ile yarım işi bozmadan ayrı bir klasörde hotfix yapıyor, worktree list/remove/prune'u ve stash ile ne zaman yer değiştirdiğini görüyoruz.

6 Kas 2026 9 dk 12
Git Tag ve Release: Sürümleri İşaretlemek, git describe ve GitHub Releases
DevOps SERİ 23

Git Tag ve Release: Sürümleri İşaretlemek, git describe ve GitHub Releases

Sürümleri git tag ile işaretliyoruz: lightweight ve annotated tag farkı, tag object'i, semver, push'un neden tag göndermediği, --tags ile --follow-tags, git describe çıktısını okumak, GitHub Releases, tag silmek ve yayınlanmış bir tag'i taşımanın neden tehlikeli olduğu.

6 Kas 2026 8 dk 17
Git reflog: Kaybolan Commit'leri ve Silinen Branch'leri Geri Getirmek
DevOps SERİ 22

Git reflog: Kaybolan Commit'leri ve Silinen Branch'leri Geri Getirmek

Yanlışlıkla yapılan bir reset --hard'dan sonra commit'leri git reflog ile geri getiriyoruz: HEAD@{n} ile HEAD~n farkı, ORIG_HEAD ile son merge'ü geri almak, silinen branch'i reflog'dan bulmak, branch'in kendi reflog'u ile rebase'den dönmek, reflog'un yerel ve süreli olması.

6 Kas 2026 8 dk 16
Blog Haritası