name: Tessera CI/CD on: push: branches: [main] 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: - uses: actions/checkout@v4 - name: Log in to Gitea Container Registry run: echo "${{ secrets.REGISTRY_TOKEN }}" | docker login localhost:3002 -u ${{ gitea.actor }} --password-stdin - name: Build web image run: docker build -t localhost:3002/schalli/tessera-ctl/web:latest -f apps/web/Dockerfile . - name: Build api image run: docker build -t localhost:3002/schalli/tessera-ctl/api:latest -f apps/api/Dockerfile . - name: Push images run: | docker push localhost:3002/schalli/tessera-ctl/web:latest docker push localhost:3002/schalli/tessera-ctl/api:latest