- Demo-Seed mit realistischem deutschem Haushalt (make seed-demo): drei Konten, zehn Firmen samt Logos, zwölf Posten, bestätigte Historie, Buchungen, Budgets und Sparziele; alle Termine relativ zum heutigen Monat - Tastaturkürzel n / r / / / ? samt Übersicht; greifen nur außerhalb von Eingabefeldern - Fehlergrenze für Renderfehler und eigene 404-Seite - Farbtoken beider Modi gegen WCAG geprüft und nachgezogen: Hilfstext lag hell bei 2,56:1, Weiß auf dem Primärknopf bei 3,30:1 – jetzt überall >= 4,5:1 - Abo-Übersicht heißt „Laufende Kosten“, weil sie auch Miete und Sparplan enthält - build.yml fällt auf GITEA_TOKEN zurück, wenn REGISTRY_TOKEN fehlt, und erklärt im Fehlerfall, wie das Secret anzulegen ist - README mit Screenshot-Abschnitt, Kürzeln und Barrierefreiheit Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014e7t8UpmoVNMtWivY5LiSH
96 lines
3.6 KiB
YAML
96 lines
3.6 KiB
YAML
name: Images bauen
|
||
|
||
# Bei Push auf main und bei Versions-Tags. Ausgerollt wird nicht automatisch –
|
||
# das Aktualisieren auf docker-srv001 passiert von Hand, siehe docs/deployment.md.
|
||
on:
|
||
push:
|
||
branches:
|
||
- main
|
||
tags:
|
||
- "v*"
|
||
|
||
concurrency:
|
||
group: build-${{ github.ref }}
|
||
cancel-in-progress: false
|
||
|
||
env:
|
||
REGISTRY: git.menzel.center
|
||
NAMESPACE: menzeljonas
|
||
|
||
jobs:
|
||
build:
|
||
runs-on: ubuntu-latest
|
||
|
||
strategy:
|
||
fail-fast: false
|
||
matrix:
|
||
component:
|
||
- backend
|
||
- frontend
|
||
|
||
steps:
|
||
- uses: actions/checkout@v4
|
||
|
||
- uses: docker/setup-buildx-action@v3
|
||
|
||
- name: An der Registry anmelden
|
||
uses: docker/login-action@v3
|
||
with:
|
||
registry: ${{ env.REGISTRY }}
|
||
username: ${{ github.actor }}
|
||
# Bevorzugt das eigens angelegte Secret. Fehlt es, greift der Token,
|
||
# den Gitea jedem Lauf ohnehin mitgibt – damit läuft der Workflow ohne
|
||
# jede manuelle Einrichtung.
|
||
password: ${{ secrets.REGISTRY_TOKEN || secrets.GITEA_TOKEN }}
|
||
|
||
- name: Tags und Beschriftungen ermitteln
|
||
id: meta
|
||
uses: docker/metadata-action@v5
|
||
with:
|
||
images: ${{ env.REGISTRY }}/${{ env.NAMESPACE }}/moneyfy-${{ matrix.component }}
|
||
# `latest` wird nur für Versions-Tags gesetzt, nicht für jeden main-Push.
|
||
flavor: |
|
||
latest=false
|
||
tags: |
|
||
type=raw,value=main,enable=${{ github.ref == 'refs/heads/main' }}
|
||
type=sha,prefix=sha-,format=short,enable=${{ github.ref == 'refs/heads/main' }}
|
||
type=semver,pattern={{version}}
|
||
type=semver,pattern={{major}}.{{minor}}
|
||
type=raw,value=latest,enable=${{ startsWith(github.ref, 'refs/tags/v') }}
|
||
labels: |
|
||
org.opencontainers.image.title=moneyfy-${{ matrix.component }}
|
||
org.opencontainers.image.description=moneyfy – Planung monatlicher Kosten und Einkünfte
|
||
org.opencontainers.image.licenses=MIT
|
||
|
||
- name: Bauen und hochladen
|
||
uses: docker/build-push-action@v6
|
||
with:
|
||
context: ./${{ matrix.component }}
|
||
target: production
|
||
platforms: linux/amd64
|
||
push: true
|
||
tags: ${{ steps.meta.outputs.tags }}
|
||
labels: ${{ steps.meta.outputs.labels }}
|
||
# Registry-Cache statt type=gha: der Gitea-Runner bringt keinen
|
||
# Actions-Cache-Dienst mit.
|
||
cache-from: type=registry,ref=${{ env.REGISTRY }}/${{ env.NAMESPACE }}/moneyfy-${{ matrix.component }}:buildcache
|
||
cache-to: type=registry,ref=${{ env.REGISTRY }}/${{ env.NAMESPACE }}/moneyfy-${{ matrix.component }}:buildcache,mode=max
|
||
provenance: false
|
||
|
||
- name: Hinweis bei fehlgeschlagener Anmeldung
|
||
if: failure()
|
||
run: |
|
||
echo "Die Anmeldung an ${{ env.REGISTRY }} ist fehlgeschlagen." >> "$GITHUB_STEP_SUMMARY"
|
||
echo "" >> "$GITHUB_STEP_SUMMARY"
|
||
echo "Lege ein Repo-Secret **REGISTRY_TOKEN** an:" >> "$GITHUB_STEP_SUMMARY"
|
||
echo "1. Benutzereinstellungen → Applications → Generate New Token" >> "$GITHUB_STEP_SUMMARY"
|
||
echo "2. Bei *package* auf \`Read and Write\` stellen" >> "$GITHUB_STEP_SUMMARY"
|
||
echo "3. Repository → Settings → Actions → Secrets → Add Secret" >> "$GITHUB_STEP_SUMMARY"
|
||
|
||
- name: Ergebnis zusammenfassen
|
||
run: |
|
||
echo "### moneyfy-${{ matrix.component }}" >> "$GITHUB_STEP_SUMMARY"
|
||
echo '```' >> "$GITHUB_STEP_SUMMARY"
|
||
echo "${{ steps.meta.outputs.tags }}" >> "$GITHUB_STEP_SUMMARY"
|
||
echo '```' >> "$GITHUB_STEP_SUMMARY"
|