name: Code Style Check on: [push, pull_request_target] jobs: eslint_check_upload: runs-on: ubuntu-latest name: ESLint Check and Report Upload steps: - uses: actions/checkout@v3 with: repository: ${{ github.event.pull_request.head.repo.full_name }} ref: ${{ github.head_ref }} - name: Setup Node uses: actions/setup-node@v3 with: node-version: 16 cache: 'yarn' - name: Install Dependencies run: yarn install --frozen-lockfile - name: Build Packages run: NODE_OPTIONS='--max-old-space-size=4096' yarn build:all - name: Eslint Check run: yarn turbo run lint - name: Save Code Linting Report JSON run: yarn lint:report # Continue to the next step even if this fails continue-on-error: true - name: Upload ESLint Report uses: actions/upload-artifact@v3 with: name: eslint_report.json path: eslint_report.json annotation: # Skip the annotation action in push events if: github.event_name == 'pull_request_target' needs: eslint_check_upload runs-on: ubuntu-latest name: ESLint Annotation steps: - uses: actions/download-artifact@v3 with: name: eslint_report.json - name: Annotate Code Linting Results uses: ataylorme/eslint-annotate-action@v2 with: repo-token: '${{ secrets.GITHUB_TOKEN }}' report-json: 'eslint_report.json' prettier_check: # In the forked PR, it's hard to format code and push to the branch directly, so the action only check the format correctness. if: github.event_name != 'push' && github.event.pull_request.head.repo.full_name != 'rrweb-io/rrweb' runs-on: ubuntu-latest name: Format Check steps: - uses: actions/checkout@v3 with: repository: ${{ github.event.pull_request.head.repo.full_name }} ref: ${{ github.head_ref }} - name: Setup Node uses: actions/setup-node@v3 with: node-version: 16 cache: 'yarn' - name: Install Dependencies run: yarn install --frozen-lockfile - name: Prettier Check run: yarn prettier --check '**/*.{ts,md}' prettier: # Skip the format code action in forked PRs if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name == 'rrweb-io/rrweb' runs-on: ubuntu-latest name: Format Code steps: - uses: actions/checkout@v3 with: repository: ${{ github.event.pull_request.head.repo.full_name }} ref: ${{ github.head_ref }} - name: Setup Node uses: actions/setup-node@v3 with: node-version: 16 cache: 'yarn' - name: Install Dependencies run: yarn install --frozen-lockfile - name: Prettify Code run: yarn prettier --write '**/*.{ts,md}' - name: Commit Changes uses: stefanzweifel/git-auto-commit-action@v4 with: commit_message: Apply formatting changes branch: ${{ github.head_ref }}