diff --git a/.github/workflows/build-lint-test.yml b/.github/workflows/build-lint-test.yml index ec2c77c..3949941 100644 --- a/.github/workflows/build-lint-test.yml +++ b/.github/workflows/build-lint-test.yml @@ -7,29 +7,47 @@ jobs: prepare: name: Prepare runs-on: ubuntu-latest + strategy: + matrix: + node-version: [18.x, 20.x, 22.x] steps: - - uses: actions/checkout@v3 - - name: Use Node.js - uses: actions/setup-node@v3 + - uses: actions/checkout@v4 + - name: Install Corepack via Node + uses: actions/setup-node@v4 with: node-version-file: '.nvmrc' + - name: Install Yarn + run: corepack enable + - name: Install Node.js ${{ matrix.node-version }} and restore Yarn cache + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} cache: 'yarn' - - name: Install Yarn dependencies + - name: Install dependencies via Yarn run: yarn --immutable build: name: Build + needs: prepare runs-on: ubuntu-latest - needs: - - prepare + strategy: + matrix: + node-version: [22.x] steps: - - uses: actions/checkout@v3 - - name: Use Node.js - uses: actions/setup-node@v3 + - uses: actions/checkout@v4 + - name: Install Corepack via Node + uses: actions/setup-node@v4 with: node-version-file: '.nvmrc' + - name: Install Yarn + run: corepack enable + - name: Install Node.js ${{ matrix.node-version }} and restore Yarn cache + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} cache: 'yarn' - - run: yarn --immutable --immutable-cache + - name: Install dependencies via Yarn + run: yarn --immutable --immutable-cache - run: yarn build - name: Require clean working directory shell: bash @@ -41,17 +59,26 @@ jobs: lint: name: Lint + needs: prepare runs-on: ubuntu-latest - needs: - - prepare + strategy: + matrix: + node-version: [22.x] steps: - - uses: actions/checkout@v3 - - name: Use Node.js - uses: actions/setup-node@v3 + - uses: actions/checkout@v4 + - name: Install Corepack via Node + uses: actions/setup-node@v4 with: node-version-file: '.nvmrc' + - name: Install Yarn + run: corepack enable + - name: Install Node.js ${{ matrix.node-version }} and restore Yarn cache + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} cache: 'yarn' - - run: yarn --immutable --immutable-cache + - name: Install dependencies via Yarn + run: yarn --immutable --immutable-cache - run: yarn lint - name: Validate RC changelog if: ${{ startsWith(github.head_ref, 'release/') }} @@ -69,20 +96,26 @@ jobs: test: name: Test + needs: prepare runs-on: ubuntu-latest - needs: - - prepare strategy: matrix: node-version: [18.x, 20.x, 22.x] steps: - - uses: actions/checkout@v3 - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3 + - uses: actions/checkout@v4 + - name: Install Corepack via Node + uses: actions/setup-node@v4 + with: + node-version-file: '.nvmrc' + - name: Install Yarn + run: corepack enable + - name: Install Node.js ${{ matrix.node-version }} and restore Yarn cache + uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} cache: 'yarn' - - run: yarn --immutable --immutable-cache + - name: Install dependencies via Yarn + run: yarn --immutable --immutable-cache - run: yarn test - name: Require clean working directory shell: bash @@ -94,25 +127,32 @@ jobs: compatibility-test: name: Compatibility test + needs: prepare runs-on: ubuntu-latest - needs: - - prepare strategy: matrix: node-version: [18.x, 20.x, 22.x] steps: - - uses: actions/checkout@v3 - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3 + - uses: actions/checkout@v4 + - name: Install Corepack via Node + uses: actions/setup-node@v4 + with: + node-version-file: '.nvmrc' + - name: Install Yarn + run: corepack enable + - name: Install Node.js ${{ matrix.node-version }} and restore Yarn cache + uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} cache: 'yarn' - - run: rm yarn.lock && YARN_ENABLE_IMMUTABLE_INSTALLS=false yarn + - name: Install dependencies via Yarn + run: rm yarn.lock && YARN_ENABLE_IMMUTABLE_INSTALLS=false yarn - run: yarn test + - name: Restore lockfile + run: git restore yarn.lock - name: Require clean working directory shell: bash run: | - git restore yarn.lock if ! git diff --exit-code; then echo "Working tree dirty at end of job" exit 1 diff --git a/.github/workflows/create-release-pr.yml b/.github/workflows/create-release-pr.yml index 8988f38..66443a9 100644 --- a/.github/workflows/create-release-pr.yml +++ b/.github/workflows/create-release-pr.yml @@ -21,7 +21,7 @@ jobs: contents: write pull-requests: write steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: # This is to guarantee that the most recent tag is fetched. # This can be configured to a more reasonable value by consumers. @@ -29,13 +29,13 @@ jobs: # We check out the specified branch, which will be used as the base # branch for all git operations and the release PR. ref: ${{ github.event.inputs.base-branch }} - - name: Setup Node.js - uses: actions/setup-node@v3 + - name: Install Node.js + uses: actions/setup-node@v4 with: node-version-file: '.nvmrc' - uses: MetaMask/action-create-release-pr@v3 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: release-type: ${{ github.event.inputs.release-type }} release-version: ${{ github.event.inputs.release-version }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 8fa96e6..8382408 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -10,7 +10,7 @@ jobs: name: Check workflows runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Download actionlint id: download-actionlint run: bash <(curl https://raw.githubusercontent.com/rhysd/actionlint/7fdc9630cc360ea1a469eed64ac6d78caeda1234/scripts/download-actionlint.bash) 1.6.23 diff --git a/.github/workflows/publish-docs.yml b/.github/workflows/publish-docs.yml index de54471..f5cc005 100644 --- a/.github/workflows/publish-docs.yml +++ b/.github/workflows/publish-docs.yml @@ -21,14 +21,19 @@ jobs: - name: Ensure `destination_dir` is not empty if: ${{ inputs.destination_dir == '' }} run: exit 1 - - name: Checkout the repository - uses: actions/checkout@v3 - - name: Use Node.js - uses: actions/setup-node@v3 + - uses: actions/checkout@v4 + - name: Install Corepack via Node + uses: actions/setup-node@v4 + with: + node-version-file: '.nvmrc' + - name: Install Yarn + run: corepack enable + - name: Restore Yarn cache + uses: actions/setup-node@v4 with: node-version-file: '.nvmrc' cache: 'yarn' - - name: Install npm dependencies + - name: Install dependencies via Yarn run: yarn --immutable - name: Run build script run: yarn build:docs diff --git a/.github/workflows/publish-release.yml b/.github/workflows/publish-release.yml index 3378dc5..a75dd37 100644 --- a/.github/workflows/publish-release.yml +++ b/.github/workflows/publish-release.yml @@ -16,37 +16,51 @@ jobs: contents: write runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: ref: ${{ github.sha }} - - name: Setup Node.js - uses: actions/setup-node@v3 + - name: Install Corepack via Node + uses: actions/setup-node@v4 with: node-version-file: '.nvmrc' + - name: Install Yarn + run: corepack enable + - name: Restore Yarn cache + uses: actions/setup-node@v4 + with: + node-version-file: '.nvmrc' + cache: 'yarn' - uses: MetaMask/action-publish-release@v3 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - name: Install - run: | - yarn install - yarn build - uses: actions/cache@v3 - id: restore-build with: path: | ./dist ./node_modules/.yarn-state.yml key: ${{ github.sha }} + - run: yarn --immutable + - run: yarn build publish-npm-dry-run: - runs-on: ubuntu-latest needs: publish-release + runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: ref: ${{ github.sha }} + - name: Install Corepack via Node + uses: actions/setup-node@v4 + with: + node-version-file: '.nvmrc' + - name: Install Yarn + run: corepack enable + - name: Restore Yarn cache + uses: actions/setup-node@v4 + with: + node-version-file: '.nvmrc' + cache: 'yarn' - uses: actions/cache@v3 - id: restore-build with: path: | ./dist @@ -62,15 +76,25 @@ jobs: SKIP_PREPACK: true publish-npm: - environment: npm-publish - runs-on: ubuntu-latest needs: publish-npm-dry-run + runs-on: ubuntu-latest + environment: npm-publish steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: ref: ${{ github.sha }} + - name: Install Corepack via Node + uses: actions/setup-node@v4 + with: + node-version-file: '.nvmrc' + - name: Install Yarn + run: corepack enable + - name: Restore Yarn cache + uses: actions/setup-node@v4 + with: + node-version-file: '.nvmrc' + cache: 'yarn' - uses: actions/cache@v3 - id: restore-build with: path: | ./dist @@ -86,12 +110,12 @@ jobs: SKIP_PREPACK: true get-release-version: - runs-on: ubuntu-latest needs: publish-npm + runs-on: ubuntu-latest outputs: RELEASE_VERSION: ${{ steps.get-release-version.outputs.RELEASE_VERSION }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: ref: ${{ github.sha }} - id: get-release-version @@ -99,8 +123,8 @@ jobs: run: ./scripts/get.sh ".version" "RELEASE_VERSION" publish-release-to-gh-pages: - needs: get-release-version name: Publish docs to `${{ needs.get-release-version.outputs.RELEASE_VERSION }}` directory of `gh-pages` branch + needs: get-release-version permissions: contents: write uses: ./.github/workflows/publish-docs.yml @@ -110,8 +134,8 @@ jobs: PUBLISH_DOCS_TOKEN: ${{ secrets.PUBLISH_DOCS_TOKEN }} publish-release-to-latest-gh-pages: - needs: publish-npm name: Publish docs to `latest` directory of `gh-pages` branch + needs: publish-npm permissions: contents: write uses: ./.github/workflows/publish-docs.yml