5
0
Fork 0
mirror of https://github.com/pre-commit/action.git synced 2025-11-09 03:26:56 +00:00
a GitHub action to run pre-commit
Find a file
Tom Whitwell 9a134f4f53
add cache restore key and run gc in post step
This will allow us to restore all available cached hooks to reduce the
time spent "Initializing environment" on each run.

If any of the hooks are updated, the `pre-commit gc` command will remove
the now-unused hooks from ~/.cache/pre-commit, ensuring that we don't
store them in the cache indefinitely.
2025-02-14 12:47:00 +00:00
.github/workflows remove unneeded name in github actions 2022-06-11 13:18:11 -04:00
.pre-commit-config.yaml [pre-commit.ci] pre-commit autoupdate 2024-10-08 00:02:03 +00:00
action.yml add cache restore key and run gc in post step 2025-02-14 12:47:00 +00:00
LICENSE add LICENSE resolves #25 2020-05-16 09:34:36 -07:00
README.md v3.0.1 2024-02-07 09:12:24 -05:00

this action is in maintenance-only mode and will not be accepting new features.

generally you want to use pre-commit.ci which is faster and has more features.


pre-commit.ci status Build Status

pre-commit/action

a GitHub action to run pre-commit

using this action

To use this action, make a file .github/workflows/pre-commit.yml. Here's a template to get started:

name: pre-commit

on:
  pull_request:
  push:
    branches: [main]

jobs:
  pre-commit:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - uses: actions/setup-python@v3
    - uses: pre-commit/action@v3.0.1

This does a few things:

  • clones the code
  • installs python
  • sets up the pre-commit cache

using this action with custom invocations

By default, this action runs all the hooks against all the files. extra_args lets users specify a single hook id and/or options to pass to pre-commit run.

Here's a sample step configuration that only runs the flake8 hook against all the files (use the template above except for the pre-commit action):

    - uses: pre-commit/action@v3.0.1
      with:
        extra_args: flake8 --all-files

using this action in private repositories

prior to v3.0.0, this action had custom behaviour which pushed changes back to the pull request when supplied with a token.

this behaviour was removed:

  • it required a PAT (didn't work with short-lived GITHUB_TOKEN)
  • properly hiding this input from the installation and execution of hooks is intractable in github actions (it is readily available as $INPUT_TOKEN)
  • this meant potentially unvetted code could access the token via the environment

you can likely achieve the same thing with an external action such as git-auto-commit-action though you may want to take precautions to clear git hooks or other ways that arbitrary code execution can occur when running git commit / git push (for example core.fsmonitor).

while unrelated to this action, pre-commit.ci avoids these problems by installing and executing isolated from the short-lived repository-scoped installation access token.