install the GitHub Application on the relevant repositories
add the GitHub action to your workflow as the last step in your job:
- uses: pre-commit-ci/[email protected]
if: always()
note: the step must have either the default name
or contain the text
pre-commit-ci-lite
. the application uses this to find the right workflow.
note: the step must be contained in a job which is either by itself in the workflow or is the last job to finish in the workflow.
pre-commit.ci lite only provides auto fixing of PRs, but allows the flexibility of using GitHub Actions as a runner.
feature | full | lite |
auto fixing PRs | ✅ | ✅ |
periodic automatic hook updates | ✅ | |
speed | ✅ | |
arbitrary setup ( | ✅ | |
other code modification tools | ✅ |
technically pre-commit.ci lite works for any code modification, though it was
built with pre-commit
in mind. here is an example workflow:
on:
pull_request:
push:
branches: [main, test-me-*]
jobs:
main:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: 3.x
- uses: pre-commit/[email protected]
- uses: pre-commit-ci/[email protected]
if: always()
pre-commit ci will skip pushes made by bots to prevent infinite loops.
to trigger an autofix in that scenario, set up a labeled
trigger:
--- a/.github/workflows/pre-commit.yml
+++ b/.github/workflows/pre-commit.yml
@@ -1,13 +1,19 @@
on:
pull_request:
+ types: [labeled, opened, reopened, synchronize]
push:
branches: [main, test-me-*]
jobs:
main:
+ if: "github.event.action != 'labeled' || github.event.label.name == 'pre-commit ci run'"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
+ - run: gh pr edit ${{ github.event.number }} --remove-label 'pre-commit ci run'
+ if: github.event.action == 'labeled' && github.event.label.name == 'pre-commit ci run'
+ env:
+ GH_TOKEN: ${{ github.token }}
- uses: actions/setup-python@v4
with:
python-version: 3.x
pre-commit.ci will always be free for open source repositories.
for private and organization repository support see the GitHub Marketplace.
for single-tenant or larger installations, contact [email protected].