ci(workflows): suggest lint fixes via reviewdog #2767
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: | |
| - main | |
| pull_request: | |
| permissions: | |
| contents: read | |
| env: | |
| FORCE_COLOR: 3 | |
| jobs: | |
| format: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| with: | |
| persist-credentials: false | |
| - name: Setup Node | |
| uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 | |
| with: | |
| node-version-file: ".nvmrc" | |
| cache: npm | |
| package-manager-cache: true | |
| - run: npm ci | |
| - run: npx eslint . | |
| - run: npx prettier --check . | |
| - run: npx tsc --noEmit | |
| lint: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| with: | |
| persist-credentials: false | |
| - name: Setup Node | |
| uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 | |
| with: | |
| node-version-file: ".nvmrc" | |
| cache: npm | |
| package-manager-cache: true | |
| - run: npm ci | |
| - name: Lint | |
| id: lint | |
| run: | | |
| LINT_FAILED=false | |
| npm run lint -- --fail-on-warnings || LINT_FAILED=true | |
| echo "failed=$LINT_FAILED" >> "$GITHUB_OUTPUT" | |
| - name: Fix lint issues | |
| id: lint-fix | |
| if: steps.lint.outputs.failed == 'true' | |
| run: | | |
| npm run lint:fix | |
| if [[ -n $(git diff) ]]; then | |
| echo "files_modified=true" >> "$GITHUB_OUTPUT" | |
| fi | |
| - name: Collect artifact files | |
| if: steps.lint-fix.outputs.files_modified == 'true' | |
| run: | | |
| mkdir -p lint-results | |
| git diff > lint-results/lint.diff | |
| - name: Upload artifact | |
| if: steps.lint-fix.outputs.files_modified == 'true' | |
| uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0 | |
| with: | |
| name: lint-results | |
| path: lint-results | |
| - name: Fail if lint failed | |
| if: steps.lint.outputs.failed == 'true' | |
| run: exit 1 | |
| test: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| with: | |
| persist-credentials: false | |
| - name: Setup Node | |
| uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 | |
| with: | |
| node-version-file: ".nvmrc" | |
| cache: npm | |
| package-manager-cache: true | |
| - run: npm ci | |
| - run: npm run unittest | |
| diff-build: | |
| if: github.event_name == 'pull_request' | |
| runs-on: ubuntu-latest | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.event.pull_request.number }}-diff-build | |
| cancel-in-progress: true | |
| steps: | |
| - name: Determine base ref | |
| id: base | |
| run: | | |
| if [[ "$GITHUB_HEAD_REF" == "release" ]]; then | |
| VERSION=$(npm view @mdn/browser-compat-data version) | |
| echo "ref=v$VERSION" >> "$GITHUB_OUTPUT" | |
| echo "Comparing release branch against published v$VERSION" | |
| else | |
| echo "ref=$GITHUB_BASE_REF" >> "$GITHUB_OUTPUT" | |
| echo "Comparing against base branch: $GITHUB_BASE_REF" | |
| fi | |
| # Base | |
| - name: Checkout (base) | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| with: | |
| ref: ${{ steps.base.outputs.ref }} | |
| path: base | |
| persist-credentials: false | |
| - name: Checkout (PR) | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| with: | |
| path: pr | |
| persist-credentials: false | |
| - name: Setup Node | |
| uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 | |
| with: | |
| node-version-file: pr/.nvmrc | |
| cache: npm | |
| cache-dependency-path: | | |
| base/package-lock.json | |
| pr/package-lock.json | |
| package-manager-cache: true | |
| - name: Install | |
| run: | | |
| # sed command prefixes each line of output with [base] or [pr] | |
| cd base && npm ci | sed "s/^/[base] /" & | |
| cd pr && npm ci | sed "s/^/[pr] /" & | |
| wait | |
| - name: Format | |
| run: | | |
| # sed command prefixes each line of output with [base] or [pr] | |
| cd base/build && npx prettier --write . | sed "s/^/[base] /" & | |
| cd pr/build && npx prettier --write . | sed "s/^/[pr] /" & | |
| wait | |
| - name: Diff | |
| run: git diff --color=always --no-index base/build/ pr/build/ || true |