* fix: rewrite relative URLs when syncing to GitHub discussion Relative URLs back to supabse.com won't work in GitHub discussions, so rewrite them back to absolute URLs starting with https://supabase.com * fix: replace all supabase urls with relative urls * chore: add linting for relative urls * chore: bump linter version * Prettier --------- Co-authored-by: Chris Chinchilla <chris.ward@supabase.io>
108 lines
4.1 KiB
YAML
108 lines
4.1 KiB
YAML
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: blacksmith-4vcpu-ubuntu-2404
|
|
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: 301e0d4b35f8f0c8553b4e93917b8b2685ef2627
|
|
- 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 301e0d4b35f8f0c8553b4e93917b8b2685ef2627
|
|
- 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
|