pre-commit ci

a continuous integration service for the pre-commit framework

Developers spend a fair chunk of time during their development flow on fixing relatively trivial problems in their code. pre-commit.ci both enforces that these issues are discovered (which is opt-in for each developer's workflow via pre-commit) but also fixes the issues automatically, letting developers focus their time on more valuable problems.
Sign In With GitHub

features


supported hosting platforms: currently only GitHub is supported, more to come in the future!

configuration: zero configuration setup -- nothing is needed beyond the .pre-commit-config.yaml file you already have!

auto fixing pull requests: if tools make changes to files during a pull request, pre-commit.ci will automatically fix the pull request.

pre-commit.ci will run on all pull request commits, but will not push for commits made by bots.

pre-commit.ci auto fixing a pull request

speed: much faster than comparable, free CI systems

chart comparing CI speeds

caching: tool caching is baked in and shared across all users. this means that the more users there are of pre-commit.ci, the more likely you will get faster builds!

pre-commit.ci build output

automatic updates: pre-commit.ci will periodically autoupdate your configuration ensuring that your hook versions are kept up to date. this autoupdate is currently scheduled weekly at approximately 16:00 UTC Monday.

here is an example autoupdate pull request.

pre-commit.ci auto updating a repository

re-running a pull request: you can trigger a re-run on a pull request by commenting pre-commit.ci run (must appear on a line by itself). alternatively, one can attach a pre-commit.ci run label to the pull request.

skipping push runs: skip a run by putting [skip ci], [ci skip], [skip pre-commit.ci], or [pre-commit.ci skip] in the commit message.

configuration

pre-commit.ci is configured in .pre-commit-config.yaml in the ci: section.

note: ci: configuration is entirely optional and will assume the defaults below.

autofix_commit_msg

(optional, default: '[pre-commit.ci] auto fixes [...]') custom commit message for PR autofixes.

autofix_prs

(optional, default: true) whether to autofix pull requests. when disabled, comment / label "pre-commit.ci autofix" to a pull request to manually trigger auto-fixing.

autoupdate_branch

(optional: default '') branch to send autoupdate PRs to.

by default, pre-commit.ci will update the default branch of the repository.

this configuration option and other autoupdate settings will be read from the .pre-commit-config.yaml in the default branch of the repository.

autoupdate_commit_msg

(optional, default: '[pre-commit.ci] pre-commit autoupdate') custom commit message for autoupdate PRs.

autoupdate_schedule

(optional, default: 'weekly') control when the autoupdate runs, possible values: 'weekly', 'monthly', 'quarterly'.

skip

(optional, default: []) a list of hook ids to skip only in pre-commit.ci

for example:

ci:
    skip: [pylint]

repos:
-   repo: local
    hooks:
    -   id: pylint
        # ...

this is equivalent to running SKIP=pylint pre-commit ...

submodules

(optional, default: false) whether to recursively check out submodules

a full config with all the defaults:

ci:
    autofix_commit_msg: |
        [pre-commit.ci] auto fixes from pre-commit.com hooks

        for more information, see https://pre-commit.ci
    autofix_prs: true
    autoupdate_branch: ''
    autoupdate_commit_msg: '[pre-commit.ci] pre-commit autoupdate'
    autoupdate_schedule: weekly
    skip: []
    submodules: false

alternative using github actions


pre-commit.ci also provides a lite version which adds auto fixing to GitHub actions.

pricing


pre-commit.ci will always be free for open source repositories.

all paid plans also include pre-commit.ci lite pro at no additional cost.

for private and organization repository support see the GitHub Marketplace.

for single-tenant or larger installations, contact [email protected].

following the development


sponsoring


if you'd like to support the development there are two ways to sponsor: