feat: migrate to Node.js 20 #2544
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: Node.js CI | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
jobs: | |
lint: | |
name: Check Format | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/[email protected] | |
- name: Use Node.js ${{ vars.NODE_VERSION }} | |
uses: actions/[email protected] | |
with: | |
node-version: ${{ vars.NODE_VERSION }} | |
cache: npm | |
- name: Install Dependencies | |
run: npm ci --ignore-scripts | |
- name: Lint | |
run: npm run lint | |
build: | |
name: Build Action Assets | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/[email protected] | |
- name: Use Node.js ${{ vars.NODE_VERSION }} | |
uses: actions/[email protected] | |
with: | |
node-version: ${{ vars.NODE_VERSION }} | |
cache: npm | |
- name: Install Dependencies | |
run: npm ci --ignore-scripts | |
- name: Build | |
run: npm run build | |
- name: Upload Action Assets | |
uses: actions/[email protected] | |
with: | |
name: dist | |
path: dist | |
unit-test: | |
name: Unit Test | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/[email protected] | |
- name: Use Node.js ${{ vars.NODE_VERSION }} | |
uses: actions/[email protected] | |
with: | |
node-version: ${{ vars.NODE_VERSION }} | |
cache: npm | |
- name: Install Dependencies | |
run: npm ci --ignore-scripts | |
- name: Test | |
run: npm test -- --coverage | |
- name: Report Code Coverage to codecov | |
uses: codecov/[email protected] | |
integration-test: | |
name: Integration Test | |
needs: [build] | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- ubuntu-22.04 | |
- ubuntu-20.04 | |
- macos-12 | |
- macos-11 | |
- windows-2022 | |
- windows-2019 | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Checkout | |
uses: actions/[email protected] | |
- name: Download Action Assets | |
uses: actions/[email protected] | |
with: | |
name: dist | |
path: dist | |
- name: Execute GitHub Action | |
uses: ./ | |
with: | |
image-url: ${{ vars.LGTM_IMAGE_URI }} | |
diff: | |
name: Compare Build Assets | |
if: github.event_name == 'pull_request' | |
needs: [build] | |
runs-on: ubuntu-latest | |
permissions: | |
issues: write | |
pull-requests: write | |
steps: | |
- name: Checkout | |
uses: actions/[email protected] | |
with: | |
ref: main | |
- name: Use Node.js ${{ vars.NODE_VERSION }} | |
uses: actions/[email protected] | |
with: | |
node-version: ${{ vars.NODE_VERSION }} | |
cache: npm | |
- name: Install Dependencies | |
run: npm ci --ignore-scripts | |
- name: Build Action Assets on main | |
run: npm run build | |
- name: Download Current Action Assets | |
uses: actions/[email protected] | |
with: | |
name: dist | |
path: current | |
- name: Setup js-beautify to compare minified js files | |
run: | | |
npm install --global js-beautify | |
git config --local diff.minjs.textconv js-beautify | |
echo "index.js diff=minjs" > .gitattributes | |
- name: Compare | |
id: compare | |
continue-on-error: true | |
run: | | |
echo '# Compare ${{ github.sha }} to main' >> $GITHUB_STEP_SUMMARY | |
echo '```diff' >> $GITHUB_STEP_SUMMARY | |
git diff --no-index ./dist/ ./current/ >> $GITHUB_STEP_SUMMARY | |
echo '```' >> $GITHUB_STEP_SUMMARY | |
git diff --no-index --exit-code ./dist/ ./current/ | |
- name: Report diff | |
if: steps.compare.outcome == 'failure' | |
uses: actions/github-script@v6 | |
with: | |
script: | | |
const message = 'There is a difference in the build results.' | |
core.warning(message) | |
await github.rest.issues.createComment({ | |
issue_number: context.issue.number, | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
body: `${message} [Show More](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})` | |
}) |