5
0
Fork 0
mirror of https://github.com/pre-commit/action.git synced 2025-11-10 03:56:55 +00:00

Added troubleshooting initial

This commit is contained in:
BastianZim 2020-10-17 13:05:33 +02:00
parent 6b8eaeddbd
commit 9ae1c1250a

View file

@ -36,11 +36,9 @@ This does a few things:
### 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`.
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):
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
@ -50,14 +48,11 @@ the files (use the template above except for the `pre-commit` 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.
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:
First is the checkout step, which needs to use unlimited fetch depth for pushing:
```yaml
- uses: actions/checkout@v2
@ -65,7 +60,7 @@ pushing:
fetch-depth: 0
```
Next is passing the token to the pre-commit action:
Next is passing the token to the `pre-commit` action:
```yaml
- uses: pre-commit/action@v2.0.0
@ -76,7 +71,31 @@ Next is passing the token to the pre-commit action:
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)!
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)!
## Troubleshooting
1. Changes aren't commited.
1. The _push back_ behaviour is only enabled for pull requests, not for pushes directly to branches.
Make sure that your `.github/workflows/pre-commit.yml` contains at least
```YAML
on:
pull_request:
```
2. Your pre-commit actions contain a conflict.
If `pre-commit` fails on the second invocation it can't push to the branch because GitHub actions does not fire on pushes made by GitHub actions So instead it marks the job as failed.
_Example:_ Running `double-quote-string-fixer` and `black` will cause the action to fail since both will format strings differently (Unless you pass `-S [skip-string-normalization]` to `black`) and will prevent them from reaching an agreement.
2. Actions cannot write to file.
**Error**:
```bash
! [remote rejected] HEAD -> test (refusing to allow a GitHub App to create or update workflow `.github/workflows/pre-commit.yml` without `workflows` permission)
```
This happens when the action is trying to change a workflow file and is prohibited by [GitHub](https://github.community/t/refusing-to-allow-an-integration-to-create-or-update/16326/2).
**Fix:**
Exclude the workflow file from the action through top level [`exclude`](https://pre-commit.com/#top_level-exclude) or hook level [`exclude`](https://pre-commit.com/#config-exclude).
**Example regex for top level**
```YAML
exclude: '.github/workflows/.*?\.yml'
``