Skip to main content

Enterprise Server 3.16 は、現在リリース候補として使用できます。

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

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

Note

GitHub ホステッド ランナーは、現在 GitHub Enterprise Server ではサポートされていません。 GitHub public roadmap で、今後の計画的なサポートの詳細を確認できます。

はじめに

このチュートリアルでは、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@v9
            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 をすべてクローズします。

Note

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

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

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

次の手順

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