5
0
Fork 0
mirror of https://github.com/pre-commit/action.git synced 2025-11-08 19:26:54 +00:00
a GitHub action to run pre-commit
Find a file
2020-05-10 12:33:41 -04: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 Initial commit 2019-11-24 19:27:32 -08:00
action.yml allow running precommit only on changed files from a base ref 2020-05-10 12:33:41 -04:00
index.js allow running precommit only on changed files from a base ref 2020-05-10 12:33:41 -04:00
Makefile Initial commit 2019-11-24 19:27:32 -08:00
package-lock.json reinstall npm dependencies to fix security alert 2020-05-05 10:57:51 -07:00
package.json Initial commit 2019-11-24 19:27:32 -08:00
README.md allow running precommit only on changed files from a base ref 2020-05-10 12:33:41 -04:00
webpack.config.js Initial commit 2019-11-24 19:27:32 -08: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
    - name: set PY
      run: echo "::set-env name=PY::$(python -c 'import hashlib, sys;print(hashlib.sha256(sys.version.encode()+sys.executable.encode()).hexdigest())')"
    - uses: actions/cache@v1
      with:
        path: ~/.cache/pre-commit
        key: pre-commit|${{ env.PY }}|${{ hashFiles('.pre-commit-config.yaml') }}
    - uses: pre-commit/action@v1.0.1

This does a few things:

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

Hopefully in the future when actions matures the yaml can be simplified.

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.

here's an example configuration for that (use the template above except for the pre-commit action):

    - uses: pre-commit/action@v1.0.1
      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!

run precommit against changed files

to use the changed parameter, you must make sure your checkout contains enough depth to compare against.

here's an example which runs during pull requests and executes precommit against the files changed from the target branch:

name: precommit

on: [pull_request]
jobs:
  precommit:
    runs-on: ubuntu-latest
    steps:
      - name: checkout code
        uses: actions/checkout@v2
      - run: |
          git fetch --no-tags --prune --unshallow          
      - uses: actions/setup-python@v2
      - uses: pre-commit/action@v1.0.1
        with:
          changed: true
          base: ${{ github.event.pull_request.head.sha }}