# devops Apps and scripts built as part of the DevOps pipeline for the monoexp.com server. The main piece is the **deploy pipeline**: when a pull request is merged into `main` in Gogs, the new tip of `main` is built, deployed, tagged `deploy//` and logged. It deploys `origin/main` rather than the webhook's `merge_commit_sha`, because Gogs fills that field with the head branch's commit, not the merge commit. Deploying the branch commit would drop any other PRs merged since the branch was made. Releases run one at a time and each fetches first, so the tip of `main` is always what's merged. ``` PR merged in Gogs │ webhook (HMAC-signed), 127.0.0.1:9000/deploy ▼ deployd ── checks signature, merged into main ──▶ release origin/main │ clean checkout of that commit ◀────────┤ go build / rsync static files ◀──────┤ rsync content/ (if configured) ◀───────┤ sudo systemctl restart goapp@ ◀──┤ tag deploy//