5
0
Fork 0
mirror of https://github.com/pre-commit/action.git synced 2025-11-09 19:46:55 +00:00
pre-commit-action/README.md
2020-10-17 12:21:41 +02:00

2.2 KiB
Raw Blame History

Build Status

pre-commit/action

A GitHub action to run pre-commit

How to

Setup

To use this action, make a file .github/workflows/pre-commit.yml. The following template will get you started:

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):

    - 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:

    - uses: actions/checkout@v2
      with:
        fetch-depth: 0

Next is passing the token to the pre-commit action:

    - uses: pre-commit/action@v2.0.0
      with:
        token: ${{ secrets.GITHUB_TOKEN }}

Note that secrets.GITHUB_TOKEN is automatically provisioned 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!