Statt eines zweiten Repos wird deploy-kit selbst die Vorlage. Ein Template
kopiert das gesamte Repo, die Projektdateien muessen also im Wurzel-
verzeichnis liegen - template/ ist entsprechend aufgeloest.
- bootstrap.sh entfaellt: das Template uebernimmt seine Aufgabe, und
Gitea kopiert serverseitig, funktioniert also auch bei privatem Repo.
- .gitea/template laesst Gitea ${REPO_NAME} in README.md und
docker-compose.yml ersetzen. Projektname, Image und container_name
stimmen damit ohne Handarbeit, offen bleibt nur der Port.
- CLAUDE.md zeigt auf DEPLOY.md, damit die Konventionen beim Arbeiten am
erzeugten Projekt gelesen werden.
- DEPLOY.md liegt jetzt nur noch einmal - die Kopie im geplanten zweiten
Repo waere unweigerlich auseinandergelaufen.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
51 lines
1.5 KiB
YAML
51 lines
1.5 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
|
|
|
|
# --- Build & Tests: hier projektspezifisch anpassen ---
|
|
# - uses: actions/setup-node@v4
|
|
# with:
|
|
# node-version: '24'
|
|
# - run: npm ci
|
|
# - run: npm run build
|
|
# - run: npm test
|
|
# ------------------------------------------------------
|
|
|
|
- name: Tag ermitteln
|
|
run: echo "IMAGE_TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV
|
|
|
|
# Ein einziges Repo-Secret DOTENV mit dem kompletten .env-Inhalt
|
|
# (mehrzeilig). Ueber env: statt direkter Interpolation, damit
|
|
# Anfuehrungszeichen, Backticks und $ in den Werten unangetastet bleiben.
|
|
- name: .env aus Secret erzeugen
|
|
env:
|
|
DOTENV: ${{ secrets.DOTENV }}
|
|
run: |
|
|
if [ -z "$DOTENV" ]; then
|
|
echo "Secret DOTENV ist leer oder nicht gesetzt."
|
|
exit 1
|
|
fi
|
|
umask 077
|
|
echo "$DOTENV" > .env
|
|
|
|
- name: Deployen
|
|
run: docker compose up -d --build --remove-orphans --wait --wait-timeout 180
|
|
|
|
- name: Alte Layer aufraeumen
|
|
run: docker image prune -f
|