Skip to main content

Copilot CLI と GitHub Actions を使用したタスクの自動化

GitHub Copilot CLI(コマンドラインインターフェース) を GitHub Actions ワークフローに統合します。

この機能を使用できるユーザーについて

GitHub Copilot CLI(コマンドラインインターフェース) はすべての Copilot プランで利用可能です。 Copilot を organization から受け取る場合は、organization の設定で Copilot CLI ポリシーを有効にする必要があります。

GitHub Actions ワークフロー内で GitHub Copilot CLI(コマンドラインインターフェース) を実行し、使用中の CI/CD プロセスの一部として、AI を利用するタスクを自動化することができます。 たとえば、最近のリポジトリ アクティビティを集計したり、レポートを生成したり、プロジェクトのコンテンツをスキャフォールディングしたりできます。 GitHub Copilot CLI(コマンドラインインターフェース) は、他の CLI ツールと同様にアクション ランナーで実行されるため、ジョブ中にインストールしてワークフロー ステップから呼び出すことができます。

アクション ワークフローでの Copilot CLI の使用

ランナーに対して Copilot CLI をインストールする GitHub Actions ワークフローの中でジョブを定義し、そのジョブを認証し、プログラム モードでそのジョブを実行し、その結果を処理することができます。 プログラマティックモードは、スクリプトやオートメーション用に設計されており、プロンプトを非対話形式で渡すことができます。

ワークフローは、次のパターンに従うことができます。 1. トリガー: リポジトリ イベントに応答して、または手動で、スケジュールに従ってワークフローを開始します。 1. セットアップ: コードをチェックアウトし、環境を設定します。 1. インストール: ランナーに GitHub Copilot CLI(コマンドラインインターフェース) をインストールする。 1. 認証: CLI にリポジトリにアクセスして変更するために必要なアクセス許可があることを確認します。 1. Copilot CLI を実行: 自動化しようとするタスクを説明するプロンプトを使用し、Copilot 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 * * *'

セットアップ

Copilot CLI がリポジトリにアクセスしてアクション ランナーで実行できるようにジョブを設定します。 これにより、Copilot 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

取り付ける

ランナーに対して Copilot CLI をインストールします。その結果、使用中のワークフローは、それをコマンドとして呼び出すことができます。 GitHub Copilot CLI(コマンドラインインターフェース) は、サポートされている任意のインストール方法を使用してインストールできます。 インストール オプションの完全な一覧については、 AUTOTITLE を参照してください。

この例では、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

Copilot CLI を Actions ランナーで実行するには、GitHub ユーザー アカウントを認証し、Copilot の有効なライセンスを取得している必要があります。

          **手順 1: "Copilot Requests" 権限を持つ personal access token (PAT) を作成します。**
  1. 個人用設定に移動して、fine-grained personal access token を作成します: github.com/settings/personal-access-tokens/new

  2. "Copilot Requests" アクセス許可を持つ新しい PAT を作成します。

  3. トークンの値をコピーします。

           **手順 2: PAT をアクション リポジトリ シークレットとして格納する:**
    
  4. リポジトリで、[ 設定] > [Secrets と変数 > Actions ] に移動し、[ 新しいリポジトリ シークレット] をクリックします。

  5. シークレットに、ワークフローで使用する名前を付けます。 この例では、シークレットの名前として PERSONAL_ACCESS_TOKEN を使用しています。

  6. トークンの値を [シークレット] フィールドに貼り付け、[ シークレットの追加] をクリックします。

ワークフローは、リポジトリ シークレットの値を使用して特別な環境変数を設定します。 Copilot CLI では、認証用のいくつかの特別な環境変数がサポートされています。 この例では、ワークフローでは COPILOT_GITHUB_TOKEN を使用します。これは Copilot CLI に固有であり、組み込みの GITHUB_TOKEN 環境変数で他の場所で使用する場合とは異なるアクセス許可を Copilot に設定できます。

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

Copilot CLI を実行してください

          `copilot -p PROMPT [OPTIONS]`を使用して CLI をプログラムで実行し、コマンドの完了時に終了します。

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)