Skip to main content

문제 만들기 일정 계획

GitHub Actions를 사용하여 일일 회의 또는 분기별 검토 등에 대해 정기적으로 이슈를 만들 수 있습니다.

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

소개

이 자습서에서는 GitHub CLI을(를) 사용하여 정기적으로 이슈를 만드는 방법을 보여줍니다. 예를 들어 매주 문제를 만들어 팀 모임의 어젠더로 사용할 수 있습니다. GitHub CLI에 대한 자세한 내용은 "워크플로에서 GitHub CLI 사용"을(를) 참조하세요.

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

워크플로 만들기

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

  2. 리포지토리에서 YOUR_WORKFLOW를 선택한 이름으로 바꾸는 .github/workflows/YOUR_WORKFLOW.yml 파일을 만듭니다. 워크플로 파일입니다. GitHub에서 새 파일을 만드는 방법에 대한 자세한 내용은 “새 파일 만들기”를 참조하세요.

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

    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
    
  4. 워크플로 파일에서 매개 변수를 사용자 지정합니다.

    • on.schedule 값을 변경하여 이 워크플로를 실행할 시기를 지시합니다. 위의 예제에서 워크플로는 매주 월요일 7:20 UTC에 실행됩니다. 예정된 워크플로에 대한 자세한 내용은 "워크플로를 트리거하는 이벤트"을(를) 참조하세요.
    • ASSIGNEES의 값을 문제에 할당하려는 GitHub 사용자 이름 목록으로 바꿉니다.
    • LABELS 값을 이슈에 적용할 레이블 목록으로 변경합니다.
    • TITLE의 값을 문제에 포함할 제목으로 변경합니다.
    • BODY의 값을 문제 본문에 원하는 텍스트로 변경합니다. | 문자를 사용하면 이 매개 변수에 여러 줄 값을 사용할 수 있습니다.
    • 이 문제를 리포지토리에 고정하려면 PINNEDtrue로 설정하십시오. 고정된 이슈에 관한 자세한 내용은 "리포지토리에 문제 고정"을(를) 참조하세요.
    • 새 문제가 생성될 때마다 이 워크플로에서 생성된 이전 문제를 닫으려면 CLOSE_PREVIOUStrue로 설정합니다. 워크플로는 labels 필드에 레이블이 정의된 가장 최근 문제를 닫습니다. 잘못된 문제를 닫지 않도록 하려면 고유한 레이블 또는 레이블 조합을 사용합니다.
  5. 워크플로 파일을 리포지토리의 기본 분기에 커밋합니다. 자세한 내용은 "새 파일 만들기"을(를) 참조하세요.

예상 결과

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

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

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

다음 단계