diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000000..b61bb2fdcf1 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,99 @@ +name: CI + +on: + push: + branches: + - main + pull_request: + +permissions: + contents: read + +concurrency: + group: "${{ github.workflow }} ✨ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}" + cancel-in-progress: true + +jobs: + lint: + name: Lint + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + + - name: Setup Node.js + uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 + with: + node-version: "lts/*" + cache: "npm" + + - name: Install dependencies + run: npm ci + + - name: Build + run: npm run build + + - name: Lint + run: npm run lint + + test: + name: Test - ${{ matrix.os }} (Node.js ${{ matrix.node-version }}) + + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, windows-latest, macos-latest] + node-version: [18.x, 20.x, 22.x, 24.x] + + runs-on: ${{ matrix.os }} + + steps: + - name: Checkout code + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + + - name: Setup Node.js ${{ matrix.node-version }} + uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 + with: + node-version: ${{ matrix.node-version }} + cache: "npm" + + - uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # 4.2.0 + with: + version: 10 + + - name: Install dependencies + run: npm ci + + - name: Prepare environment for tests + run: npm run build:ci + + - name: Run tests + run: npm run test:coverage -- --ci + + - name: Upload coverage to Codecov + if: always() + uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2 + + smoketests: + name: Smoketests + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + + - name: Setup Node.js + uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 + with: + node-version: lts/* + cache: "npm" + + - name: Install dependencies + run: npm ci + + - name: Prepare environment for tests + run: npm run build:ci + + - name: Run tests + run: npm run test:smoketests diff --git a/.github/workflows/commitlint.yml b/.github/workflows/commitlint.yml new file mode 100644 index 00000000000..6f64e9a435f --- /dev/null +++ b/.github/workflows/commitlint.yml @@ -0,0 +1,34 @@ +name: Validate PR + +on: + pull_request: + types: + - opened + - reopened + - edited + +concurrency: + group: "${{ github.workflow }} ✨ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}" + cancel-in-progress: true + +permissions: + contents: read + +jobs: + commitlint: + name: Lint Commit Messages + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + with: + fetch-depth: 0 + + - uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 + with: + node-version: "lts/*" + cache: "npm" + + - run: npm ci + + - name: Validate PR commits with commitlint + run: npx commitlint --from ${{ github.event.pull_request.head.sha }}~${{ github.event.pull_request.commits }} --to ${{ github.event.pull_request.head.sha }} --verbose diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml index 5a47668e87f..a30d16cabac 100644 --- a/.github/workflows/dependency-review.yml +++ b/.github/workflows/dependency-review.yml @@ -1,5 +1,14 @@ -name: "Dependency Review" -on: [pull_request] +# Dependency Review Action +# +# This Action will scan dependency manifest files that change as part of a Pull Request, +# surfacing known-vulnerable versions of the packages declared or updated in the PR. +# Once installed, if the workflow run is marked as required, +# PRs introducing known-vulnerable packages will be blocked from merging. +# +# Source repository: https://github.com/actions/dependency-review-action +name: Review Dependencies + +on: pull_request permissions: contents: read @@ -8,7 +17,8 @@ jobs: dependency-review: runs-on: ubuntu-latest steps: - - name: "Checkout Repository" + - name: Git Checkout uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - name: "Dependency Review" + + - name: Review Dependencies uses: actions/dependency-review-action@3c4e3dcb1aa7874d2c16be7d79418e9b7efd6261 # v4.8.2 diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml deleted file mode 100644 index ce2d1547393..00000000000 --- a/.github/workflows/nodejs.yml +++ /dev/null @@ -1,149 +0,0 @@ -name: webpack-cli - -on: - push: - branches: - - main - - next - pull_request: - branches: - - main - - next - -permissions: - contents: read - -jobs: - lint: - name: Lint - ${{ matrix.os }} - Node v${{ matrix.node-version }} - - runs-on: ${{ matrix.os }} - - concurrency: - group: lint-${{ github.ref }} - cancel-in-progress: true - - strategy: - matrix: - os: [ubuntu-latest] - node-version: [lts/*] - webpack-version: [latest] - - steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - - name: Using Node v${{ matrix.node-version }} - uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 - with: - node-version: ${{ matrix.node-version }} - cache: "npm" - - - name: Install dependencies - run: npm ci - - - name: Build - run: npm run build - - - name: Lint - run: npm run lint - - build: - name: Tests and Coverage - ${{ matrix.os }} - Node v${{ matrix.node-version }}, Webpack ${{ matrix.webpack-version }}, DevServer ${{ matrix.dev-server-version }} (${{ matrix.shard }}) - - runs-on: ${{ matrix.os }} - - concurrency: - group: build-${{ matrix.os }}-v${{ matrix.node-version }}-${{ matrix.webpack-version }}-${{ matrix.dev-server-version }}-${{ matrix.shard }}-${{ github.ref }} - cancel-in-progress: true - - strategy: - matrix: - os: [ubuntu-latest, windows-latest, macos-latest] - node-version: [18.x, 20.x, 22.x, 24.x] - shard: ["1/4", "2/4", "3/4", "4/4"] - webpack-version: [latest] - dev-server-version: [latest] - - steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - with: - fetch-depth: 0 - - - name: Using Node v${{ matrix.node-version }} - uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 - with: - node-version: ${{ matrix.node-version }} - cache: "npm" - - - uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 #4.2.0 - with: - version: 9 - - - name: Install dependencies - run: npm ci --ignore-scripts - - - name: Prepare environment for tests - run: npm run build:ci - - - name: Run tests and generate coverage - run: npm run test:coverage --ci --shard=${{ matrix.shard }} - - - name: Upload coverage to Codecov - uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2 - with: - token: ${{ secrets.CODECOV_TOKEN }} - verbose: true - - smoketests: - name: Smoketests - ${{ matrix.os }} - Node v${{ matrix.node-version }} - runs-on: ubuntu-latest - concurrency: - group: smoketests-${{ github.ref }} - cancel-in-progress: true - strategy: - matrix: - os: [ubuntu-latest] - node-version: [lts/*] - steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - with: - fetch-depth: 0 - - - name: Using Node v${{ matrix.node-version }} - uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 - with: - node-version: ${{ matrix.node-version }} - cache: "npm" - - - name: Install dependencies - run: npm ci - - - name: Prepare environment for tests - run: npm run build:ci - - - name: Run smoketests - run: npm run test:smoketests - - commitlint: - name: Lint Commit Messages - runs-on: ubuntu-latest - concurrency: - group: commitlint-${{ github.ref }} - cancel-in-progress: true - steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - with: - fetch-depth: 0 - - - uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 - with: - node-version: "lts/*" - cache: "npm" - - - run: npm ci - - - name: Validate PR commits with commitlint - if: github.event_name == 'pull_request' - run: npx commitlint --from ${{ github.event.pull_request.head.sha }}~${{ github.event.pull_request.commits }} --to ${{ github.event.pull_request.head.sha }} --verbose - env: - NODE_PATH: ${{ github.workspace }}/node_modules