비활성 이슈 닫기

비활성 이슈 닫기

GitHub Actions를 사용해서 일정 기간 동안 비활성 상태인 이슈에 댓글을 달거나 닫을 수 있어요. 이 튜토리얼에서는 비활성 이슈를 자동으로 처리하는 방법을 알려드릴게요.

출처: 문서

본문

Introduction

이 튜토리얼에서는 actions/stale 액션을 사용해서 일정 기간 동안 비활성 상태인 이슈에 댓글을 달고 닫는 방법을 보여드릴게요. 예를 들어 이슈가 30일 동안 비활성 상태이면 참여자들이 조치를 취하도록 댓글을 달 수 있어요. 그 후 14일 동안 추가 활동이 없다면 이슈를 닫을 수 있어요.

이 튜토리얼에서는 먼저 actions/stale 액션을 사용하는 워크플로우 파일을 만들고, 그다음 필요에 맞게 워크플로우를 커스터마이즈할 거예요.

Creating the workflow

  1. 이 프로젝트 관리 워크플로우를 적용할 저장소를 선택하세요. 쓰기 권한이 있는 기존 저장소를 사용할 수도 있고, 새 저장소를 만들 수도 있어요. 새 저장소를 만드는 방법에 대한 자세한 내용은 Creating a new repository 문서를 참고하세요.

  2. 저장소에서 .github/workflows/YOUR_WORKFLOW.yml이라는 파일을 만드세요. YOUR_WORKFLOW를 원하는 이름으로 바꾸면 돼요. 이 파일이 바로 워크플로우 파일이에요. GitHub에서 새 파일을 만드는 방법에 대한 자세한 내용은 Creating new files 문서를 참고하세요.

  3. 다음 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@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에 실행돼요. 예약된 워크플로우에 대한 자세한 내용은 Events that trigger workflows 문서를 참고하세요.
    • actions/stale 액션이 이슈에 레이블을 지정하기 전까지 활동이 없는 일수로 days-before-issue-stale 값을 변경하세요. 이 액션이 이슈에 레이블을 지정하기를 원하지 않는다면 이 값을 -1로 설정하세요.
    • actions/stale 액션이 이슈를 닫기 전까지 활동이 없는 일수로 days-before-issue-close 값을 변경하세요. 이 액션이 이슈를 닫기를 원하지 않는다면 이 값을 -1로 설정하세요.
    • days-before-issue-stale이 지정한 시간 동안 비활성 상태인 이슈에 적용하려는 레이블로 stale-issue-label 값을 변경하세요.
    • actions/stale 액션이 레이블을 지정한 이슈에 추가하려는 댓글로 stale-issue-message 값을 변경하세요.
    • actions/stale 액션이 닫는 이슈에 추가하려는 댓글로 close-issue-message 값을 변경하세요.
  5. 워크플로우 파일을 저장소의 기본 브랜치에 커밋하세요. 자세한 내용은 Creating new files 문서를 참고하세요.

Expected results

schedule 매개변수(예: 매일 1:30 UTC)에 따라 워크플로우가 지정된 기간 동안 비활성 상태인 이슈를 찾아 지정된 댓글과 레이블을 추가해요. 또한 이전에 레이블을 지정한 이슈에 지정된 기간 동안 추가 활동이 없으면 워크플로우가 해당 이슈를 닫아요.

[!NOTE] schedule 이벤트는 GitHub Actions 워크플로우 실행의 부하가 높은 기간 동안 지연될 수 있어요. 부하가 높은 시간에는 매시간 시작 시점이 포함돼요. 부하가 충분히 높으면 일부 대기 중인 job이 버려질 수 있어요. 지연 가능성을 줄이려면 워크플로우가 매시간 다른 시간에 실행되도록 예약하세요.

워크플로우 실행 기록을 확인해서 이 워크플로우가 주기적으로 실행되는 것을 볼 수 있어요. 자세한 내용은 Viewing workflow run history 문서를 참고하세요.

이 워크플로우는 속도 제한(rate limit)을 초과하지 않도록 한 번에 30개의 이슈에만 레이블을 지정하거나 닫아요. operations-per-run 설정으로 이를 구성할 수 있어요. 자세한 내용은 actions/stale 액션 문서를 참고하세요.

Next steps

  • 비활성 풀 리퀘스트 닫기, 특정 레이블이나 마일스톤이 있는 이슈 무시하기, 특정 레이블만 있는 이슈만 확인하기처럼 actions/stale 액션으로 할 수 있는 다른 작업에 대해 더 알아보려면 actions/stale 액션 문서를 참고하세요.
  • 이 액션을 사용하는 워크플로우 예시를 보려면 GitHub에서 검색해 보세요.

더 알아보기 (Learn more)