deploy: remove the CI pipeline; deploys are manual

No runner was ever active, so the pipeline never ran. Removes
.gitea/workflows/deploy.yml and the CI key and runner IP from
host/bootstrap.sh (a re-run removes the key an earlier bootstrap installed).
The README makes "Manual deploy" the one documented procedure: commit on main,
shellcheck in Docker (-S warning; the pipeline's lint step), git archive over
root SSH, deploy.sh as user deploy, the outside checks, then push.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Nasim SadatandClaude Opus 5.5 committed 2026-10-24 09:58:22 +02:00
1 parent bf96edc828
commit bc27bf2356
5 files changed
+72 -142

No files matched your search

+6 -6
View File
@@ -1,6 +1,6 @@
#!/usr/bin/env bash
# Server-side deploy, run as the non-root deploy user:
# deploy.sh <sha> <incoming-dir> CI: finalize the upload as releases/<sha>, then deploy it
# deploy.sh <sha> <incoming-dir> manual deploy: finalize the upload as releases/<sha>, then deploy it
# deploy.sh <sha> re-deploy a release that is already finalized
#
# Order: lock, finalize, artifacts, preflight, image build and downgrade guard
@@ -11,7 +11,7 @@ set -euo pipefail
# shellcheck source=deploy/lib.sh
. "$(dirname "$(readlink -f "$0")")/lib.sh"
# finalize_release <sha> <upload>: CI never writes into releases/. A new SHA is
# finalize_release <sha> <upload>: an upload never writes into releases/. A new SHA is
# moved in atomically; a re-run of a deployed SHA must match it byte for byte
# and leaves the finalized release, ARTIFACTS included, untouched.
finalize_release() {
@@ -100,10 +100,10 @@ retention() {
rm -rf "$dir"
log "removed release ${dir##*/}"
done < <(find "$RELEASES" -mindepth 1 -maxdepth 1 -type d -printf '%T@ %p\n' | sort -rn | tail -n +6 | cut -d' ' -f2-)
# Uploads older than a day were never finalized (interrupted CI runs). Their
# mtime is the server's (the workflow's rsync omits directory times), and a
# CI job lives at most 45 minutes, so an upload being sent or waiting for the
# lock is never this old.
# Uploads older than a day were never finalized (interrupted deploys). The
# upload directory is created on the server when the upload starts, and its
# mtime is the server's, so an upload being sent or waiting for the lock is
# never this old.
while IFS= read -r -d '' dir; do
chmod -R u+w "$dir"
rm -rf "$dir"