name: Build & Push on: push: branches: [main] workflow_dispatch: env: REGISTRY: ${{ vars.REGISTRY }} OWNER: ${{ github.repository_owner }} jobs: typecheck-client: name: TypeScript Check (client) runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Node uses: actions/setup-node@v4 with: node-version: '22' cache: 'npm' cache-dependency-path: client/package-lock.json - name: Install dependencies run: npm ci working-directory: ./client - name: Type check run: npx tsc --noEmit working-directory: ./client build-server: name: Build Server runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Log in to registry uses: docker/login-action@v3 with: registry: ${{ env.REGISTRY }} username: ${{ env.OWNER }} password: ${{ secrets.REGISTRY_TOKEN }} - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Build and push server uses: docker/build-push-action@v6 with: context: ./server push: true tags: | ${{ env.REGISTRY }}/${{ env.OWNER }}/ticketing-server:latest ${{ env.REGISTRY }}/${{ env.OWNER }}/ticketing-server:${{ github.sha }} build-client: name: Build Client needs: typecheck-client runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Log in to registry uses: docker/login-action@v3 with: registry: ${{ env.REGISTRY }} username: ${{ env.OWNER }} password: ${{ secrets.REGISTRY_TOKEN }} - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Build and push client uses: docker/build-push-action@v6 with: context: ./client push: true tags: | ${{ env.REGISTRY }}/${{ env.OWNER }}/ticketing-client:latest ${{ env.REGISTRY }}/${{ env.OWNER }}/ticketing-client:${{ github.sha }}