• Stars
    star
    436
  • Rank 99,877 (Top 2 %)
  • Language
  • License
    MIT License
  • Created over 5 years ago
  • Updated 6 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

a GitHub action to run `pre-commit`

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/[email protected]

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/[email protected]
      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.

More Repositories

1

pre-commit

A framework for managing and maintaining multi-language pre-commit hooks.
Python
12,636
star
2

pre-commit-hooks

Some out-of-the-box hooks for pre-commit
Python
5,173
star
3

mirrors-mypy

Mirror of mypy for pre-commit
Python
264
star
4

identify

File identification library for Python
Python
246
star
5

pygrep-hooks

A collection of fast, cheap, regex based pre-commit hooks.
Python
209
star
6

pre-commit.com

Python
190
star
7

mirrors-prettier

mirror of the `prettier` npm package for pre-commit
126
star
8

demo-repo

Ruby
77
star
9

mirrors-eslint

Mirror of eslint node package for pre-commit.
64
star
10

pre-commit-mirror-maker

Scripts for creating mirror repositories that do not have .pre-commit-hooks.yaml
Python
39
star
11

mirrors-clang-format

mirror of https://github.com/ssciwr/clang-format-wheel for pre-commit
Python
38
star
12

mirrors-isort

Mirror of the isort package for pre-commit.
Python
37
star
13

mirrors-autopep8

Mirror of the autopep8 package for pre-commit
Python
31
star
14

mirrors-yapf

Mirror of the yapf package for pre-commit
Python
30
star
15

mirrors-pylint

Mirror of pylint package for pre-commit.
Python
14
star
16

mirrors-puppet-lint

Mirror of puppet-lint gem for pre-commit.
Ruby
7
star
17

pre-commit-docker-flake8

Proof of concept using docker pre-commit hooks
7
star
18

sync-pre-commit-deps

Sync pre-commit hook dependencies based on other installed hooks
Python
7
star
19

mirrors-scss-lint

Mirror of scss-lint gem for pre-commit.
Ruby
4
star
20

pre-commit-installed

runs `pre-commit install` on installation (terrible hack)
Python
4
star
21

mirrors-csslint

Mirror of csslint package for pre-commit.
3
star
22

mirrors-ruby-lint

Mirror of ruby-lint gem for pre-commit.
Ruby
3
star
23

mirrors-jshint

Mirror of jshint package for pre-commit.
3
star
24

mirrors-fixmyjs

Mirror of fixmyjs package for pre-commit.
3
star
25

mirrors-coffeelint

Mirror of coffeelint node package for pre-commit.
2
star
26

demo-repo-universe

Python
2
star
27

.github

centralized github metadata for pre-commit
1
star
28

cron-mirror-creation

A travis-ci cron for updating pre-commit mirrors
Python
1
star