437b66e73a
Deploy to the production host on push to master via a self-hosted act_runner (host/shell executor): git fetch + reset --hard in /opt/tanabata, then docker compose up -d --build. Shell-only steps, so the host needs just git and docker — no node, no rsync. docs/DEPLOY.md covers the one-time setup: what a runner is, the runner user, cloning to /opt/tanabata with a read-only deploy key, registering act_runner with the host label, and the host .env. Notes the security reason to scope the runner to this repository. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
45 lines
1.4 KiB
YAML
45 lines
1.4 KiB
YAML
name: deploy
|
|
|
|
# Build the image and (re)start the compose stack on the production host
|
|
# whenever master moves. Also runnable manually from the Gitea Actions tab.
|
|
on:
|
|
push:
|
|
branches: [master]
|
|
workflow_dispatch: {}
|
|
|
|
# One deploy at a time; queue rather than cancel an in-flight run.
|
|
concurrency:
|
|
group: deploy-prod
|
|
cancel-in-progress: false
|
|
|
|
jobs:
|
|
deploy:
|
|
# Self-hosted act_runner registered on the prod host with the "host" label
|
|
# (shell executor), so the job uses the host's git + Docker daemon and the
|
|
# existing clone in /opt/tanabata. See docs/DEPLOY.md for runner setup.
|
|
#
|
|
# Only shell steps here (no `uses:` actions), so the host needs git + docker
|
|
# and nothing else — no node, no rsync.
|
|
runs-on: host
|
|
|
|
env:
|
|
DEPLOY_DIR: /opt/tanabata
|
|
|
|
steps:
|
|
- name: Pull latest master
|
|
# DEPLOY_DIR is a git clone set up once at deploy time. reset --hard
|
|
# makes it match origin exactly; .env is untracked (.gitignore) so it
|
|
# is never touched.
|
|
run: |
|
|
cd "$DEPLOY_DIR"
|
|
git fetch --prune origin
|
|
git reset --hard origin/master
|
|
|
|
- name: Build image and start the stack
|
|
working-directory: /opt/tanabata
|
|
# .env must already exist in DEPLOY_DIR on the host (secrets + DB mode).
|
|
run: docker compose up -d --build --remove-orphans
|
|
|
|
- name: Prune dangling build layers
|
|
run: docker image prune -f
|