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

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

## はじめに

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

チュートリアルでは、[`actions/stale` アクション](https://github.com/marketplace/actions/close-stale-issues)を使用するワークフロー ファイルをまず作成します。 次に、ニーズに合わせてワークフローをカスタマイズします。

## ワークフローの作成

1. このプロジェクト管理ワークフローを適用したいリポジトリを選択してください。 書き込みアクセス権を持つ既存のリポジトリを利用することも、新しいリポジトリを作成することもできます。 リポジトリの作成について詳しくは、「[新しいリポジトリの作成](/ja/repositories/creating-and-managing-repositories/creating-a-new-repository)」をご覧ください。

2. リポジトリに `.github/workflows/YOUR_WORKFLOW.yml` というファイルを作成します (`YOUR_WORKFLOW` は任意の名前に置き換えます)。 これがワークフローファイルです。 GitHub での新しいファイルの作成について詳しくは、「[新しいファイルの作成](/ja/repositories/working-with-files/managing-files/creating-new-files)」をご覧ください。

3. 次の YAML コンテンツをワークフローファイルにコピーします。

   ```yaml copy
   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@v10
           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 に実行されます。 スケジュールされたワークフローについて詳しくは、「[ワークフローをトリガーするイベント](/ja/actions/using-workflows/events-that-trigger-workflows#scheduled-events)」をご覧ください。
   \*
   `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. ワークフローファイルを、リポジトリのデフォルトブランチにコミットしてください。 詳しくは、「[新しいファイルの作成](/ja/repositories/working-with-files/managing-files/creating-new-files)」をご覧ください。

## 予想される結果

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

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

ワークフローの実行履歴を表示して、このワークフローが定期的に実行されているかどうかを確認できます。 詳しくは、「[ワークフロー実行の履歴を表示する](/ja/actions/monitoring-and-troubleshooting-workflows/viewing-workflow-run-history)」をご覧ください。

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

## 次の手順

* 非アクティブな pull request のクローズ、特定のラベルやマイルストーンに関する issue の無視、特定のラベルに関する issue のみの確認など、`actions/stale` アクションで実行できるその他の操作の詳細については、[`actions/stale` アクションのドキュメント](https://github.com/marketplace/actions/close-stale-issues)を参照してください。
* [GitHub を検索](https://github.com/search?q=%22uses%3A+actions%2Fstale%22\&type=code)して、このアクションを使用したワークフローの例を探してください。