name: Test Master on: push: branches: - master jobs: install-and-build: runs-on: blacksmith-2vcpu-ubuntu-2204 env: NODE_OPTIONS: '--max-old-space-size=4096' timeout-minutes: 10 steps: - uses: actions/checkout@v4.1.1 - uses: useblacksmith/setup-node@v5 with: node-version: 20.x - name: Setup corepack and pnpm run: | npm i -g corepack@0.31 corepack enable - name: Install dependencies run: pnpm install --frozen-lockfile - name: Setup build cache uses: useblacksmith/caching-for-turbo@v1 - name: Build run: pnpm build - name: Cache build artifacts uses: useblacksmith/cache/save@v5 with: path: ./packages/**/dist key: ${{ github.sha }}-base:build unit-test: name: Unit tests uses: ./.github/workflows/units-tests-reusable.yml needs: install-and-build strategy: matrix: node-version: [18.x, 20.x, 22.4] with: ref: ${{ inputs.branch }} nodeVersion: ${{ matrix.node-version }} cacheKey: ${{ github.sha }}-base:build collectCoverage: ${{ matrix.node-version == '20.x' }} ignoreTurboCache: ${{ matrix.node-version == '20.x' }} skipFrontendTests: ${{ matrix.node-version != '20.x' }} secrets: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} lint: name: Lint uses: ./.github/workflows/linting-reusable.yml needs: install-and-build with: ref: ${{ inputs.branch }} cacheKey: ${{ github.sha }}-base:build notify-on-failure: name: Notify Slack on failure runs-on: ubuntu-latest needs: [unit-test, lint] steps: - name: Notify Slack on failure uses: act10ns/slack@v2.0.0 if: failure() with: status: ${{ job.status }} channel: '#alerts-build' webhook-url: ${{ secrets.SLACK_WEBHOOK_URL }} message: Master branch (build or test or lint) failed (${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})