Skip to main content

非アクティブな Issue をクローズする

GitHub Actions を使用して、一定期間、非アクティブであった Issue にコメントしたり、Issue をクローズしたりすることができます。

はじめに

このチュートリアルでは、actions/stale アクションを使用して、一定期間非アクティブだった issue にコメントを付けてクローズする方法について説明します。 たとえば、Issueが 30 日間非アクティブであった場合にコメントして、参加者にアクションを実行するように促すことができます。 その後、14 日以上経っても追加のアクティビティが発生しない場合は、Issue をクローズできます。

チュートリアルでは、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 アクションが issue のラベルを付ける前のアクティビティのない日数に変更します。 このアクションで issue にラベルを付けない場合は、この値を -1 に設定します。
    • days-before-issue-close の値を、actions/stale アクションが issue をクローズする前のアクティビティのない日数に変更します。 このアクションで issue をクローズしない場合は、この値を -1 に設定します。
    • stale-issue-label の値を、days-before-issue-stale で指定した期間非アクティブだった issue に適用するラベルに変更します。
    • stale-issue-message の値を、actions/stale アクションによってラベル付けされた issue に追加するコメントに変更します。
    • close-issue-message の値を、actions/stale アクションによってクローズされた issue に追加するコメントに変更します。
  5. ワークフローファイルを、リポジトリのデフォルトブランチにコミットしてください。 詳しくは、「新しいファイルの作成」を参照してください。

予想される結果

schedule パラメーター (たとえば、毎日 1:30 UTC) に基づいて、ワークフローは指定された期間非アクティブであった issue を検出し、指定されたコメントとラベルを追加します。 さらに、指定された期間に追加のアクティビティが発生しなかった場合、ワークフローは以前にラベル付けされた Issue をすべてクローズします。

注: GitHub Actions のワークフローの実行によって高い負荷がかかっている間、schedule イベントが遅延する可能性があります。 高負荷の時間帯には、毎時の開始時点が含まれます。 負荷が十分に高い場合、キューに登録されたジョブの一部が削除される可能性があります。 遅延の可能性を減らすために、Ⅰ時間の中の別の時間帯に実行されるようワークフローをスケジューリングしてください。

ワークフローの実行履歴を表示して、このワークフローが定期的に実行されているかどうかを確認できます。 詳しくは、「ワークフロー実行の履歴を表示する」を参照してください。

このワークフローでは、レート制限を超えないように、一度に 30 件の issue にのみラベルを付けたりクローズしたりします。 operations-per-run 設定を使用してこれを構成できます。 詳細については、actions/stale アクションのドキュメントを参照してください。

次の手順

  • 非アクティブな pull request のクローズ、特定のラベルやマイルストーンに関する issue の無視、特定のラベルに関する issue のみの確認など、actions/stale アクションで実行できるその他の操作の詳細については、actions/stale アクションのドキュメントを参照してください。
  • このアクションを使用するワークフローの例については GitHub を検索してください。