이슈 생성 예약하기
이슈 생성 예약하기
GitHub Actions를 사용해서 일일 회의나 분기별 리뷰 같은 정기적인 작업을 위해 이슈를 정기적으로 만들 수 있어요. 이 튜토리얼에서는 이슈를 정기적으로 자동 생성하는 방법을 알려드릴게요.
출처: 문서
본문
Introduction
이 튜토리얼에서는 GitHub CLI를 사용해서 이슈를 정기적으로 만드는 방법을 보여드릴게요. 예를 들어 팀 회의의 안건으로 사용할 이슈를 매주 만들 수 있어요. GitHub CLI에 대한 자세한 내용은 Using GitHub CLI in workflows 문서를 참고하세요.
이 튜토리얼에서는 먼저 GitHub CLI를 사용하는 워크플로우 파일을 만들고, 그다음 필요에 맞게 워크플로우를 커스터마이즈할 거예요.
Creating the workflow
-
이 프로젝트 관리 워크플로우를 적용할 저장소를 선택하세요. 쓰기 권한이 있는 기존 저장소를 사용할 수도 있고, 새 저장소를 만들 수도 있어요. 새 저장소를 만드는 방법에 대한 자세한 내용은 Creating a new repository 문서를 참고하세요.
-
저장소에서
.github/workflows/YOUR_WORKFLOW.yml이라는 파일을 만드세요.YOUR_WORKFLOW를 원하는 이름으로 바꾸면 돼요. 이 파일이 바로 워크플로우 파일이에요. GitHub에서 새 파일을 만드는 방법에 대한 자세한 내용은 Creating new files 문서를 참고하세요. -
다음 YAML 내용을 워크플로우 파일에 복사하세요.
name: Weekly Team Sync on: schedule: - cron: 20 07 * * 1 jobs: create_issue: name: Create team sync issue runs-on: ubuntu-latest permissions: issues: write steps: - name: Create team sync issue run: | if [[ $CLOSE_PREVIOUS == true ]]; then previous_issue_number=$(gh issue list \ --label "$LABELS" \ --json number \ --jq '.[0].number') if [[ -n $previous_issue_number ]]; then gh issue close "$previous_issue_number" gh issue unpin "$previous_issue_number" fi fi new_issue_url=$(gh issue create \ --title "$TITLE" \ --assignee "$ASSIGNEES" \ --label "$LABELS" \ --body "$BODY") if [[ $PINNED == true ]]; then gh issue pin "$new_issue_url" fi env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_REPO: ${{ github.repository }} TITLE: Team sync ASSIGNEES: monalisa,doctocat,hubot LABELS: weekly sync,docs-team BODY: | ### Agenda - [ ] Start the recording - [ ] Check-ins - [ ] Discussion points - [ ] Post the recording ### Discussion Points Add things to discuss below - [Work this week](https://github.com/orgs/github/projects/3) PINNED: false CLOSE_PREVIOUS: false -
워크플로우 파일에서 매개변수를 커스터마이즈하세요:
- 이 워크플로우를 언제 실행할지 결정하려면
on.schedule값을 변경하세요. 위 예시에서 워크플로우는 매주 월요일 7:20 UTC에 실행돼요. 예약된 워크플로우에 대한 자세한 내용은 Events that trigger workflows 문서를 참고하세요. - 이슈에 할당하려는 GitHub 사용자 이름 목록으로
ASSIGNEES값을 변경하세요. - 이슈에 적용하려는 레이블 목록으로
LABELS값을 변경하세요. - 이슈가 가지게 하려는 제목으로
TITLE값을 변경하세요. - 이슈 본문에 넣으려는 텍스트로
BODY값을 변경하세요.|문자를 사용하면 이 매개변수에 여러 줄 값을 사용할 수 있어요. - 이 이슈를 저장소에 고정(pin)하려면
PINNED를true로 설정하세요. 고정된 이슈에 대한 자세한 내용은 Pinning an issue to your repository 문서를 참고하세요. - 새 이슈가 생성될 때마다 이 워크플로우가 생성한 이전 이슈를 닫으려면
CLOSE_PREVIOUS를true로 설정하세요. 워크플로우는labels필드에 정의된 레이블이 있는 가장 최근 이슈를 닫아요. 잘못된 이슈를 닫지 않으려면 고유한 레이블이나 레이블 조합을 사용하세요.
- 이 워크플로우를 언제 실행할지 결정하려면
-
워크플로우 파일을 저장소의 기본 브랜치에 커밋하세요. 자세한 내용은 Creating new files 문서를 참고하세요.
Expected results
schedule 매개변수(예: 매주 월요일 7:20 UTC)에 따라 워크플로우가 지정한 담당자, 레이블, 제목, 본문을 가진 새 이슈를 만들어요. PINNED를 true로 설정하면 워크플로우가 이슈를 저장소에 고정해요. CLOSE_PREVIOUS를 true로 설정하면 워크플로우가 레이블이 일치하는 가장 최근 이슈를 닫아요.
[!NOTE]
schedule이벤트는 GitHub Actions 워크플로우 실행의 부하가 높은 기간 동안 지연될 수 있어요. 부하가 높은 시간에는 매시간 시작 시점이 포함돼요. 부하가 충분히 높으면 일부 대기 중인 job이 버려질 수 있어요. 지연 가능성을 줄이려면 워크플로우가 매시간 다른 시간에 실행되도록 예약하세요.
워크플로우 실행 기록을 확인해서 이 워크플로우가 주기적으로 실행되는 것을 볼 수 있어요. 자세한 내용은 Viewing workflow run history 문서를 참고하세요.
Next steps
- 이슈 템플릿 사용처럼 GitHub CLI로 할 수 있는 다른 작업에 대해 더 알아보려면
gh issue create문서를 참고하세요. - 예약된 이슈와 관련된 액션을 보려면 GitHub Marketplace에서 검색해 보세요.