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
Simon Li 3baaef6e8c Add example workflow to push to public PR
This uses https://docs.github.com/en/free-pro-team@latest/actions/reference/events-that-trigger-workflows#pull_request_target which is triggered by the events as `pull_request`, but the action runs in the context of the _base_ repository.
This should be safe to run as long as the workflow code does not execute any code from the PR since this would otherwise expose the `GITHUB_TOKEN`

Note this will only work if the PR submitter enables `Allow edits and access to secrets by maintainers`
2020-09-25 19:41:28 +01:00
.github/workflows Initial commit 2019-11-24 19:27:32 -08:00
.gitignore Initial commit 2019-11-24 19:27:32 -08:00
.pre-commit-config.yaml Run pre-commit autoupdate 2020-05-11 14:14:30 -07:00
action.yml Support extra_args keyword in pre-commit GitHub action 2020-05-15 08:14:38 -07:00
index.js do not save the cache if it was restored 2020-06-13 12:58:38 -07:00
LICENSE add LICENSE resolves #25 2020-05-16 09:34:36 -07:00
Makefile include the license in the release output 2020-05-22 13:06:23 -07:00
package-lock.json Bump node-fetch from 2.6.0 to 2.6.1 2020-09-12 11:09:52 +00:00
package.json embedding cache steps by using @actions/cache 2020-06-13 12:43:57 -07:00
README.md Add example workflow to push to public PR 2020-09-25 19:41:28 +01:00
webpack.config.js set mode: production to silence webpack warning 2020-05-22 14:29:06 -07:00

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

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@v2.0.0
      with:
        extra_args: flake8 --all-files

using this action 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 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.

using this action to push to public repository pull requests

This action can push to pull requests in public repositories using the pull_request_target. Remember that code in a public PR may be untrusted.

name: pre-commit

on:

  pull_request_target:

jobs:
  pre-commit:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
        with:
          repository: ${{ github.event.pull_request.head.repo.full_name }}
          # Use sha instead of ref because pre-commit attempts to checkout a branch with the same name
          # https://github.com/pre-commit/action/blob/20242c769824ac7e54269ee9242da5bfae19c1c8/index.js#L77
          ref: ${{ github.event.pull_request.head.sha }}
          fetch-depth: 0
      - uses: actions/setup-python@v2
      - uses: pre-commit/action@v2.0.0
        with:
          token: ${{ secrets.GITHUB_TOKEN }}