Mert Özen Further With Every Line

Blog

Mert Özen's blog posts on software development, backend, frontend, and DevOps.

Series
3 posts found #deployment
GitHub Actions Environments: Protection Rules, Approvals and Deployment History
DevOps PART 09

GitHub Actions Environments: Protection Rules, Approvals and Deployment History

An environment is a named target that applies protection rules (required reviewers, wait timers, branch/tag policies) before a job reaches a runner, exposes its secrets only to that job and keeps a deployment history. Bookstore's staging/production deploy workflow, plan limits for private repositories, deployment: false, per-environment concurrency and queue: max; where act and actionlint stop, with real output.

8 Nov 2026 13 min 3
Deploying with GitHub Actions 1: Azure App Service with OIDC and Secretless Cloud Access
DevOps PART 10

Deploying with GitHub Actions 1: Azure App Service with OIDC and Secretless Cloud Access

With OIDC, every job gets a signed, short-lived token from GitHub, and Azure verifies it against a federated credential and grants access without a client secret. id-token: write, sub claim formats, the July 2026 subject change with IDs, custom property claims, deploying to a staging slot, smoke testing and swapping; AWS and Google Cloud equivalents.

8 Nov 2026 12 min 6
Deploying with GitHub Actions 2: Your Own Linux Server via SSH, Docker Images and GHCR
DevOps PART 11

Deploying with GitHub Actions 2: Your Own Linux Server via SSH, Docker Images and GHCR

Build the image once in GitHub Actions, push it to GHCR and send only the digest to the server over SSH; the server pulls it with Docker Compose and restarts. metadata-action, build-push-action and the gha cache backend (28 s down to 4 s), actions/attest, pinning known_hosts and what happens when the host key changes, rollback with .env.previous; real runs with act.

8 Nov 2026 12 min 5
Blog Map