name: CI on: pull_request: concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: install: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: ./.gitea/actions/setup - name: Install dependencies run: npm ci - name: Build run: npm run build - name: Archive node_modules run: | shopt -s nullglob tar -czf node_modules.tar.gz node_modules packages/*/node_modules - uses: actions/upload-artifact@v3 with: name: node_modules-${{ github.run_id }} path: node_modules.tar.gz - name: Archive turbo cache run: tar -czf turbo-cache.tar.gz .turbo - uses: actions/upload-artifact@v3 with: name: turbo-cache-${{ github.run_id }} path: turbo-cache.tar.gz - name: Archive build artifacts run: | shopt -s nullglob tar -czf build-artifacts.tar.gz packages/*/dist packages/*/out - uses: actions/upload-artifact@v3 with: name: build-artifacts-${{ github.run_id }} path: build-artifacts.tar.gz lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: ./.gitea/actions/setup with: submodule: "false" - name: Install dependencies run: npm ci - name: Lint run: npm run lint format: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: ./.gitea/actions/setup with: submodule: "false" - name: Install dependencies run: npm ci - name: Check formatting run: npm run format:check typecheck: runs-on: ubuntu-latest needs: install steps: - uses: actions/checkout@v4 - uses: ./.gitea/actions/setup - uses: actions/download-artifact@v3 with: name: node_modules-${{ github.run_id }} - uses: actions/download-artifact@v3 with: name: turbo-cache-${{ github.run_id }} - uses: actions/download-artifact@v3 with: name: build-artifacts-${{ github.run_id }} - name: Restore node_modules and turbo cache run: | tar -xzf node_modules.tar.gz tar -xzf turbo-cache.tar.gz tar -xzf build-artifacts.tar.gz - name: Typecheck run: npm run typecheck typetest: runs-on: ubuntu-latest needs: install steps: - uses: actions/checkout@v4 - uses: ./.gitea/actions/setup - uses: actions/download-artifact@v3 with: name: node_modules-${{ github.run_id }} - uses: actions/download-artifact@v3 with: name: turbo-cache-${{ github.run_id }} - uses: actions/download-artifact@v3 with: name: build-artifacts-${{ github.run_id }} - name: Restore node_modules and turbo cache run: | tar -xzf node_modules.tar.gz tar -xzf turbo-cache.tar.gz tar -xzf build-artifacts.tar.gz - name: Type tests run: npm run typetest node-tests: runs-on: ubuntu-latest needs: install steps: - uses: actions/checkout@v4 - uses: ./.gitea/actions/setup - uses: actions/download-artifact@v3 with: name: node_modules-${{ github.run_id }} - uses: actions/download-artifact@v3 with: name: turbo-cache-${{ github.run_id }} - uses: actions/download-artifact@v3 with: name: build-artifacts-${{ github.run_id }} - name: Restore node_modules and turbo cache run: | tar -xzf node_modules.tar.gz tar -xzf turbo-cache.tar.gz tar -xzf build-artifacts.tar.gz - name: Run node tests run: npm run test - name: Test package boundaries if: always() run: npm run test:package-boundaries browser-tests: runs-on: ubuntu-latest needs: install steps: - uses: actions/checkout@v4 - uses: ./.gitea/actions/setup - uses: actions/download-artifact@v3 with: name: node_modules-${{ github.run_id }} - uses: actions/download-artifact@v3 with: name: turbo-cache-${{ github.run_id }} - uses: actions/download-artifact@v3 with: name: build-artifacts-${{ github.run_id }} - name: Restore node_modules and turbo cache run: | tar -xzf node_modules.tar.gz tar -xzf turbo-cache.tar.gz tar -xzf build-artifacts.tar.gz - name: Install browser binaries run: npx playwright install --with-deps chromium firefox - name: Run browser tests run: npm run test:browser