# 비활성 이슈 닫기

특정 기간 동안 비활성 상태인 문제에 대해 주석을 달거나 닫는 데 사용할 GitHub Actions 수 있습니다.

> \[!NOTE]
> GitHub Enterprise Server 호스트 실행기는 현재 GitHub에서 지원되지 않습니다.

## 소개

이 자습서에서는 [`actions/stale` 작업](https://github.com/marketplace/actions/close-stale-issues)을 사용하여 특정 기간 동안 비활성 상태였던 이슈에 주석을 달고 닫는 방법을 보여줍니다. 예를 들어 이슈가 30일 동안 비활성 상태였던 경우 주석을 달아서 참가자에게 조치를 취하라는 메시지를 표시할 수 있습니다. 그런 다음, 14일 후에도 추가 활동이 발생하지 않을 경우 이슈를 닫을 수 있습니다.

자습서에서는 먼저 [`actions/stale` 작업](https://github.com/marketplace/actions/close-stale-issues)을 사용하는 워크플로 파일을 만듭니다. 그런 다음 필요에 맞게 워크플로를 사용자 지정합니다.

## 워크플로 만들기

1. 이 프로젝트 관리 워크플로를 적용할 리포지토리를 선택합니다. 쓰기 권한이 있는 기존 리포지토리를 사용하거나 새 리포지토리를 만들 수 있습니다. 리포지토리 만들기에 대한 자세한 내용은 [새 리포지토리 만들기](/ko/enterprise-server@3.22/repositories/creating-and-managing-repositories/creating-a-new-repository)을(를) 참조하세요.

2. 리포지토리에서 `YOUR_WORKFLOW`를 선택한 이름으로 바꾸는 `.github/workflows/YOUR_WORKFLOW.yml` 파일을 만듭니다. 워크플로 파일입니다. GitHub에서 새 파일을 만드는 방법에 대한 자세한 내용은 [새 파일 만들기](/ko/enterprise-server@3.22/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에 실행됩니다. 예정된 워크플로에 대한 자세한 내용은 [워크플로를 트리거하는 이벤트](/ko/enterprise-server@3.22/actions/reference/workflows-and-actions/events-that-trigger-workflows#schedule)을(를) 참조하세요.
   * `days-before-issue-stale` 값을 `actions/stale` 작업에서 이슈에 레이블을 지정하기 전에 활동이 없었던 일수로 변경합니다. 이 작업을 통해 이슈에 레이블을 지정하지 않으려면 값을 `-1`로 설정합니다.
   * `days-before-issue-close` 값을 `actions/stale` 작업에서 이슈를 닫기 전에 활동이 없었던 일수로 변경합니다. 이 작업을 통해 이슈를 닫지 않으려면 값을 `-1`로 설정합니다.
   * `stale-issue-label` 값을 `days-before-issue-stale`로 지정된 시간 동안 비활성 상태였던 이슈에 적용할 레이블로 변경합니다.
   * `stale-issue-message` 값을 `actions/stale` 작업에서 레이블이 지정된 이슈에 추가할 주석으로 변경합니다.
   * `close-issue-message` 값을 `actions/stale` 작업에서 닫힌 이슈에 추가할 주석으로 변경합니다.

5. 워크플로 파일을 리포지토리의 기본 분기에 커밋합니다. 자세한 내용은 [새 파일 만들기](/ko/enterprise-server@3.22/repositories/working-with-files/managing-files/creating-new-files)을(를) 참조하세요.

## 예상 결과

`schedule` 매개 변수(예: 매일 1:30 UTC)에 따라 워크플로는 지정된 기간 동안 비활성 상태였던 이슈를 찾아 지정된 주석과 레이블을 추가합니다. 또한 지정된 기간 동안 추가 활동이 발생하지 않은 경우 워크플로는 이전에 레이블이 지정된 이슈를 닫습니다.

> \[!NOTE]
> GitHub Actions 워크플로가 실행되는 로드가 많은 기간 동안 `schedule` 이벤트가 지연될 수 있습니다. 높은 로드 시간에는 매 시간의 시작이 포함됩니다. 부하가 높으면 대기 중인 작업 일부가 삭제될 수 있습니다. 지연 가능성을 줄이려면 워크플로가 다른 시간에 실행되도록 예약합니다.

워크플로 실행 기록을 보고 이 워크플로 실행을 주기적으로 확인할 수 있습니다. 자세한 내용은 [워크플로 실행 기록 보기](/ko/enterprise-server@3.22/actions/how-tos/monitor-workflows/view-workflow-run-history)을(를) 참조하세요.

이 워크플로는 속도 제한을 초과하지 않도록 한 번에 30개 이슈에만 레이블을 지정하거나 닫습니다.
`operations-per-run` 설정을 사용하여 구성할 수 있습니다. 자세한 내용은 [`actions/stale` 작업 설명서](https://github.com/marketplace/actions/close-stale-issues)를 참조하세요.

## 다음 단계

* `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)에서 이 작업을 사용하는 워크플로우의 예제를 검색하세요.