diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2ef43ed5..6846d4b5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,22 +10,19 @@ on: merge_group: jobs: - build: - name: Build and Lint + lint: + name: Lint runs-on: ubuntu-latest permissions: contents: read # For checkout - strategy: - matrix: - node-version: [20.x, 22.x, 24.x] steps: - name: Checkout repository uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 - - name: Set up Node.js ${{ matrix.node-version }} + - name: Set up Node.js uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 with: - node-version: ${{ matrix.node-version }} + node-version-file: '.nvmrc' cache: 'npm' - name: Install dependencies @@ -45,24 +42,17 @@ jobs: - name: Run type check run: npm run typecheck - - name: Upload build artifacts - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 - with: - name: build-artifacts-${{ matrix.node-version }} - path: | - packages/*/dist - package-lock.json # Only upload dist and lockfile test: name: Test runs-on: ubuntu-latest - needs: build # This job depends on the 'build' job + needs: lint permissions: contents: read checks: write pull-requests: write strategy: matrix: - node-version: [20.x, 22.x, 24.x] # Should match the build job's matrix + node-version: [20.x, 22.x, 24.x] steps: - name: Checkout repository uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 @@ -73,16 +63,8 @@ jobs: node-version: ${{ matrix.node-version }} cache: 'npm' - - name: Download build artifacts - uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4 - with: - name: build-artifacts-${{ matrix.node-version }} - path: . # Download to the root, this will include package-lock.json and packages/*/dist - - # Restore/create package structure for dist folders if necessary. - # The download-artifact action with path: . should place them correctly if the - # upload paths were relative to the workspace root. - # Example: if uploaded `packages/cli/dist`, it will be at `./packages/cli/dist`. + - name: Build project + run: npm run build - name: Install dependencies for testing run: npm ci # Install fresh dependencies using the downloaded package-lock.json @@ -92,7 +74,7 @@ jobs: - name: Publish Test Report (for non-forks) if: always() && (github.event.pull_request.head.repo.full_name == github.repository) - uses: dorny/test-reporter@890a17cecf52a379fc869ab770a71657660be727 # v2 + uses: dorny/test-reporter@dc3a92680fcc15842eef52e8c4606ea7ce6bd3f3 # v2 with: name: Test Results (Node ${{ matrix.node-version }}) path: packages/*/junit.xml diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 745627a1..d710845d 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -14,14 +14,15 @@ jobs: strategy: matrix: sandbox: [sandbox:none, sandbox:docker] + node-version: [20.x, 22.x, 24.x] steps: - name: Checkout repository uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 - - name: Set up Node.js + - name: Set up Node.js ${{ matrix.node-version }} uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 with: - node-version: 20.x + node-version: ${{ matrix.node-version }} cache: 'npm' - name: Install dependencies diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 00000000..209e3ef4 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +20