[pull] master from supabase:master #1913
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: docs_lint | |
| # Runs the docs linter on PRs that edit docs content. | |
| # There are two branches of this workflow for internal and external PRs, due | |
| # to the security design of GitHub Actions. | |
| # | |
| # Internal PRs: | |
| # Have write permissions, so comments are written directly by reviewdog. | |
| # | |
| # External PRs: | |
| # Have read-only permissions, so lint results are uploaded as an artifact, to | |
| # be written to the PR in a subsequent workflow_run action that has write | |
| # permissions. See ./docs/lint-v2-comment.yml. | |
| # | |
| # See https://securitylab.github.com/resources/github-actions-preventing-pwn-requests/ | |
| on: | |
| pull_request: | |
| env: | |
| CARGO_NET_GIT_FETCH_WITH_CLI: true | |
| permissions: | |
| pull-requests: write | |
| jobs: | |
| supa-mdx-lint: | |
| name: supa-mdx-lint | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| sparse-checkout: | | |
| supa-mdx-lint.config.toml | |
| supa-mdx-lint | |
| apps/docs/content | |
| - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 #v3.0.2 | |
| id: filter | |
| with: | |
| filters: | | |
| docs: | |
| - 'apps/docs/content/**' | |
| - 'supa-mdx-lint/**' | |
| - 'supa-mdx-lint.config.toml' | |
| - name: cache cargo | |
| id: cache-cargo | |
| if: steps.filter.outputs.docs == 'true' | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.cargo/bin/ | |
| ~/.cargo/registry/index/ | |
| ~/.cargo/registry/cache/ | |
| ~/.cargo/git/db/ | |
| key: 3186b58a532c98d7f470f2b887c2b74a086d5f2e | |
| - name: install linter | |
| if: steps.filter.outputs.docs == 'true' && steps.cache-cargo.outputs.cache-hit != 'true' | |
| run: cargo install --locked --git https://github.com/supabase-community/supa-mdx-lint --rev 3186b58a532c98d7f470f2b887c2b74a086d5f2e | |
| - name: install reviewdog | |
| if: steps.filter.outputs.docs == 'true' | |
| uses: reviewdog/action-setup@3f401fe1d58fe77e10d665ab713057375e39b887 # v1.3.0 | |
| with: | |
| reviewdog_version: v0.20.2 | |
| - name: run linter (internal) | |
| if: steps.filter.outputs.docs == 'true' && github.event.pull_request.head.repo.full_name == github.repository | |
| env: | |
| BASE_REF: ${{ github.base_ref }} | |
| REVIEWDOG_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| set -o pipefail | |
| git diff --name-only "origin/$BASE_REF" HEAD \ | |
| | { grep -E "^apps/docs/content/" || test $? = 1; } \ | |
| | xargs -r supa-mdx-lint --format rdf \ | |
| | reviewdog -f=rdjsonl -reporter=github-pr-review -tee | |
| - id: external_lint | |
| name: run linter (external) | |
| if: steps.filter.outputs.docs == 'true' && github.event.pull_request.head.repo.full_name != github.repository | |
| env: | |
| BASE_REF: ${{ github.base_ref }} | |
| PR_NUMBER: ${{ github.event.pull_request.number }} | |
| run: | | |
| set -o pipefail | |
| run_lints() { | |
| git diff --name-only "origin/$BASE_REF" HEAD \ | |
| | { grep -E "^apps/docs/content/" || test $? = 1; } \ | |
| | xargs -rx -n 1000000000 supa-mdx-lint --format markdown | |
| } | |
| set +e | |
| LINT_RESULTS=$(run_lints) | |
| LINT_EXIT_CODE=$? | |
| set -e | |
| echo "LINT_EXIT_CODE=$LINT_EXIT_CODE" >> $GITHUB_OUTPUT | |
| if [[ $LINT_EXIT_CODE -ne 0 ]]; then | |
| mkdir -p ./__github_actions__pr | |
| echo "${{ github.event.number }}" > ./__github_actions__pr/pr_number.txt | |
| echo "$LINT_RESULTS" > ./__github_actions__pr/lint_results.txt | |
| fi | |
| - name: save results as artifact (external) | |
| if: steps.filter.outputs.docs == 'true' && github.event.pull_request.head.repo.full_name != github.repository && steps.external_lint.outputs.LINT_EXIT_CODE != 0 | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: lint_results | |
| path: __github_actions__pr/ | |
| - name: fail if linter fails (external) | |
| if: steps.filter.outputs.docs == 'true' && github.event.pull_request.head.repo.full_name != github.repository && steps.external_lint.outputs.LINT_EXIT_CODE != 0 | |
| run: exit 1 |