🌐

GitHub Actionsを利用して、非アクティブなIssueを自動でクローズする

2021/08/31に公開

GitHub Actions の actions/stale を利用すると、非アクティブなIssueを自動でクローズすることが出来ます。

actions/stale での流れは下記のような形になります。

  • 一定期間非アクティブだったIssueにコメントし参加者にアクションを促す
  • その後一定期間たっても追加のアクティビティが無かった場合クローズ

実際に自分のプロジェクトに導入してみます。

設定内容

リポジトリに .github/workflows/stale-issues.yml というファイルでワークフローを追加しました。

name: Close inactive issues
on:
  schedule:
    - cron: "30 1 * * *"

jobs:
  close-issues:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/stale@v4
        with:
          repo-token: ${{ secrets.GITHUB_TOKEN }}
          stale-issue-message: "This issue is stale because it has been open for 60 days with no activity."
          close-issue-message: "This issue was closed because it has been inactive for 14 days since being marked as stale."
          stale-issue-label: "stale"
          exempt-issue-labels: 'bug,enhancement'
          days-before-issue-stale: 60
          days-before-issue-close: 14
          days-before-pr-stale: -1
          days-before-pr-close: -1

以下は各項目の説明です。

  • on.schedule.cron で実行日時を指定します。"30 1 * * *" とすると毎日1:30(UTC)に実行されることになります。
  • days-before-issue-stale の日数アクティビティが無い場合に、 stale-issue-label で指定したラベルを付け、 stale-issue-message をコメントとして書き込みます。
    • exempt-issue-labels で指定したラベルが付いているものは対象外になります。
  • さらに days-before-issue-close の日数アクティビティが無い場合に、チケットをクローズし close-issue-message をコメントとして書き込みます。
  • actions/stale では Pull Request も閉じることが出来ますが、今回はPull Requestは対象外とするので、 days-before-pr-stale days-before-pr-close-1 を指定しています。

動作結果

下記のように順番に処理されていきました。(導入時点で60日オーバでラベル設定、その後14日後にクローズ)

コメント

おわりに

放置されたIssueを一つ一つ閉じるの面倒だったので、これで一気に閉じれて助かりました。
今後も放置状態のIssueに対して機械的に処理していけるので、精神的にも良いなと思っています。

Discussion