비활성 이슈 닫기
비활성 이슈 닫기
GitHub Actions를 사용해서 일정 기간 동안 비활성 상태인 이슈에 댓글을 달거나 닫을 수 있어요. 이 튜토리얼에서는 비활성 이슈를 자동으로 처리하는 방법을 알려드릴게요.
출처: 문서
본문
Introduction
이 튜토리얼에서는 actions/stale 액션을 사용해서 일정 기간 동안 비활성 상태인 이슈에 댓글을 달고 닫는 방법을 보여드릴게요. 예를 들어 이슈가 30일 동안 비활성 상태이면 참여자들이 조치를 취하도록 댓글을 달 수 있어요. 그 후 14일 동안 추가 활동이 없다면 이슈를 닫을 수 있어요.
이 튜토리얼에서는 먼저 actions/stale 액션을 사용하는 워크플로우 파일을 만들고, 그다음 필요에 맞게 워크플로우를 커스터마이즈할 거예요.
Creating the workflow
-
이 프로젝트 관리 워크플로우를 적용할 저장소를 선택하세요. 쓰기 권한이 있는 기존 저장소를 사용할 수도 있고, 새 저장소를 만들 수도 있어요. 새 저장소를 만드는 방법에 대한 자세한 내용은 Creating a new repository 문서를 참고하세요.
-
저장소에서
.github/workflows/YOUR_WORKFLOW.yml이라는 파일을 만드세요.YOUR_WORKFLOW를 원하는 이름으로 바꾸면 돼요. 이 파일이 바로 워크플로우 파일이에요. GitHub에서 새 파일을 만드는 방법에 대한 자세한 내용은 Creating new files 문서를 참고하세요. -
다음 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 }} -
워크플로우 파일에서 매개변수를 커스터마이즈하세요:
- 이 워크플로우를 언제 실행할지 결정하려면
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값을 변경하세요.
- 이 워크플로우를 언제 실행할지 결정하려면
-
워크플로우 파일을 저장소의 기본 브랜치에 커밋하세요. 자세한 내용은 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에서 검색해 보세요.