mirror of
https://github.com/pre-commit/action.git
synced 2025-11-09 19:46:55 +00:00
82 lines
2.2 KiB
Markdown
82 lines
2.2 KiB
Markdown
[](https://github.com/pre-commit/action/actions)
|
||
|
||
pre-commit/action
|
||
=================
|
||
|
||
A GitHub action to run [pre-commit](https://pre-commit.com)
|
||
|
||
## How to
|
||
|
||
### Setup
|
||
|
||
To use this action, make a file `.github/workflows/pre-commit.yml`. The following template will get you started:
|
||
|
||
```yaml
|
||
name: pre-commit
|
||
|
||
on:
|
||
pull_request:
|
||
push:
|
||
branches: [master]
|
||
|
||
jobs:
|
||
pre-commit:
|
||
runs-on: ubuntu-latest
|
||
steps:
|
||
- uses: actions/checkout@v2
|
||
- uses: actions/setup-python@v2
|
||
- uses: pre-commit/action@v2.0.0
|
||
```
|
||
|
||
This does a few things:
|
||
|
||
- Clones the code
|
||
- Installs python
|
||
- Sets up the `pre-commit` cache
|
||
|
||
### 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):
|
||
|
||
```yaml
|
||
- uses: pre-commit/action@v2.0.0
|
||
with:
|
||
extra_args: flake8 --all-files
|
||
```
|
||
|
||
### In private repositories
|
||
|
||
This action also provides an additional behaviour when used in private
|
||
repositories. When configured with a GitHub token, the action will push back
|
||
fixes to the pull request branch.
|
||
|
||
Using the template above, you'll need to make two replacements for individual actions:
|
||
|
||
First is the checkout step, which needs to use unlimited fetch depth for
|
||
pushing:
|
||
|
||
```yaml
|
||
- uses: actions/checkout@v2
|
||
with:
|
||
fetch-depth: 0
|
||
```
|
||
|
||
Next is passing the token to the pre-commit action:
|
||
|
||
```yaml
|
||
- uses: pre-commit/action@v2.0.0
|
||
with:
|
||
token: ${{ secrets.GITHUB_TOKEN }}
|
||
```
|
||
|
||
Note that `secrets.GITHUB_TOKEN` is [automatically provisioned](https://docs.github.com/en/free-pro-team@latest/actions/reference/authentication-in-a-workflow#about-the-github_token-secret) and will not
|
||
require any special configuration.
|
||
|
||
While you could _technically_ configure this for a public repository (using a
|
||
personal access token), I can't think of a way to do this safely without
|
||
exposing a privileged token to pull requests – If you have any ideas, please
|
||
leave an [issue](https://github.com/pre-commit/action/issues)!
|