mirror of
https://github.com/supabase/supabase.git
synced 2026-10-09 03:15:06 +03:00
## I have read the [CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md) file. YES ## What kind of change does this PR introduce? Chore, CI hardening ## Additional context Hardens all GitHub actions to recommendations of [zizmor](https://docs.zizmor.sh/audits/) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Chores** * Disabled persistence of checkout credentials across many CI workflows to reduce credential exposure. * Upgraded GitHub App token tooling and tightened generated token permissions for automation. * Added cooldown/rate-limiting to dependency update automation to reduce update churn. * Adjusted workflow-level permissions, required secret inputs for workflow callers, and refactored some job step logic. <!-- review_stack_entry_start --> [](https://app.coderabbit.ai/change-stack/supabase/supabase/pull/46454?utm_source=github_walkthrough&utm_medium=github&utm_campaign=change_stack) <!-- review_stack_entry_end --> <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Ali Waseem <waseema393@gmail.com>
119 lines
3.7 KiB
YAML
119 lines
3.7 KiB
YAML
name: Autofix Linting Checks
|
|
|
|
on:
|
|
pull_request:
|
|
types:
|
|
- labeled
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
# Cancel old builds on new commit for same workflow + branch/PR
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
format:
|
|
name: Format PR without write credentials
|
|
runs-on: blacksmith-2vcpu-ubuntu-2404
|
|
if: ${{ github.event_name == 'pull_request' && (github.event.label.name == 'autofix') }}
|
|
outputs:
|
|
changed: ${{ steps.create-patch.outputs.changed }}
|
|
|
|
steps:
|
|
- name: Calculate number of commits
|
|
run: echo "PR_FETCH_DEPTH=$(( ${{ github.event.pull_request.commits }} + 1 ))" >> "${GITHUB_ENV}"
|
|
|
|
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
|
|
with:
|
|
repository: ${{ github.event.pull_request.head.repo.full_name }}
|
|
ref: ${{ github.event.pull_request.head.sha }}
|
|
persist-credentials: false
|
|
fetch-depth: ${{ env.PR_FETCH_DEPTH }}
|
|
sparse-checkout: |
|
|
packages
|
|
apps
|
|
patches
|
|
|
|
- uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
|
|
name: Install pnpm
|
|
|
|
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
|
|
with:
|
|
node-version-file: '.nvmrc'
|
|
cache: pnpm
|
|
|
|
- name: Install required dependencies
|
|
run: pnpm install --frozen-lockfile
|
|
|
|
- name: Run Prettier in fix mode
|
|
run: pnpm run format
|
|
|
|
- name: Create autofix patch
|
|
id: create-patch
|
|
run: |
|
|
if git diff --quiet; then
|
|
echo "changed=false" >> "$GITHUB_OUTPUT"
|
|
exit 0
|
|
fi
|
|
|
|
echo "changed=true" >> "$GITHUB_OUTPUT"
|
|
git diff --binary > autofix.patch
|
|
|
|
- name: Upload autofix patch
|
|
if: steps.create-patch.outputs.changed == 'true'
|
|
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
|
with:
|
|
name: autofix-linters-patch
|
|
path: autofix.patch
|
|
retention-days: 1
|
|
|
|
push:
|
|
name: Commit autofix updates
|
|
needs: format
|
|
runs-on: blacksmith-2vcpu-ubuntu-2404
|
|
if: >-
|
|
${{
|
|
needs.format.outputs.changed == 'true' &&
|
|
github.event.pull_request.head.repo.full_name == github.repository
|
|
}}
|
|
steps:
|
|
- name: Generate token
|
|
id: app-token
|
|
uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3.2.0
|
|
with:
|
|
client-id: ${{ vars.GH_AUTOFIX_APP_CLIENT_ID }}
|
|
private-key: ${{ secrets.GH_AUTOFIX_PRIVATE_KEY }}
|
|
permission-contents: write
|
|
|
|
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
|
|
with:
|
|
ref: ${{ github.event.pull_request.head.sha }}
|
|
persist-credentials: false
|
|
sparse-checkout: |
|
|
packages
|
|
apps
|
|
patches
|
|
|
|
- name: Download autofix patch
|
|
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
|
|
with:
|
|
name: autofix-linters-patch
|
|
|
|
- name: Commit changes and push to existing branch
|
|
env:
|
|
APP_TOKEN: ${{ steps.app-token.outputs.token }}
|
|
TARGET_BRANCH: ${{ github.head_ref }}
|
|
run: |
|
|
git apply --index autofix.patch
|
|
|
|
if git diff --cached --quiet; then
|
|
exit 0
|
|
fi
|
|
|
|
git config --local user.name "supabase-autofix-bot"
|
|
git config --local user.email "noreply@supabase.com"
|
|
git commit -m "ci: Autofix updates from GitHub workflow"
|
|
git -c credential.helper= push "https://x-access-token:${APP_TOKEN}@github.com/${GITHUB_REPOSITORY}.git" "HEAD:${TARGET_BRANCH}"
|