🌐
GitHub Actionsを利用して、非アクティブなIssueを自動でクローズする
GitHub Actions の actions/stale を利用すると、非アクティブなIssueを自動でクローズすることが出来ます。
- 非アクティブな Issue をクローズする - GitHub Docs
- actions/stale: Marks issues and pull requests that have not had recent interaction
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