Files
busyfeed/.gitea/workflows/deploy.yml
Lucas Orth f6490aa292 Checkout ueber die interne Gitea-Adresse klonen
Der Weg vom Job-Container zur oeffentlichen Domain ist auf dem VPS zu:
Gitea laeuft auf demselben Host, das Paket geht an die oeffentliche IP
und findet nicht zurueck (NAT-Hairpin). Der Umweg ueber host-gateway
scheitert zusaetzlich an der Firewall (curl: Connection timed out).

actions/checkout bekommt daher github-server-url auf die interne Adresse.
Der Job-Container haengt im Netz gitea-ci und erreicht Gitea dort unter
seinem Containernamen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-20 18:54:56 +02:00

50 lines
1.4 KiB
YAML

name: Build & Deploy
on:
push:
tags:
- 'v*'
jobs:
deploy:
runs-on: ubuntu-latest
steps:
# Intern klonen statt ueber die oeffentliche Domain: Gitea laeuft auf
# demselben Host, der Weg ueber die oeffentliche IP findet nicht
# zurueck (NAT-Hairpin). Der Job-Container erreicht Gitea ueber das
# Netz gitea-ci unter seinem Containernamen.
- uses: actions/checkout@v4
with:
github-server-url: http://gitea:3000
- 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