# 문제 생성 일정 관리

매일 모임 또는 분기별 검토와 같은 항목에 대해 정기적으로 문제를 만드는 데 사용할 GitHub Actions 수 있습니다.

## 소개

이 자습서에서는 GitHub CLI를 사용하여 정기적으로 이슈를 생성하는 방법을 보여줍니다. 예를 들어 매주 문제를 만들어 팀 모임의 어젠더로 사용할 수 있습니다.
GitHub CLI에 대한 자세한 내용은 [워크플로에서 GitHub CLI 사용](/ko/actions/how-tos/write-workflows/choose-what-workflows-do/use-github-cli)을(를) 참조하세요.

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

## 워크플로 만들기

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

2. 리포지토리에서 `YOUR_WORKFLOW`를 선택한 이름으로 바꾸는 `.github/workflows/YOUR_WORKFLOW.yml` 파일을 만듭니다. 워크플로 파일입니다. GitHub에서 새 파일을 만드는 방법에 대한 자세한 내용은 [새 파일 만들기](/ko/repositories/working-with-files/managing-files/creating-new-files)을(를) 참조하세요.

3. 다음 YAML 콘텐츠를 워크플로 파일에 복사합니다.

   ```yaml copy
   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
   ```

4. 워크플로 파일에서 매개 변수를 사용자 지정합니다.
   * `on.schedule` 값을 변경하여 이 워크플로를 실행할 시기를 지시합니다. 위의 예제에서 워크플로는 매주 월요일 7:20 UTC에 실행됩니다. 예정된 워크플로에 대한 자세한 내용은 [워크플로를 트리거하는 이벤트](/ko/actions/reference/workflows-and-actions/events-that-trigger-workflows#schedule)을(를) 참조하세요.
   * 값을 `ASSIGNEES` 문제에 할당하려는 사용자 이름 목록 GitHub 으로 변경합니다.
   * `LABELS` 값을 이슈에 적용할 레이블 목록으로 변경합니다.
   * `TITLE`의 값을 문제에 포함할 제목으로 변경합니다.
   * `BODY`의 값을 문제 본문에 원하는 텍스트로 변경합니다.
     `|` 문자를 사용하면 이 매개 변수에 여러 줄 값을 사용할 수 있습니다.
   * 이 문제를 리포지토리에 고정하려면 `PINNED`를 `true`로 설정하십시오. 고정된 이슈에 관한 자세한 내용은 [리포지토리에 이슈 고정하기](/ko/issues/tracking-your-work-with-issues/administering-issues/pinning-an-issue-to-your-repository)을(를) 참조하세요.
   * 새 문제가 생성될 때마다 이 워크플로에서 생성된 이전 문제를 닫으려면 `CLOSE_PREVIOUS`를 `true`로 설정합니다. 워크플로는 `labels` 필드에 레이블이 정의된 가장 최근 문제를 닫습니다. 잘못된 문제를 닫지 않도록 하려면 고유한 레이블 또는 레이블 조합을 사용합니다.

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

## 예상 결과

`schedule` 매개 변수(예: 매주 월요일 UTC 7:20)에 따라 워크플로는 지정한 담당자, 레이블, 제목, 본문으로 새 문제를 만듭니다.
`PINNED`를 `true`로 설정하면 워크플로가 문제를 리포지토리에 고정합니다.
`CLOSE_PREVIOUS`를 true로 설정하면 워크플로에서 레이블이 일치하는 가장 최근 문제를 닫습니다.

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

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

## 다음 단계

* GitHub CLI로 할 수 있는 추가 작업(예: 이슈 템플릿 사용)에 대해 자세히 알아보려면 [`gh issue create` 설명서](https://cli.github.com/manual/gh_issue_create)를 참조하세요.
* [예약된 문제와 관련된 작업 검색 GitHub Marketplace](https://github.com/marketplace?category=\&type=actions\&verification=\&query=schedule+issue)