From e277b4a1b11c430821eb53370fa9f78ce9d5ab4c Mon Sep 17 00:00:00 2001 From: galargh Date: Tue, 11 Feb 2025 17:36:14 +0000 Subject: [PATCH] wip: debug build system test --- .github/workflows/v-next-ci.yml | 263 +------------------------------- v-next/hardhat/package.json | 2 +- 2 files changed, 5 insertions(+), 260 deletions(-) diff --git a/.github/workflows/v-next-ci.yml b/.github/workflows/v-next-ci.yml index b844c2809c..7e146754e3 100644 --- a/.github/workflows/v-next-ci.yml +++ b/.github/workflows/v-next-ci.yml @@ -1,261 +1,23 @@ name: vNext CI on: - merge_group: push: branches: - - v-next - pull_request: - workflow_dispatch: + - build-system-debug concurrency: group: ${{github.workflow}}-${{github.ref}} cancel-in-progress: true jobs: - is-v-next: - runs-on: ubuntu-latest - outputs: - is_v_next: ${{ steps.check.outputs.folder_exists }} - - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Check if the folder v-next exists - id: check - run: | - if [ -d "./v-next" ]; then - echo "folder_exists=true" >> $GITHUB_OUTPUT - else - echo "folder_exists=false" >> $GITHUB_OUTPUT - fi - - check_dependencies: - name: Check dependency versions - needs: is-v-next - if: ${{ needs.is-v-next.outputs.is_v_next == 'true' }} - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: 22 - - name: Run check - run: node scripts/check-v-next-dependencies.js - - check_npm_scripts: - name: Check that the npm scripts are consistent - needs: is-v-next - if: ${{ needs.is-v-next.outputs.is_v_next == 'true' }} - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: 22 - - name: Run check - run: node scripts/check-v-next-npm-scripts.js - - list-packages: - name: List packages - needs: is-v-next - if: ${{ needs.is-v-next.outputs.is_v_next == 'true' }} - runs-on: ubuntu-latest - outputs: - packages: ${{ steps.filter.outputs.changes }} - should_bundle: ${{ contains(steps.filter.outputs.hardhat_files, '.github/workflows/v-next-ci.yml') || contains(steps.filter.outputs.hardhat_files, 'pnpm-lock.yaml') }} - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: 22 - - run: yq -p yaml -o json pnpm-lock.yaml | tee pnpm-lock.json - - id: generate - env: - PACKAGE_IGNORE: | - [ - ".", - "packages/", - "v-next/hardhat/templates/" - ] - COMMON_FILTERS: | - [ - ".github/workflows/v-next-ci.yml", - "config-v-next/**", - "pnpm-lock.yaml" - ] - run: | - echo "filters<> $GITHUB_OUTPUT - node scripts/generate-filters.js | - yq -Po yaml 'with_entries(.key |= sub("^v-next/", ""))' | - tee -a $GITHUB_OUTPUT - echo "EOF" >> $GITHUB_OUTPUT - - id: filter - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 - with: - list-files: json - filters: ${{ steps.generate.outputs.filters }} - base: v-next # TODO: Remove once v-next becomes the default branch - - bundle: - # Depending on list-packages only to check whether pnpm-lock.yaml has changed - # This could be handled by a simpler job, but an extra runner would have to be allocated for it - needs: list-packages - - if: needs.list-packages.outputs.should_bundle == 'true' - - # Using a matrix strategy even though there's only one package - # because we will want to add, at least, hardhat-toolbox in the future - strategy: - fail-fast: false - matrix: - package: ["hardhat"] - - name: "[${{ matrix.package }}] bundle" - runs-on: ubuntu-latest - defaults: - run: - working-directory: v-next/${{ matrix.package }} - steps: - - uses: actions/checkout@v4 - - uses: ./.github/actions/setup-env - with: - node-version: 22 - - name: Install dependencies - run: pnpm install --frozen-lockfile --prefer-offline - - name: Build - run: pnpm build - # https://github.com/pnpm/pnpm/issues/6166 - - name: Deploy - run: | - pnpm deploy --config.shamefully-hoist=true --config.hoist=true --config.node-linker=true --config.shared-workspace-lockfile=false --filter="$(jq -r .name package.json)" --prod --no-optional bundle - # We need to move the node_modules links from v-next/hardhat/bundle to bundle because - # https://github.com/pnpm/pnpm/pull/8465 broke modules generation with the set of options we provide - for old_link in $(find v-next/hardhat/bundle -type l); do - echo "Processing link $old_link" - new_link="${old_link#v-next/hardhat/}" - new_link_dir="$(dirname "$new_link")" - old_link_target="$(readlink -f "$old_link")" - mkdir -p "$new_link_dir" - ln -rs "$old_link_target" "$new_link" - new_link_target="$(readlink "$new_link")" - echo "Created link $new_link -> $new_link_target" - done - rm -rf v-next - - uses: actions/upload-artifact@v4 - with: - name: ${{ matrix.package }} - path: | - v-next/${{ matrix.package }}/bundle - - bundle-aggregate: - needs: bundle - - if: ${{ !cancelled() }} - - name: bundle - runs-on: ubuntu-latest - - permissions: - pull-requests: write - - steps: - - env: - result: ${{ needs.bundle.result }} - run: | - if [[ "$result" == "failure" ]]; then - exit 1 - fi - shell: bash - - uses: actions/download-artifact@v4 - - id: download - run: ls -1 | wc -l | xargs -I {} -0 echo "count={}" | tee -a $GITHUB_OUTPUT - shell: bash - - id: comment - if: steps.download.outputs.count != '0' - run: | - echo 'body<> $GITHUB_OUTPUT - for bundle in *; do - echo "# $bundle" | tee -a $GITHUB_OUTPUT - echo '' | tee -a $GITHUB_OUTPUT - echo "Total size of the bundle: "'`'"$(du -sh $bundle --exclude=$bundle/node_modules/.pnpm | cut -f1)"'`' | tee -a $GITHUB_OUTPUT - echo "Total number of dependencies (including transitive): "'`'"$(find $bundle/node_modules/@* $bundle/node_modules -mindepth 1 -maxdepth 1 -type d ! -name '.*' ! -name '@*' | wc -l)"'`' | tee -a $GITHUB_OUTPUT - echo '' | tee -a $GITHUB_OUTPUT - echo '
' | tee -a $GITHUB_OUTPUT - echo 'List of dependencies (sorted by size)' | tee -a $GITHUB_OUTPUT - echo '' | tee -a $GITHUB_OUTPUT - echo '```' | tee -a $GITHUB_OUTPUT - du -shc $bundle/node_modules/@*/* $bundle/node_modules/* | - grep -Ev '/node_modules/@[^/]+$' | sort -rh | - sed "s|$bundle/node_modules/||" | tee -a $GITHUB_OUTPUT - echo '```' | tee -a $GITHUB_OUTPUT - echo '
' | tee -a $GITHUB_OUTPUT - echo '' | tee -a $GITHUB_OUTPUT - done - echo 'EOF' >> $GITHUB_OUTPUT - - if: github.event_name == 'pull_request' && steps.download.outputs.count != '0' - uses: marocchino/sticky-pull-request-comment@331f8f5b4215f0445d3c07b4967662a32a2d3e31 # v2.9.0 - with: - header: bundle - message: ${{ steps.comment.outputs.body }} - - lint: - needs: list-packages - - if: needs.list-packages.outputs.packages != '[]' - - strategy: - fail-fast: false - matrix: - package: ${{ fromJson(needs.list-packages.outputs.packages) }} - - name: "[${{ matrix.package }}] lint" - runs-on: ubuntu-latest - defaults: - run: - working-directory: v-next/${{ matrix.package }} - - steps: - - uses: actions/checkout@v4 - - uses: ./.github/actions/setup-env - with: - node-version: 22 - - name: Install dependencies - run: pnpm install --frozen-lockfile --prefer-offline - - name: Build - run: pnpm build - - name: Lint - run: pnpm lint - - lint-aggregate: - needs: lint - - if: ${{ !cancelled() }} - - name: lint - runs-on: ubuntu-latest - - steps: - - env: - result: ${{ needs.lint.result }} - run: | - if [[ "$result" == "failure" ]]; then - exit 1 - fi - shell: bash - ci: - needs: list-packages - - if: needs.list-packages.outputs.packages != '[]' - strategy: fail-fast: false matrix: - package: ${{ fromJson(needs.list-packages.outputs.packages) }} - os: [ubuntu-latest, macos-13, macos-latest, windows-latest] + package: [hardhat] + os: [windows-latest] node: [22] + attempt: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100] name: "[${{ matrix.package }}] ci on ${{ matrix.os }} (Node ${{ matrix.node }})" runs-on: ${{ matrix.os }} @@ -276,20 +38,3 @@ jobs: env: __DO_NOT_USE_IS_HARDHAT_CI: true run: pnpm run test - - ci-aggregate: - needs: ci - - if: ${{ !cancelled() }} - - name: ci - runs-on: ubuntu-latest - - steps: - - env: - result: ${{ needs.ci.result }} - run: | - if [[ "$result" == "failure" ]]; then - exit 1 - fi - shell: bash diff --git a/v-next/hardhat/package.json b/v-next/hardhat/package.json index ffcdb2be9c..9d9f059688 100644 --- a/v-next/hardhat/package.json +++ b/v-next/hardhat/package.json @@ -45,7 +45,7 @@ "lint:fix": "pnpm prettier --write && pnpm eslint --fix", "eslint": "eslint \"src/**/*.ts\" \"test/**/*.ts\"", "prettier": "prettier \"**/*.{ts,js,md,json}\"", - "test": "node --import tsx/esm --test --test-reporter=@ignored/hardhat-vnext-node-test-reporter \"test/*.ts\" \"test/!(fixture-projects|helpers)/**/*.ts\"", + "test": "node --import tsx/esm --test \"test/*.ts\" \"test/!(fixture-projects|helpers)/**/*.ts\"", "test:only": "node --import tsx/esm --test --test-only --test-reporter=@ignored/hardhat-vnext-node-test-reporter \"test/*.ts\" \"test/!(fixture-projects|helpers)/**/*.ts\"", "pretest": "pnpm build", "pretest:only": "pnpm build",