busyfeed: Initial commit mit Tag-Deployment
Bestehende App plus Gitea-Actions-Pipeline: Tag v* loest Build, Tests und Container-Neustart auf dem VPS aus. - .gitea/workflows/deploy.yml: npm ci/build/test als Gate, danach docker compose up -d --build. Die .env wird aus dem Repo-Secret DOTENV erzeugt, damit auf dem Host keine Secret-Datei gepflegt werden muss. - docker-compose.yml: fester Projektname (der CI-Job hat ein anderes Arbeitsverzeichnis als der Host), Image mit Versionstag fuer Rollback, fester Volume-Name. - README: Deployment- und Rollback-Abschnitt, Token-Rotation angepasst. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
43
.gitea/workflows/deploy.yml
Normal file
43
.gitea/workflows/deploy.yml
Normal file
@@ -0,0 +1,43 @@
|
||||
name: Build & Deploy
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- 'v*'
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: '24'
|
||||
|
||||
- run: npm ci
|
||||
|
||||
- run: npm run build
|
||||
|
||||
# Gate: rote Tests -> kein Deploy. Die Tests sichern die beiden
|
||||
# nicht verhandelbaren Punkte ab (UTC statt TZID, kein RRULE).
|
||||
- run: npm test
|
||||
|
||||
- name: Tag ermitteln
|
||||
run: echo "IMAGE_TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV
|
||||
|
||||
# Das Repo-Secret DOTENV enthaelt den kompletten .env-Inhalt (mehrzeilig).
|
||||
# Ueber env: statt direkter Interpolation, damit Anfuehrungszeichen,
|
||||
# Backticks und $ in den Werten nicht vom Shell-Parser angefasst werden.
|
||||
- name: .env aus Secret erzeugen
|
||||
env:
|
||||
DOTENV: ${{ secrets.DOTENV }}
|
||||
run: |
|
||||
umask 077
|
||||
echo "$DOTENV" > .env
|
||||
|
||||
- name: Deployen
|
||||
run: docker compose up -d --build --remove-orphans
|
||||
|
||||
- name: Alte Layer aufraeumen
|
||||
run: docker image prune -f
|
||||
Reference in New Issue
Block a user