name: Build & Push Docker (latest) on: push: branches: ["main"] jobs: verify: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 20 cache: npm - name: Install dependencies shell: bash run: | set -euo pipefail npm ci - name: Typecheck shell: bash run: | set -euo pipefail npm run typecheck - name: Test shell: bash run: | set -euo pipefail npm test - name: Build app shell: bash run: | set -euo pipefail npm run build build: needs: verify runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Set image name shell: bash run: | set -euo pipefail OWNER="${GITHUB_REPOSITORY%/*}" REPO="${GITHUB_REPOSITORY#*/}" echo "IMAGE=git.f-40.com/${OWNER}/${REPO}:latest" >> "$GITHUB_ENV" - name: Login to Gitea Container Registry shell: bash env: REGISTRY_USER: ${{ secrets.USER }} REGISTRY_TOKEN: ${{ secrets.TOKEN }} run: | set -euo pipefail echo "$REGISTRY_TOKEN" | docker login git.f-40.com -u "$REGISTRY_USER" --password-stdin - name: Build shell: bash run: | set -euo pipefail docker build -t "$IMAGE" . - name: Push shell: bash run: | set -euo pipefail docker push "$IMAGE"