mirror of
https://github.com/supabase/supabase.git
synced 2026-05-07 09:20:21 -04:00
ci: add eslint ratcheting (#40156)
* chore: add eslint ratchet script * chore: add eslint ratchet action * refactor(ratchet script): convert to typescript * ci(ratchet script): add --decrease-baselines flag Allows us to decrease the baselines on schedule as we fix warnings * ci(ratchet): add action to decrease baseline if possible every week * chore(eslint): fix exhaustive-deps error * docs(internal): improve docs for eslint ratchet script * chore(ratchet): add new ratchet rules Add: - import/no-anonymous-default-export - @tanstack/query/exhaustive-deps - @tanstack/query/no-deprecated-options Not adding `no-restricted-exports` even though we have many violations because we first need to reconfigure it (if possible) to ignore those files where Next.js requires a default export.
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
name: Decrease studio lint ratchet baselines
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '0 0 * * SUN'
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
pull-requests: write
|
||||
|
||||
jobs:
|
||||
decrease-baselines:
|
||||
runs-on: blacksmith-4vcpu-ubuntu-2404
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
|
||||
with:
|
||||
sparse-checkout: |
|
||||
.github
|
||||
apps/studio
|
||||
packages
|
||||
|
||||
- uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
|
||||
name: Install pnpm
|
||||
with:
|
||||
run_install: false
|
||||
|
||||
- name: Use Node.js
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
|
||||
with:
|
||||
node-version-file: '.nvmrc'
|
||||
cache: 'pnpm'
|
||||
|
||||
- name: Install deps
|
||||
run: pnpm install --frozen-lockfile
|
||||
|
||||
- name: Decrease ESLint ratchet baselines and open PR
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
DEFAULT_BRANCH: ${{ github.event.repository.default_branch }}
|
||||
run: |
|
||||
set -eo pipefail
|
||||
DEFAULT_BRANCH=${DEFAULT_BRANCH:-master}
|
||||
|
||||
BRANCH="bot/decrease-eslint-ratchet-baselines"
|
||||
|
||||
git fetch origin "$DEFAULT_BRANCH" --depth=1
|
||||
if git ls-remote --exit-code --heads origin "$BRANCH" > /dev/null 2>&1; then
|
||||
git fetch origin "$BRANCH":"$BRANCH" --depth=1
|
||||
git switch "$BRANCH"
|
||||
git reset --hard "origin/$DEFAULT_BRANCH"
|
||||
else
|
||||
git switch --create "$BRANCH" "origin/$DEFAULT_BRANCH"
|
||||
fi
|
||||
|
||||
pnpm --filter studio run lint:ratchet --decrease-baselines
|
||||
|
||||
if git diff --quiet; then
|
||||
echo "No baseline updates detected."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
git config user.name 'github-actions[bot]'
|
||||
git config user.email 'github-actions[bot]@users.noreply.github.com'
|
||||
|
||||
git add apps/studio/.github/eslint-rule-baselines.json
|
||||
git commit --message "chore: decrease ESLint ratchet baselines"
|
||||
git push --force origin "$BRANCH"
|
||||
|
||||
pr_url=$(gh pr list --state open --head "$BRANCH" --json url --jq '.[0].url // ""' 2>/dev/null || echo "")
|
||||
if [ -z "$pr_url" ]; then
|
||||
gh pr create \
|
||||
--title "[bot] Decrease ESLint ratchet baselines" \
|
||||
--body "Automated weekly decrease of ESLint ratchet baselines." \
|
||||
--base "$DEFAULT_BRANCH" \
|
||||
--head "$BRANCH"
|
||||
else
|
||||
gh pr comment "$pr_url" --body "Updated ESLint ratchet baselines with the latest weekly decreases."
|
||||
fi
|
||||
Reference in New Issue
Block a user