Skip to main content

Закрытие неактивных проблем

Вы можете использовать GitHub Actions, чтобы добавлять комментарии о проблемах или закрывать проблемы, которые были неактивны в течение определенного периода времени.

Введение

В этом руководстве показано, как использовать действие actions/stale для добавления комментариев и закрытия проблем, которые были неактивны в течение определенного периода времени. Например, если проблема была неактивна в течение 30 дней, можно оставить комментарий, чтобы побудить участников к действию. Если через 14 дней после этого никакие действия выполнены не будут, можно закрыть проблему.

В этом руководстве вы сначала создадите файл рабочего процесса, использующий действие actions/stale. Затем вы настроите рабочий процесс в соответствии с вашими потребностями.

Создание рабочего процесса

  1. Выберите репозиторий, в котором вы хотите применить этот рабочий процесс управления проектами. Вы можете использовать существующий репозиторий, к которому у вас есть доступ для записи, или создать репозиторий. Дополнительные сведения о создании репозитория см. в разделе "Создание репозитория".

  2. В репозитории создайте файл с именем .github/workflows/YOUR_WORKFLOW.yml, где YOUR_WORKFLOW — это любое имя на ваш выбор. Это файл рабочего процесса. Дополнительные сведения о создании новых файлов на сайте GitHub см. в разделе "Создание новых файлов".

  3. Скопируйте следующее содержимое YAML в файл рабочего процесса.

    YAML
    name: Close inactive issues
    on:
      schedule:
        - cron: "30 1 * * *"
    
    jobs:
      close-issues:
        runs-on: ubuntu-latest
        permissions:
          issues: write
          pull-requests: write
        steps:
          - uses: actions/stale@v5
            with:
              days-before-issue-stale: 30
              days-before-issue-close: 14
              stale-issue-label: "stale"
              stale-issue-message: "This issue is stale because it has been open for 30 days with no activity."
              close-issue-message: "This issue was closed because it has been inactive for 14 days since being marked as stale."
              days-before-pr-stale: -1
              days-before-pr-close: -1
              repo-token: ${{ secrets.GITHUB_TOKEN }}
    
  4. Настройте параметры в файле рабочего процесса.

    • Измените значение для on.schedule, чтобы определить время выполнения рабочего процесса. В приведенном выше примере рабочий процесс будет выполняться каждый день в 1:30 (в формате UTC). Дополнительные сведения о запланированных рабочих процессах см. в разделе События, инициирующие рабочие процессы.
    • Измените значение для days-before-issue-stale на количество дней бездействия до того, как действие actions/stale применит метку к проблеме. Чтобы это действие никогда не применяло метки к проблемам, задайте значение -1.
    • Измените значение для days-before-issue-close на количество дней бездействия до того, как действие actions/stale закроет проблему. Чтобы это действие никогда не закрывало проблемы, задайте значение -1.
    • Измените значение для stale-issue-label на метку, применяемую к проблемам, которые были неактивны в течение указанного времени, указанного days-before-issue-stale.
    • Измените значение stale-issue-message на комментарий, добавляемый к проблемам, которые помечены действием actions/stale.
    • Измените значение для close-issue-message на комментарий, добавляемый к проблемам, которые закрыты действием actions/stale.
  5. Зафиксируйте файл рабочего процесса в ветви по умолчанию вашего репозитория. Дополнительные сведения см. в разделе Создание новых файлов.

Ожидаемые результаты

В зависимости от параметра schedule (например, каждый день в 1:30 (в формате UTC)) рабочий процесс будет обнаруживать проблемы, которые были неактивны в течение указанного периода времени, и будет добавлять указанный комментарий и метку. Кроме того, рабочий процесс будет закрывать все ранее помеченные проблемы, если в течение указанного периода времени не произошло никаких дополнительных действий.

Note

Событие schedule может быть отложено в периоды высокой нагрузки рабочих процессов GitHub Actions. К периодам высокой загрузки относится начало каждого часа. Если загрузка достаточно высока, некоторые задания в очереди могут быть удалены. Чтобы уменьшить вероятность задержки, запланируйте выполнение рабочего процесса в другое время часа.

Чтобы периодически отслеживать выполнение рабочего процесса, можно просматривать историю его выполнений. Дополнительные сведения см. в разделе Просмотр журнала выполнения рабочего процесса.

Во избежание превышения предела скорости, этот рабочий процесс будет помечать и (или) закрывать только 30 проблем за раз. Это поведение можно настроить с помощью параметра operations-per-run. Дополнительные сведения см. в документации по действию actions/stale.

Следующие шаги

  • Подробные сведения о том, что можно сделать с помощью действия actions/stale (например, закрывать неактивные запросы на вытягивание, игнорировать проблем с определенными метками или вехами, а также проверять проблемы только с определенными метками), см. в документации по действию actions/stale.
  • Выполните поиск в GitHub, чтобы найти примеры рабочих процессов, использующих это действие.