Skip to content

Automatizar fechamento de PRs inativos usando GitHub Actions #467

@camilamaia

Description

@camilamaia

Contexto

Atualmente, o repositório não possui uma automação para lidar com PRs inativos. Isso pode causar acúmulo de contribuições abandonadas, dificultando o gerenciamento do projeto e a priorização de mudanças importantes.

Para resolver isso, será utilizada a ação Stale do GitHub Actions documentação oficial com as configurações padrão:

  1. Adiciona um rótulo "Stale" em PRs após 60 dias de inatividade e adiciona um comentário.
  2. Fecha automaticamente PRs após 7 dias de inatividade adicional (após a adição do rótulo).
  3. Remove o rótulo "Stale" caso haja qualquer atualização (comentários ou commits), reiniciando o cronômetro.

Motivação

Automatizar o gerenciamento de PRs inativos ajuda a:

  • Manter o repositório organizado.
  • Melhorar a comunicação com contribuidores, destacando os PRs ativos e inativos.
  • Reduzir o esforço manual dos mantenedores ao fechar PRs abandonados automaticamente.

Solução Proposta

Configuração

  1. Criar um arquivo no diretório .github/workflows chamado stale.yml.
  2. Adicionar algo como o seguinte conteúdo (não o testei para ver se funciona de fato. Serve mais para dar uma direção. Fique à vontade para adaptar como preferir):
name: 'Mark stale pull requests'  

on:  
  schedule:  
    - cron: '0 0 * * *' # runs daily

permissions:  
  pull-requests: write  

jobs:  
  stale:  
    runs-on: ubuntu-latest  
    steps:  
      - uses: actions/stale@v9  
        with:  
          repo-token: ${{ secrets.GITHUB_TOKEN }}  
          stale-pr-message: >  
            [PT-BR] Este PR está inativo há muito tempo. Caso não seja atualizado, será fechado em 7 dias.  
            [EN] This PR has been inactive for a long time. If no updates are made, it will be closed in 7 days.  
          days-before-stale: 60  
          days-before-close: 7  
          stale-label: 'Stale'  
          remove-stale-when-updated: true  
          close-pr-message: >  
            [PT-BR] Este PR foi fechado devido à inatividade. Caso ainda seja relevante, por favor, reabra ou crie um novo PR.  
            [EN] This PR has been closed due to inactivity. If it is still relevant, please reopen or create a new PR.  

Como Testar

Testar em um branch separado

  1. Crie um branch de teste no repositório e adicione o arquivo stale.yml.
  2. Para testar sem esperar os dias configurados, altere os valores days-before-stale e days-before-close para valores menores (por exemplo, 1 e 1):
days-before-stale: 1  
days-before-close: 1  
  1. Certifique-se de criar ou identificar um PR que possa ser usado para o teste.
  2. Aguarde o período configurado para verificar se o workflow está funcionando como esperado.
  3. Lembre-se de restaurar os valores corretos (60 e 7) antes de abrir o PR para a branch principal.

Testar manualmente com workflow_dispatch

  1. No arquivo .yml, adicione o evento de disparo manual:
on:  
  workflow_dispatch:  
  1. Execute manualmente o workflow através da interface do GitHub Actions. Consulte a documentação do GitHub sobre workflow_dispatch para instruções detalhadas.
  2. Observe os logs e os resultados para garantir que a ação está funcionando como esperado.

Links úteis

Metadata

Metadata

Labels

ci/cdrepo managementRelated to organize issues, prs, discussions, sprints, events.

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions