name: Build on: push: branches: [main] pull_request: branches: [main] workflow_dispatch: jobs: frontend: # Skip the build on release-bump commits — the tag push runs release.yml. if: "${{ !startsWith(gitea.event.head_commit.message, 'chore: release v') }}" runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: '20' cache: npm cache-dependency-path: web/package-lock.json - name: Install frontend dependencies working-directory: web run: npm ci --no-audit - name: Svelte check working-directory: web run: npm run check - name: Unit tests (vitest) working-directory: web run: npm run test - name: Build frontend working-directory: web run: npm run build backend: if: "${{ !startsWith(gitea.event.head_commit.message, 'chore: release v') }}" runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: go-version: '1.25' cache-dependency-path: go.sum - name: Vet Go code run: go vet ./... - name: Run Go tests run: go test ./internal/... -count=1 build-image: if: "${{ !startsWith(gitea.event.head_commit.message, 'chore: release v') }}" needs: [frontend, backend] runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Build Docker image (no push) uses: docker/build-push-action@v5 with: context: . push: false tags: tinyforge:ci-${{ gitea.sha }} cache-from: type=gha cache-to: type=gha,mode=max