Merge v0.4.13 into master #316
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Test | |
| on: | |
| push: | |
| branches: [master, develop] | |
| pull_request: | |
| branches: [master, develop] | |
| jobs: | |
| test: | |
| name: Test on ${{ matrix.os }} | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest, windows-latest, macos-latest] | |
| node-version: [20.x] | |
| fail-fast: false | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup pnpm | |
| uses: pnpm/action-setup@v4 | |
| with: | |
| version: 10 | |
| - name: Setup Node.js ${{ matrix.node-version }} | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ matrix.node-version }} | |
| # Don't use built-in cache - we'll cache pnpm store manually to include create-test deps | |
| # Cache pnpm store - includes both main project and create-test template dependencies | |
| - name: Get pnpm store directory | |
| shell: bash | |
| id: pnpm-cache | |
| run: echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_OUTPUT | |
| - name: Cache pnpm store | |
| uses: actions/cache@v4 | |
| with: | |
| path: ${{ steps.pnpm-cache.outputs.STORE_PATH }} | |
| # Cache key includes both lockfile (main deps) and template config (create-test deps) | |
| key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml', 'src/templates/config.ts') }} | |
| restore-keys: | | |
| ${{ runner.os }}-pnpm-store- | |
| - name: Install dependencies | |
| run: pnpm install --frozen-lockfile | |
| - name: Run tests with coverage threshold | |
| run: pnpm test:ci | |
| - name: Build project | |
| run: pnpm build | |
| # Upgrade-path regression: data created by an old offckb release (old | |
| # CKB binary) must keep working with this build. Ubuntu only — the test | |
| # is OS-independent (config/data compatibility) and downloads an extra | |
| # legacy CKB binary, so one platform keeps the signal cheap. | |
| # Runs BEFORE create-test.sh: that script's cleanup only kills the pnpm | |
| # wrapper and leaves the CKB processes holding port 8114/28114, while | |
| # this test tears its own node down completely. | |
| - name: Cache npm cache (legacy CLI install) | |
| if: matrix.os == 'ubuntu-latest' | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/.npm | |
| key: ${{ runner.os }}-npm-cache-legacy-${{ hashFiles('scripts/legacy-data-test.sh') }} | |
| restore-keys: | | |
| ${{ runner.os }}-npm-cache-legacy- | |
| - name: Integration test - Legacy data upgrade path (Ubuntu only) | |
| if: matrix.os == 'ubuntu-latest' | |
| shell: bash | |
| run: bash scripts/legacy-data-test.sh | |
| # Note: create-test.sh includes node startup and RPC verification, | |
| # so we don't need a separate starting-node-test step | |
| - name: Integration test - Create project workflow | |
| shell: bash | |
| run: bash scripts/create-test.sh | |
| - name: Upload coverage to Codecov (Ubuntu only) | |
| if: matrix.os == 'ubuntu-latest' | |
| uses: codecov/codecov-action@v4 | |
| with: | |
| files: ./coverage/lcov.info | |
| flags: unittests | |
| name: codecov-umbrella | |
| fail_ci_if_error: false |