# Kanalmodell (quick-260914-ku1): main -> Kanal beta (Etiketten beta + latest); # Tag v* -> Kanal live (Etiketten live + vX.Y.Z); Zweig live ohne Tag wird nur geprueft. # Die Entscheidung trifft .gitea/scripts/publish-images.sh anhand GITHUB_REF. # Tag v* (quick-260916-dcz): zusaetzlich Gitea-Release aus dem CHANGELOG.md-Abschnitt (publish-release.sh). name: Tessera CI/CD on: push: branches: [main, live] tags: ['v*'] jobs: quality: name: Lint & Type Check runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 24 - name: Enable pnpm via corepack run: corepack enable && corepack prepare pnpm@9.15.0 --activate - name: Install dependencies run: pnpm install --frozen-lockfile - name: Lint run: pnpm lint - name: Type check run: pnpm type-check test: name: Tests runs-on: ubuntu-latest needs: quality steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 24 - name: Enable pnpm via corepack run: corepack enable && corepack prepare pnpm@9.15.0 --activate - name: Install dependencies run: pnpm install --frozen-lockfile - name: Run tests run: pnpm test publish: name: Build & Publish Images runs-on: ubuntu-latest needs: test steps: # Ohne volle Historie und Tags liefert `git describe` nichts -- Pflicht fuer den Stempel. - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Log in to Gitea Container Registry run: echo "${{ secrets.REGISTRY_TOKEN }}" | docker login localhost:3002 -u ${{ gitea.actor }} --password-stdin - name: Versionsstempel berechnen, Abbilder bauen und veroeffentlichen run: sh .gitea/scripts/publish-images.sh - name: Gitea-Release zum Freigabe-Tag anlegen (nur bei Tags v*) env: GITEA_TOKEN: ${{ secrets.REGISTRY_TOKEN }} run: sh .gitea/scripts/publish-release.sh