Document GitHub Actions deployment secrets
This commit is contained in:
@@ -21,9 +21,9 @@ jobs:
|
|||||||
NEXT_PUBLIC_SERVER_URL: http://localhost:3000
|
NEXT_PUBLIC_SERVER_URL: http://localhost:3000
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v5
|
||||||
- name: Use Node.js 22
|
- name: Use Node.js 22
|
||||||
uses: actions/setup-node@v4
|
uses: actions/setup-node@v5
|
||||||
with:
|
with:
|
||||||
node-version: 22
|
node-version: 22
|
||||||
cache: npm
|
cache: npm
|
||||||
@@ -50,7 +50,7 @@ jobs:
|
|||||||
IMAGE: git.maro.run/maro/anouma
|
IMAGE: git.maro.run/maro/anouma
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v5
|
||||||
- name: Log in to registry
|
- name: Log in to registry
|
||||||
uses: docker/login-action@v3
|
uses: docker/login-action@v3
|
||||||
with:
|
with:
|
||||||
|
|||||||
+31
-3
@@ -1,6 +1,6 @@
|
|||||||
# ANOUMA — Deployment
|
# ANOUMA — Deployment
|
||||||
|
|
||||||
Production deployment is fully CI/CD-driven via Gitea Actions. There is no `update.sh` and the production server never builds anything — it only ever pulls a tested image from the registry.
|
Production deployment is fully CI/CD-driven via Gitea or GitHub Actions. There is no `update.sh` and the production server never builds anything — it only ever pulls a tested image from the registry.
|
||||||
|
|
||||||
```text
|
```text
|
||||||
Developer → git push main → Gitea Actions (CI)
|
Developer → git push main → Gitea Actions (CI)
|
||||||
@@ -59,10 +59,11 @@ Nothing runs on the server yet at this point — no release has been built. Push
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
git tag v1.0.0
|
git tag v1.0.0
|
||||||
git push origin v1.0.0
|
git push github v1.0.0 # GitHub Actions
|
||||||
|
# alternativ: git push origin v1.0.0 # Gitea Actions
|
||||||
```
|
```
|
||||||
|
|
||||||
Gitea Actions takes it from there (see below). Once it's live, seed the original content once: `ssh anouma-deploy@<host>` won't work (the key is restricted — see Security), so run it directly on the server instead: `cd /opt/anouma && docker compose run --rm app npm run seed`.
|
The selected CI provider takes it from there (see below). Once it's live, seed the original content once: `ssh anouma-deploy@<host>` won't work (the key is restricted — see Security), so run it directly on the server instead: `cd /opt/anouma && docker compose run --rm app npm run seed`.
|
||||||
|
|
||||||
## Gitea Actions
|
## Gitea Actions
|
||||||
|
|
||||||
@@ -82,6 +83,33 @@ Triggered by pushing a tag matching `v*` (e.g. `v1.2.0`):
|
|||||||
|
|
||||||
Production always runs a specific version tag — `latest` is pushed for convenience/reference only (and always points at the most recently *released* build, not just the newest commit on `main`), `deploy.sh` never uses it.
|
Production always runs a specific version tag — `latest` is pushed for convenience/reference only (and always points at the most recently *released* build, not just the newest commit on `main`), `deploy.sh` never uses it.
|
||||||
|
|
||||||
|
## GitHub Actions
|
||||||
|
|
||||||
|
The GitHub repository is `whitehai11/anouma`; the workflows live in
|
||||||
|
`.github/workflows/ci.yml` and `.github/workflows/release.yml`. In GitHub go to
|
||||||
|
**Settings → Secrets and variables → Actions → Repository secrets** and create:
|
||||||
|
|
||||||
|
| Secret | Required | Value |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| `REGISTRY_USERNAME` | yes | Gitea Container-Registry username, normally `maro` |
|
||||||
|
| `REGISTRY_PASSWORD` | yes | Gitea access token/password with permission to push/pull `git.maro.run/maro/anouma` |
|
||||||
|
| `DEPLOY_HOST` | yes | Public IP or hostname of the production server |
|
||||||
|
| `DEPLOY_PORT` | yes | SSH port, normally `22` |
|
||||||
|
| `DEPLOY_USER` | yes | `anouma-deploy` |
|
||||||
|
| `DEPLOY_SSH_KEY` | yes | Private key generated by `setup.sh` for the restricted deploy user |
|
||||||
|
| `DEPLOY_HOST_KEY` | no | Complete SSH host-key line from a trusted `ssh-keyscan`; safer than first-connect trust |
|
||||||
|
|
||||||
|
Es werden keine zusätzlichen GitHub-Variables benötigt; Registry und Image
|
||||||
|
sind im Workflow fest auf `git.maro.run/maro/anouma` gesetzt. Runtime-Secrets
|
||||||
|
wie `PAYLOAD_SECRET`, `MEETING_SESSION_SECRET`, `LIVEKIT_API_SECRET` und
|
||||||
|
`DATABASE_URI` gehören ausschließlich in `/opt/anouma/.env` auf dem Server und
|
||||||
|
nicht in GitHub Actions.
|
||||||
|
|
||||||
|
Wichtig: Für Releases nur einen CI-Anbieter verwenden, damit nicht beide
|
||||||
|
Systeme dasselbe Image parallel bauen oder deployen. Für dieses GitHub-Setup
|
||||||
|
ist GitHub Actions die empfohlene Quelle; Gitea kann als Spiegel bestehen
|
||||||
|
bleiben.
|
||||||
|
|
||||||
## `deploy.sh` (server-side, `/opt/anouma/deploy.sh`)
|
## `deploy.sh` (server-side, `/opt/anouma/deploy.sh`)
|
||||||
|
|
||||||
Not a manual tool — it's invoked exclusively by Gitea Actions over SSH. What it does for `deploy.sh deploy vX.Y.Z`:
|
Not a manual tool — it's invoked exclusively by Gitea Actions over SSH. What it does for `deploy.sh deploy vX.Y.Z`:
|
||||||
|
|||||||
Reference in New Issue
Block a user