Skip to main content

비활성 이슈 닫기

GitHub Actions을(를) 사용하여 일정 기간 동안 비활성 상태인 이슈에 대해 주석을 달거나 이러한 이슈를 닫을 수 있습니다.

Note

GitHub 호스트 실행기는 현재 GitHub Enterprise Server에서 지원되지 않습니다. GitHub public roadmap에 예정된 향후 지원에 대해 자세히 알아볼 수 있습니다.

소개

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

자습서에서는 먼저 actions/stale 작업을 사용하는 워크플로 파일을 만듭니다. 그런 다음 필요에 맞게 워크플로를 사용자 지정합니다.

워크플로 만들기

  1. 이 프로젝트 관리 워크플로를 적용할 리포지토리를 선택합니다. 쓰기 권한이 있는 기존 리포지토리를 사용하거나 새 리포지토리를 만들 수 있습니다. 리포지토리를 만드는 자세한 내용은 “새 리포지토리 만들기”를 참조하세요.

  2. 리포지토리에서 YOUR_WORKFLOW를 선택한 이름으로 바꾸는 .github/workflows/YOUR_WORKFLOW.yml 파일을 만듭니다. 워크플로 파일입니다. 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@v5
            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 작업에서 이슈에 레이블을 지정하기 전에 활동이 없었던 일수로 변경합니다. 이 작업을 통해 이슈에 레이블을 지정하지 않으려면 값을 -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. 워크플로 파일을 리포지토리의 기본 분기에 커밋합니다. 자세한 내용은 "새 파일 만들기"을(를) 참조하세요.

예상 결과

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

Note

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

워크플로 실행 기록을 보고 이 워크플로 실행을 주기적으로 확인할 수 있습니다. 자세한 내용은 워크플로 실행 기록 보기을(를) 참조하세요.

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

다음 단계

  • actions/stale 작업으로 수행할 수 있는 추가 작업(예: 비활성 끌어오기 요청 닫기, 특정 레이블 또는 마일스톤이 있는 이슈 무시 또는 특정 레이블이 있는 이슈만 확인)에 대한 자세한 내용은 actions/stale 작업 설명서를 참조하세요.
  • GitHub 검색을 통해 이 작업을 사용하는 워크플로의 예를 확인합니다.