Blog
Mert Özen's blog posts on software development, backend, frontend, and DevOps.
Parallel, Matrix, input and Deploy Stages in Jenkins
We deploy the same package first to staging and, after an input approval that holds no agent, to production with sshagent, rsync and systemctl; Lockable Resources solves concurrency and milestone solves ordering. A deploy script with a health check, real lock output where an old build deploys after a new one, inversePrecedence, failFast, a Node 22/24 matrix and the app_offline.htm structure for IIS.
Running a .NET App as a systemd Service on Linux
Run Kestrel under systemd as a separate user with Type=notify and AddSystemd, KillSignal=SIGTERM and hardening settings; KillSignal=SIGINT cuts open requests and systemd still reports success. We measure publish option sizes, the runtime coming from the distribution repository on Ubuntu 24.04, journald output, restart after a crash, the exposure score dropping from 9.2 to 3.8, and 0.2-second deploys and rollbacks with a releases/current symlink.