chore: migrates to eslint 9 & flat config #1185
Workflow file for this run
This file contains 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: ci | |
on: | |
push: | |
branches: [main] | |
pull_request: | |
branches: [main] | |
workflow_dispatch: | |
env: | |
NODE_LATEST: 23.x | |
PLATFORM: ubuntu-latest | |
CI: true | |
# the LANG (used by the Intl API, which we use for some of the number | |
# formatting) is set in the run scripts. This works everywhere, except on | |
# windows. So, especially for windows ... | |
LANG: en_US.UTF-8 | |
# Same for NODE_OPTIONS, just for windows: | |
NODE_OPTIONS: --no-warnings | |
defaults: | |
run: | |
shell: bash | |
jobs: | |
check-linux: | |
strategy: | |
fail-fast: false | |
matrix: | |
node-version: [18.x, 23.x] | |
platform: [ubuntu-latest] | |
runs-on: ${{matrix.platform}} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 2 | |
if: github.event_name == 'pull_request' && matrix.node-version == env.NODE_LATEST | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 1 | |
if: github.event_name != 'pull_request' || matrix.node-version != env.NODE_LATEST | |
- uses: actions/cache@v4 | |
with: | |
path: node_modules | |
key: ${{matrix.node-version}}@${{matrix.platform}}-build-${{hashFiles('package-lock.json')}} | |
restore-keys: | | |
${{matrix.node-version}}@${{matrix.platform}}-build- | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: ${{matrix.node-version}} | |
- name: install & build | |
run: | | |
sudo apt-get update | |
sudo apt-get install graphviz | |
npm install | |
npm run build | |
- name: lint (run on node ${{env.NODE_LATEST}} only) | |
if: matrix.node-version == env.NODE_LATEST | |
run: npm run lint | |
- name: forbidden dependency check | |
run: npm run depcruise | |
- name: test coverage (run on node ${{env.NODE_LATEST}} only) | |
if: matrix.node-version == env.NODE_LATEST | |
run: npm run test:cover | |
- name: emit coverage results & depcruise result to step summary | |
if: always() && matrix.node-version == env.NODE_LATEST | |
run: | | |
echo '## Code coverage' >> $GITHUB_STEP_SUMMARY | |
node tools/istanbul-json-summary-to-markdown.mjs < coverage/coverage-summary.json >> $GITHUB_STEP_SUMMARY | |
yarn --silent depcruise --output-type markdown >> $GITHUB_STEP_SUMMARY | |
- name: on pushes to the default branch emit graph to the step summary | |
if: always() && matrix.node-version == env.NODE_LATEST && github.event_name == 'push' && github.ref_name == github.event.repository.default_branch | |
run: | | |
echo '## Visual overview' >> $GITHUB_STEP_SUMMARY | |
echo '```mermaid' >> $GITHUB_STEP_SUMMARY | |
yarn --silent depcruise:graph:mermaid >> $GITHUB_STEP_SUMMARY | |
echo '' >> $GITHUB_STEP_SUMMARY | |
echo '```' >> $GITHUB_STEP_SUMMARY | |
- name: on pull requests emit depcruise graph to step summary with changed modules highlighted | |
if: always() && matrix.node-version == env.NODE_LATEST && github.event_name == 'pull_request' && github.ref_name != github.event.repository.default_branch | |
run: | | |
echo '## Visual diff' >> $GITHUB_STEP_SUMMARY | |
echo Modules changed in this PR have a fluorescent green color. All other modules in the graph are those directly or indirectly affected by changes in the green modules. >> $GITHUB_STEP_SUMMARY | |
echo '```mermaid' >> $GITHUB_STEP_SUMMARY | |
SHA=${{github.event.pull_request.base.sha}} yarn --silent depcruise:graph:mermaid:diff >> $GITHUB_STEP_SUMMARY | |
echo '' >> $GITHUB_STEP_SUMMARY | |
echo '```' >> $GITHUB_STEP_SUMMARY | |
- name: regular test (run on node != ${{env.NODE_LATEST}} only) | |
if: matrix.node-version != env.NODE_LATEST | |
run: npm test | |
check-windows: | |
env: | |
PLATFORM: windows-latest | |
NO_COLOR: 1 | |
runs-on: windows-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/cache@v4 | |
with: | |
path: node_modules | |
key: ${{env.NODE_LATEST}}@${{env.PLATFORM}}-build-${{hashFiles('package.json')}} | |
restore-keys: | | |
${{env.NODE_LATEST}}@${{env.PLATFORM}}-build- | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: ${{env.NODE_LATEST}} | |
- name: install & build | |
run: | | |
choco install graphviz | |
npm install | |
npm run build | |
- run: npm run depcruise | |
- run: npx mocha --invert --fgrep "#do-not-run-on-windows" | |
# for #reasons the run step takes forever to complete on the ci - while | |
# running fine locally. Something to figure out another time. | |
# check-berry-integration: | |
# runs-on: ubuntu-latest | |
# steps: | |
# - uses: actions/checkout@v4 | |
# - uses: actions/cache@v4 | |
# with: | |
# path: | | |
# .yarn | |
# .yarnrc.yml | |
# .pnp.js | |
# yarn.lock | |
# key: ${{env.NODE_LATEST}}@${{env.PLATFORM}}-build-${{hashFiles('package.json')}} | |
# restore-keys: | | |
# ${{env.NODE_LATEST}}@${{env.PLATFORM}}-build- | |
# - uses: actions/setup-node@v4 | |
# with: | |
# node-version: ${{env.NODE_LATEST}} | |
# - name: install & build | |
# run: | | |
# rm -f .npmrc | |
# yarn set version berry | |
# YARN_ENABLE_IMMUTABLE_INSTALLS=false yarn | |
# - name: forbidden dependency check | |
# run: | | |
# yarn --version | |
# yarn depcruise | |
# # testing doesn't work as the tests are esm and berry, with pnp enabled, | |
# # doesn't support esm yet. | |
# # - name: test coverage | |
# # run: | | |
# # node --version | |
# # yarn --version | |
# # yarn test:cover |