Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
GitHub Actions Environment'ları: Protection Rule, Approval ve Deployment Geçmişi
Environment, bir job'ı runner'a göndermeden önce protection rule'ları (required reviewer, wait timer, branch/tag policy) uygulayan, secret'ları yalnızca o job'a açan ve deployment geçmişi tutan adlandırılmış hedeftir. Bookstore'un staging/production deploy workflow'u, private repository plan kısıtları, deployment: false, environment başına concurrency ve queue: max; act ve actionlint'in nerede durduğu gerçek çıktılarla.
GitHub Actions ile Deploy 1: OIDC ile Azure App Service ve Şifresiz Cloud Erişimi
OIDC ile job her çalışmada GitHub'dan imzalı, kısa ömürlü bir token alır ve Azure bunu federated credential ile doğrulayıp client secret olmadan erişim verir. id-token: write, sub claim formatları, Temmuz 2026'daki ID'li subject değişikliği, custom property claim'leri, staging slot'a deploy, smoke test ve swap; AWS ve Google Cloud karşılıkları.
GitHub Actions ile Deploy 2: Kendi Linux Sunucuna SSH, Docker Image ve GHCR
Image'ı GitHub Actions'ta bir kez build edip GHCR'a push'la, sunucuya SSH ile yalnızca digest'i gönder; sunucu Docker Compose ile çeker ve yeniden başlatır. metadata-action, build-push-action ve gha cache backend'i (28 sn'den 4 sn'ye), actions/attest, known_hosts pin'leme ve host key değişince ne olduğu, .env.previous ile rollback; act ile gerçek koşu.