Skip to main content

Copilot CLI 및 GitHub Actions를 사용하여 작업 자동화

GitHub Copilot 명령 줄 인터페이스 (CLI)를 GitHub Actions 워크플로우와 통합하세요.

누가 이 기능을 사용할 수 있나요?

GitHub Copilot 명령 줄 인터페이스 (CLI) 는 모든 Copilot 계획에서 사용할 수 있습니다. 조직으로부터 Copilot를 수신하는 경우, 조직의 설정에서 코파일럿 CLI 정책이 사용하도록 설정되어야 합니다.

GitHub Actions 워크플로 내에서 GitHub Copilot 명령 줄 인터페이스 (CLI)를 활용하면 CI/CD 프로세스에 AI 기반 작업 자동화를 통합할 수 있습니다. 예를 들어 최근 리포지토리 활동을 요약하거나, 보고서를 생성하거나, 프로젝트 콘텐츠를 스캐폴드할 수 있습니다. GitHub Copilot 명령 줄 인터페이스 (CLI)는 다른 CLI 도구와 마찬가지로 작업 실행기에서 실행되므로 작업 중에 설치하고 워크플로 단계에서 호출할 수 있습니다.

Actions 워크플로에서 코파일럿 CLI 사용

GitHub Actions 워크플로에서는 실행기에 코파일럿 CLI를 설치하고 인증한 다음, 프로그래밍 모드로 실행하여 결과를 처리하는 작업을 정의할 수 있습니다. 프로그래밍 모드는 스크립트 및 자동화를 위해 설계되었으며 대화형이 아닌 프롬프트를 전달할 수 있습니다.

워크플로는 다음 패턴을 따를 수 있습니다. 1. 트리거: 리포지토리 이벤트에 대한 응답으로 또는 수동으로 일정에 따라 워크플로를 시작합니다. 1. 설치: 체크 아웃 코드, 환경 설정. 1. 설치: GitHub Copilot 명령 줄 인터페이스 (CLI)를 실행기에서 설치합니다. 1. Authenticate: CLI가 리포지토리에 액세스하고 변경을 수행할 수 있는 필요한 권한을 가지고 있는지 확인합니다.

  1.           **코파일럿 CLI 실행**: 자동화하려는 작업에 대한 설명을 프롬프트로 작성하여 코파일럿 CLI를 실행하세요.
    

예시 워크플로

다음 워크플로는 현재 리포지토리의 기본 분기에서 변경한 내용에 대한 세부 정보를 생성하고 이러한 세부 정보를 워크플로 실행에 대한 요약으로 표시합니다.

YAML
name: Daily summary
on:
  workflow_dispatch:
  # Run this workflow daily at 5:30pm UTC
  schedule:
    - cron: '30 17 * * *'
permissions:
  contents: read
jobs:
  daily-summary:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v5
        with:
          fetch-depth: 0

      - name: Set up Node.js environment
        uses: actions/setup-node@v4

      - name: Install Copilot CLI
        run: npm install -g @github/copilot

      - name: Run Copilot CLI
        env:
          COPILOT_GITHUB_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
        run: |
          copilot -p "Review the git log for this repository and write a bullet point summary of all code changes that were made today, with links to the relevant commit on GitHub. Above the bullet list give a description (max 100 words) summarizing the changes made. Write the details to summary.md" --allow-tool='shell(git:*)' --allow-tool=write --no-ask-user
          cat summary.md >> "$GITHUB_STEP_SUMMARY"

다음 섹션에서는 이 워크플로의 각 부분을 설명합니다.

Trigger

이 예제에서 워크플로는 매일 일정에 따라 실행되며 수동으로 트리거될 수도 있습니다.

트리거를 workflow_dispatch 사용하면 GitHub에 있는 리포지토리의 작업 탭에서 워크플로를 수동으로 실행할 수 있습니다. 이 기능은 프롬프트 또는 워크플로 구성에 대한 변경 내용을 테스트할 때 유용합니다.

트리거는 schedule cron 구문을 사용하여 지정된 시간에 워크플로를 자동으로 실행합니다.

YAML
on:
  # Allows manual triggering of this workflow
  workflow_dispatch:
  # Run this workflow daily at 11:55pm UTC
  schedule:
    - cron: '55 23 * * *'

설치

코파일럿 CLI이(가) 리포지토리에 액세스하여 Actions 실행기에서 실행할 수 있도록 작업을 설정합니다. 이 방식을 통해 코파일럿 CLI는 일별 요약 생성 시 리포지토리 컨텍스트를 분석할 수 있습니다.

블록은 permissions에 부여된 기본 제공 GITHUB_TOKEN의 범위를 정의합니다. 이 워크플로는 리포지토리 데이터를 읽고 요약을 로그에 출력하기 때문에 필요합니다 contents: read.

YAML
permissions:
  contents: read
jobs:
  daily-summary:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v5
        with:
          fetch-depth: 0

설치하다

워크플로에서 명령으로 실행할 수 있도록 실행기에서 코파일럿 CLI 를 설치합니다. GitHub Copilot 명령 줄 인터페이스 (CLI)는 지원되는 설치 방법을 통해 설치가 가능합니다. 설치 옵션의 전체 목록은 GitHub Copilot CLI 설치을 참조하세요.

이 예제에서는 npm을 사용하여 GitHub Copilot 명령 줄 인터페이스 (CLI)를 전역적으로 설치합니다.

YAML
- name: Set up Node.js environment
  uses: actions/setup-node@v4

- name: Install Copilot CLI
  run: npm install -g @github/copilot

Authenticate

코파일럿 CLI가 GitHub Actions 실행기에서 실행되도록 하려면, GitHub 사용자 계정을 유효한 Copilot 라이선스로 인증해야 합니다.

          **1단계: personal access token(PAT)을(를) "Copilot 요청" 권한을 사용하여 생성하세요.**
  1. 개인 설정으로 이동하여 fine-grained personal access token을(를) 생성하세요(github.com/settings/personal-access-tokens/new).

  2. "Copilot 요청" 권한이 있는 새 PAT를 만듭니다.

  3. 토큰 값을 복사합니다.

           **2단계: PAT를 작업 리포지토리 비밀로 저장합니다.**
    
  4. 리포지토리에서 설정 > 비밀 및 변수 > 작업 으로 이동하고 새 리포지토리 비밀을 클릭합니다.

  5. 워크플로에서 사용할 이름을 비밀에 지정합니다. 이 예제에서는 비밀의 이름으로 사용합니다 PERSONAL_ACCESS_TOKEN .

  6. 토큰 값을 "비밀" 필드에 붙여넣고 비밀 추가를 클릭합니다.

워크플로는 리포지토리 비밀 값을 사용하여 특수 환경 변수를 설정합니다. 코파일럿 CLI은(는) 몇 가지 특별한 인증용 환경 변수를 지원합니다. 이 예제에서 워크플로는 특정 코파일럿 CLI 인 COPILOT_GITHUB_TOKEN를 사용하며, 기본 제공 GITHUB_TOKEN 환경 변수와 다르게 Copilot에 대해 설정할 수 있는 다른 권한을 허용합니다.

YAML
- name: Run Copilot CLI
  env:
   COPILOT_GITHUB_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }}

코파일럿 CLI를 실행합니다

CLI를 프로그래밍 방식으로 실행하고 명령이 완료되면 종료하는 데 사용합니다 copilot -p PROMPT [OPTIONS] .

CLI는 작업 워크플로 실행에 대한 로그에 기록되는 표준 출력에 대한 응답을 출력합니다. 그러나 변경 내용에 대한 세부 정보를 보다 쉽게 액세스할 수 있도록 이 예제에서는 워크플로 실행에 대한 요약에 이 정보를 추가합니다.

YAML
  run: |
    copilot -p "Review the git log for this repository and write a bullet point summary of all code changes that were made today, with links to the relevant commit on GitHub. Above the bullet list give a description (max 100 words) summarizing the changes made. Write the details to summary.md" --allow-tool='shell(git:*)' --allow-tool=write --no-ask-user
    cat summary.md >> "$GITHUB_STEP_SUMMARY"

이 예제에서는 CLI 프롬프트 후 몇 가지 옵션을 사용합니다.

  •           `--allow-tool='shell(git:*)'`을(를) 통해 Copilot은(는) Git 명령어를 실행하여 리포지토리 기록을 분석할 수 있습니다. 이는 최근 변경 내용의 요약을 생성하는 데 필요합니다.
    
  •         `--allow-tool='write'` 를 사용하면 Copilot에서 생성된 요약을 실행기 파일에 쓸 수 있습니다.
    
  •         `--no-ask-user` 는 CLI가 사용자 입력을 요청하는 것을 방지합니다. 이는 추가 입력 요청에 응답할 사용자가 없는 자동화된 워크플로에서 실행할 때 중요합니다.
    

다음 단계

워크플로에서 변경 내용 요약을 생성하는지 확인한 후에는 동일한 패턴을 다른 자동화 작업에 적용할 수 있습니다. 먼저 copilot -p PROMPT에 전달한 프롬프트를 변경하고, 그런 다음 출력 결과를 가지고 무엇을 해야 할지 결정합니다. 예를 들어 다음을 수행할 수 있습니다.

  • 하루의 변경 내용과 함께 리포지토리에서 변경 로그 파일을 업데이트하는 끌어오기 요청을 만듭니다.
  • 요약을 리포지토리 유지 관리자에게 전자 메일로 보냅니다.

추가 읽기

  •         [AUTOTITLE](/copilot/reference/copilot-cli-reference/cli-command-reference)
    
  •         [AUTOTITLE](/actions)
    
  •         [AUTOTITLE](/copilot/how-tos/copilot-cli/automate-copilot-cli/run-cli-programmatically)