name: Linter # https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request # pull_request includes [opened, reopened, synchronize] events by default # 'edited' is required for title-lint on: push: {} pull_request: types: [opened, reopened, synchronize, edited] pull_request_target: types: [opened, reopened, synchronize, edited] jobs: # https://github.com/actions/starter-workflows/blob/main/code-scanning/eslint.yml eslint-warning: name: Lint if: ${{ github.event_name == 'push' || github.event_name == 'pull_request' }} runs-on: ubuntu-latest timeout-minutes: 15 permissions: security-events: write steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8 - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 with: node-version: lts/* cache: 'pnpm' - run: pnpm i - name: Install oxlint to SARIF converter run: pnpm i -g oxlint-json-to-sarif - name: Lint run: pnpm exec oxlint --type-aware --config=.oxlintrc.ci.json --format=json | oxlint-json-to-sarif > oxlint-results.sarif continue-on-error: true - name: Upload analysis results to GitHub uses: github/codeql-action/upload-sarif@v4 with: sarif_file: oxlint-results.sarif wait-for-processing: true - name: Upload Artifact uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: path: oxlint-results.sarif # https://github.com/amannn/action-semantic-pull-request title-lint: if: ${{ github.event_name == 'pull_request_target' && github.repository == 'DIYgod/RSSHub' }} name: Validate PR title runs-on: ubuntu-slim timeout-minutes: 5 steps: - uses: amannn/action-semantic-pull-request@48f256284bd46cdaab1048c3721360e808335d50 # v6.1.1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} ignoreLabels: | dependencies wip: true labeler: name: Pull Request Labeler if: ${{ github.event_name == 'pull_request_target' && github.actor != 'dependabot[bot]' && github.repository == 'DIYgod/RSSHub' }} permissions: pull-requests: write runs-on: ubuntu-slim timeout-minutes: 5 steps: - uses: actions/labeler@f27b608878404679385c85cfa523b85ccb86e213 # v6.1.0 with: repo-token: ${{ secrets.GITHUB_TOKEN }} vouch-check-pr: name: Vouch check PR if: ${{ github.event_name == 'pull_request_target' && github.event.action == 'opened' && github.repository == 'DIYgod/RSSHub' }} permissions: contents: read issues: write pull-requests: write runs-on: ubuntu-slim timeout-minutes: 5 steps: - name: Checkout uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Check if PR author is denounced uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 with: script: | const { default: checkPr } = await import('${{ github.workspace }}/scripts/workflow/vouch/check-pr.mjs') await checkPr({ github, context, core })