Skip to main content

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

          GitHub Copilot CLIをGitHub Actionsワークフローに統合します。

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

GitHub Copilot CLI は、すべての Copilot プランで使用できます。 組織から Copilot を受け取る場合は、組織の設定で Copilot CLI ポリシーを有効にする必要があります。

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

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

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

ワークフローは、次のパターンに従うことができます。 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を実行できるようにするには、有効なGitHub ライセンスでCopilotユーザー アカウントを認証する必要があります。

          **手順 1: "Copilot 要求" のアクセス許可を持つ personal access token (PAT) を作成します:**

1. fine-grained personal access tokenを作成するための個人用設定に移動します: github.com/settings/personal-access-tokens/new

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

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

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

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

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

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

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)