Descrição do problema
O job linter do GitHub Actions executa o pre-commit sobre todos os arquivos do repositório, mesmo quando a pull request altera apenas um conjunto limitado de arquivos.
A action pre-commit/action@v3.0.0 utiliza --all-files por padrão. Como o repositório possui arquivos preexistentes com espaços em branco ao final das linhas e sem quebra de linha no final, os hooks trailing-whitespace e end-of-file-fixer modificam centenas de arquivos e encerram o job com erro.
Com isso, qualquer pull request pode apresentar falha no linter por problemas que não foram introduzidos por ela. As execuções recentes da própria branch main também apresentam esse comportamento.
Passos para reproduzir o problema
- Crie uma branch a partir do repositório.
- Altere somente um arquivo que já esteja de acordo com o pre-commit.
- Crie ou atualize uma pull request para a branch
main.
- Aguarde a execução do workflow
CI.
- Acesse o job
linter.
- Observe que o
pre-commit analisa e tenta modificar arquivos não alterados pela pull request.
- Observe a falha dos hooks
trailing-whitespace e end-of-file-fixer, com alterações sugeridas em arquivos de diferentes aplicações, templates, fixtures, assets e arquivos gerados.
Exemplo observado na PR #1460:
https://github.com/scieloorg/core/actions/runs/30858328115/job/91834442803
Comportamento esperado
O linter deve verificar somente os arquivos alterados pela pull request ou pelo push que iniciou o workflow.
Em pull requests, o pre-commit deve comparar o commit-base da PR com o commit mais recente do branch de origem. Em pushes para main, deve comparar o estado anterior do branch com o novo commit.
Uma possível configuração é realizar o checkout com histórico completo:
- name: Checkout Code Repository
uses: actions/checkout@v3
with:
fetch-depth: 0
E executar o pre-commit somente no intervalo correspondente ao evento:
- name: Run pre-commit
uses: pre-commit/action@v3.0.0
with:
extra_args: >-
--from-ref
${{ github.event.pull_request.base.sha || github.event.before }}
--to-ref
${{ github.event.pull_request.head.sha || github.sha }}
Os problemas preexistentes no restante do repositório devem ser corrigidos separadamente, em uma pull request específica de normalização, sem bloquear alterações não relacionadas.
Screenshots ou vídeos
N/A
Anexos
N/A
Ambiente utilizado
- GitHub Actions
- Runner
ubuntu-latest
pre-commit/action@v3.0.0
- Python 3.9 configurado no job
linter
- Hooks que provocam a falha:
trailing-whitespace
end-of-file-fixer
Descrição do problema
O job
linterdo GitHub Actions executa opre-commitsobre todos os arquivos do repositório, mesmo quando a pull request altera apenas um conjunto limitado de arquivos.A action
pre-commit/action@v3.0.0utiliza--all-filespor padrão. Como o repositório possui arquivos preexistentes com espaços em branco ao final das linhas e sem quebra de linha no final, os hookstrailing-whitespaceeend-of-file-fixermodificam centenas de arquivos e encerram o job com erro.Com isso, qualquer pull request pode apresentar falha no linter por problemas que não foram introduzidos por ela. As execuções recentes da própria branch
maintambém apresentam esse comportamento.Passos para reproduzir o problema
main.CI.linter.pre-commitanalisa e tenta modificar arquivos não alterados pela pull request.trailing-whitespaceeend-of-file-fixer, com alterações sugeridas em arquivos de diferentes aplicações, templates, fixtures, assets e arquivos gerados.Exemplo observado na PR #1460:
https://github.com/scieloorg/core/actions/runs/30858328115/job/91834442803
Comportamento esperado
O linter deve verificar somente os arquivos alterados pela pull request ou pelo push que iniciou o workflow.
Em pull requests, o
pre-commitdeve comparar o commit-base da PR com o commit mais recente do branch de origem. Em pushes paramain, deve comparar o estado anterior do branch com o novo commit.Uma possível configuração é realizar o checkout com histórico completo:
E executar o pre-commit somente no intervalo correspondente ao evento:
Os problemas preexistentes no restante do repositório devem ser corrigidos separadamente, em uma pull request específica de normalização, sem bloquear alterações não relacionadas.
Screenshots ou vídeos
N/A
Anexos
N/A
Ambiente utilizado
ubuntu-latestpre-commit/action@v3.0.0lintertrailing-whitespaceend-of-file-fixer