From 1b0899b469889358e0201ba4555fd115df17a4b4 Mon Sep 17 00:00:00 2001 From: Claudia Meadows Date: Sun, 25 Aug 2024 14:58:32 -0700 Subject: [PATCH] Migrate to Node 20, clean up workflows (#2902) Tests still appear to fail per #2898. Unfortunately, I need actions/runner#2347 to ignore the test failures properly - I need them to be warnings, not hard errors. --- .github/actions/setup/action.yml | 21 +++++++ .github/workflows/lint-docs.yml | 27 --------- .github/workflows/lint-js.yml | 30 ---------- .github/workflows/merge.yml | 18 +----- .github/workflows/push-master.yml | 22 ++++--- .github/workflows/rollback.yml | 17 +----- .github/workflows/test-js.yml | 30 ---------- .../workflows/{pr.yml => test-next-push.yml} | 22 +++---- .github/workflows/test.yml | 59 +++++++++++++++++++ 9 files changed, 101 insertions(+), 145 deletions(-) create mode 100644 .github/actions/setup/action.yml delete mode 100644 .github/workflows/lint-docs.yml delete mode 100644 .github/workflows/lint-js.yml delete mode 100644 .github/workflows/test-js.yml rename .github/workflows/{pr.yml => test-next-push.yml} (70%) create mode 100644 .github/workflows/test.yml diff --git a/.github/actions/setup/action.yml b/.github/actions/setup/action.yml new file mode 100644 index 000000000..7cf6a6d41 --- /dev/null +++ b/.github/actions/setup/action.yml @@ -0,0 +1,21 @@ +# In the future, I'd like to fold this into its own action under the Mithril.js +# org and include `actions/checkout` as well. It'd simplify maintenance a bit +# and I could reuse it across multiple repos. +name: Setup CI context +description: Sets up repo and Node context and installs packages + +inputs: + # See supported Node.js release schedule here: + # https://github.com/nodejs/Release + node-version: + default: 20 + description: The Node version to use + +runs: + using: composite + steps: + - uses: actions/setup-node@v4 + with: + node-version: ${{ inputs.node-version }} + - run: npm ci + shell: bash diff --git a/.github/workflows/lint-docs.yml b/.github/workflows/lint-docs.yml deleted file mode 100644 index 52f3a0eef..000000000 --- a/.github/workflows/lint-docs.yml +++ /dev/null @@ -1,27 +0,0 @@ -# This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node -# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions - -name: lint-docs - -on: - push: - branches: [ next ] - pull_request: - branches: [ next ] - -jobs: - lint-docs: - # https://github.com/MithrilJS/mithril.js/issues/2898 - continue-on-error: true - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v3 - # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ - - uses: actions/setup-node@v3 - with: - node-version: 20 - cache: 'npm' - - run: npm ci - - run: npm run lint:docs diff --git a/.github/workflows/lint-js.yml b/.github/workflows/lint-js.yml deleted file mode 100644 index 6aca83a15..000000000 --- a/.github/workflows/lint-js.yml +++ /dev/null @@ -1,30 +0,0 @@ -# This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node -# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions - -name: lint-js - -on: - push: - branches: [ next ] - pull_request: - branches: [ next ] - -jobs: - lint-js: - - runs-on: ubuntu-latest - - strategy: - matrix: - node-version: [18] - # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ - - steps: - - uses: actions/checkout@v3 - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3 - with: - node-version: ${{ matrix.node-version }} - cache: 'npm' - - run: npm ci - - run: npm run lint:js diff --git a/.github/workflows/merge.yml b/.github/workflows/merge.yml index 4b23a53d7..6f1f704b5 100644 --- a/.github/workflows/merge.yml +++ b/.github/workflows/merge.yml @@ -10,25 +10,11 @@ concurrency: prr:deploy jobs: merge: - runs-on: ubuntu-latest - strategy: - matrix: - node-version: [16.x] - steps: - - uses: actions/checkout@v3 - with: - ref: 'next' - fetch-depth: 0 - - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3 - with: - node-version: ${{ matrix.node-version }} - cache: 'npm' - - run: npm ci + - run: git clone --depth=0 https://github.com/MithrilJS/mithril.js.git && cd mithril.js + - uses: ./.github/actions/setup - run: npm run build - run: npx pr-release merge --target master --source next --commit --force --clean --changelog ./docs/recent-changes.md --compact --minimize-semver-change env: diff --git a/.github/workflows/push-master.yml b/.github/workflows/push-master.yml index 77bb6b87a..3391c8c0d 100644 --- a/.github/workflows/push-master.yml +++ b/.github/workflows/push-master.yml @@ -1,19 +1,17 @@ -name: 'Push `master`' +name: Warn on pushing to `master` on: pull_request: types: [opened] - branches: ['master'] + branches: [master] +permissions: + issues: write jobs: comment: runs-on: ubuntu-latest steps: - - uses: actions/github-script@v3 - with: - github-token: ${{secrets.GITHUB_TOKEN}} - script: | - await github.issues.createComment({ - issue_number: context.issue.number, - owner: context.repo.owner, - repo: context.repo.repo, - body: `⚠⚠⚠ Hey @${context.actor}, did you mean to open this against \`next\`? ⚠⚠⚠` - }) + - run: | + gh issue comment ${{ github.event.pull_request.url }} \ + --body '⚠⚠⚠ Hey @${{ github.actor }}, did you mean to open this against `next`? ⚠⚠⚠' + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + name: Post alert comment diff --git a/.github/workflows/rollback.yml b/.github/workflows/rollback.yml index f3c734765..57f2aacc7 100644 --- a/.github/workflows/rollback.yml +++ b/.github/workflows/rollback.yml @@ -7,24 +7,11 @@ concurrency: prr:deploy jobs: pr: - runs-on: ubuntu-latest - strategy: - matrix: - node-version: [16.x] - steps: - - uses: actions/checkout@v3 - with: - ref: 'next' - fetch-depth: 0 - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3 - with: - node-version: ${{ matrix.node-version }} - cache: 'npm' - - run: npm ci + - run: git clone --depth=0 https://github.com/MithrilJS/mithril.js.git && cd mithril.js + - uses: ./.github/actions/setup - run: npm run build - run: npx pr-release rollback --verbose --target master --source next --verbose --ignore 'package*' --ignore docs/changelog.md --ignore docs/recent-changes.md env: diff --git a/.github/workflows/test-js.yml b/.github/workflows/test-js.yml deleted file mode 100644 index 18b38822c..000000000 --- a/.github/workflows/test-js.yml +++ /dev/null @@ -1,30 +0,0 @@ -# This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node -# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions - -name: test-js - -on: - push: - branches: [ next ] - pull_request: - branches: [ next ] - -jobs: - test-js: - - runs-on: ubuntu-latest - - strategy: - matrix: - node-version: [14, 16, 18] - # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ - - steps: - - uses: actions/checkout@v3 - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3 - with: - node-version: ${{ matrix.node-version }} - cache: 'npm' - - run: npm ci - - run: npm run test:js diff --git a/.github/workflows/pr.yml b/.github/workflows/test-next-push.yml similarity index 70% rename from .github/workflows/pr.yml rename to .github/workflows/test-next-push.yml index f09b75bab..c3aeef389 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/test-next-push.yml @@ -1,30 +1,22 @@ -name: pr +name: test-next-push on: push: branches: [ next ] - workflow_dispatch: concurrency: prr:pre-release jobs: - pr: + build: + uses: ./.github/workflows/test.yml + publish-prerelease: + needs: build runs-on: ubuntu-latest - - strategy: - matrix: - node-version: [16.x] - steps: - - uses: actions/checkout@v3 - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3 - with: - node-version: ${{ matrix.node-version }} - cache: 'npm' - - run: npm ci + - run: git clone --depth=0 https://github.com/MithrilJS/mithril.js.git && cd mithril.js + - uses: ./.github/actions/setup - run: npm run build - run: npx pr-release pr --verbose --target master --source next --compact --verbose --minimize-semver-change env: diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 000000000..d54ae7e5a --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,59 @@ +name: test + +on: + pull_request: + branches: [ next ] + workflow_dispatch: + workflow_call: + +permissions: + actions: write + contents: read + +# This uses actions/checkout instead of `git clone` directly since it's way +# easier than parsing everything out. + +jobs: + lint-docs: + # https://github.com/MithrilJS/mithril.js/issues/2898 + # Semantics aren't quite what I'd prefer. This is what I'd really want: + # https://github.com/actions/runner/issues/2347#issue-comment-box + continue-on-error: true + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: ./.github/actions/setup + - run: npm run lint:docs + + lint-js: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: ./.github/actions/setup + - run: npm run lint:js + + build-js: + needs: lint-js + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: ./.github/actions/setup + - run: npm run build + + test-js: + needs: build-js + runs-on: ubuntu-latest + strategy: + matrix: + # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ + node-version: + - 16 + - 18 + - 20 + - 22 + steps: + - uses: actions/checkout@v4 + - uses: ./.github/actions/setup + with: + node-version: ${{ matrix.node-version }} + - run: npm run test:js