Skip to main content

GitHub Copilot コーディング エージェントの開発環境のカスタマイズ

ツールを追加して GitHub Copilot の開発環境をカスタマイズする方法について説明します。

Copilotコーディングエージェント の開発環境のカスタマイズについて

タスクの作業中に、Copilot は、GitHub Actions を利用して独自のエフェメラル開発環境にアクセスしています。この開発環境では、コードの探索、変更、自動テストやリンターの実行などを行うことができます。

Copilot の開発環境を Copilot セットアップ ステップ ファイル を使用してカスタマイズできます。 Copilot セットアップ ステップ ファイルを使用すると、次のことができます。

  •         [Copilot の環境にツールまたは依存関係をプレインストールする](#preinstalling-tools-or-dependencies-in-copilots-environment)
    
  •           [標準の GitHub ホステッド GitHub Actions ランナーから大規模ランナーにアップグレードする](#upgrading-to-larger-github-hosted-github-actions-runners)
    
  • GitHub Actions のセルフホステッドランナーで実行
  • 既定の Ubuntu Linux 環境ではなく、Copilot に Windows 開発環境を提供する
  •         [Enable Git Large File Storage (LFS)](#enabling-git-large-file-storage-lfs)
    

さらに、次のものもご利用いただけます。

  •         [Copilot の環境で環境変数を設定する](#setting-environment-variables-in-copilots-environment)
    
  •         [エージェントのファイアウォールを無効化またはカスタマイズする](/copilot/customizing-copilot/customizing-or-disabling-the-firewall-for-copilot-coding-agent)。
    

Copilot のセットアップ手順を使用して、Copilot の開発環境をカスタマイズする

リポジトリ内の .github/workflows/copilot-setup-steps.yml にある特別な GitHub Actions ワークフロー ファイルを作成することで、Copilot の環境をカスタマイズできます。

          `copilot-setup-steps.yml` ファイルは通常の GitHub Actions ワークフロー ファイルと同様ですが、単一の `copilot-setup-steps` ジョブを含める必要があります。 このジョブの手順は、Copilot が動作を開始する前に、 GitHub Actions で実行されます。 GitHub Actionsのワークフローファイルについて詳しくは、[AUTOTITLE](/actions/using-workflows/workflow-syntax-for-github-actions)をご覧ください。

メモ

          `copilot-setup-steps.yml` ワークフローは、既定のブランチに存在しない限りトリガーされません。

projectを複製し、Node.js をインストールし、projectの依存関係をダウンロードしてキャッシュする TypeScript projectのcopilot-setup-steps.yml ファイルの簡単な例を次に示します。 これは、独自のprojectの言語と依存関係に合わせてカスタマイズする必要があります。

YAML
name: "Copilot Setup Steps"

# Automatically run the setup steps when they are changed to allow for easy validation, and
# allow manual testing through the repository's "Actions" tab
on:
  workflow_dispatch:
  push:
    paths:
      - .github/workflows/copilot-setup-steps.yml
  pull_request:
    paths:
      - .github/workflows/copilot-setup-steps.yml

jobs:
  # The job MUST be called `copilot-setup-steps` or it will not be picked up by Copilot.
  copilot-setup-steps:
    runs-on: ubuntu-latest

    # Set the permissions to the lowest permissions possible needed for your steps.
    # Copilot will be given its own token for its operations.
    permissions:
      # If you want to clone the repository as part of your setup steps, for example to install dependencies, you'll need the `contents: read` permission.
      # If you don't clone the repository in your setup steps, Copilot will do this for you automatically after the steps complete.
      contents: read

    # You can define any steps you want, and they will run before the agent starts.
    # If you do not check out your code, Copilot will do this for you.
    steps:
      # ...
          `copilot-setup-steps.yml` ファイルでは、`copilot-setup-steps` ジョブの次の設定のみをカスタマイズできます。 他の設定をカスタマイズしようとしても、その変更は無視されます。

* steps (上記参照) * permissions (上記参照) * runs-on (下記参照)

  • services
  • snapshot
  •         `timeout-minutes` (最大値: `59`)
    

これらのオプションの詳細については、「GitHub Actions のワークフロー構文を参照してください。

          `fetch-depth` アクションの `actions/checkout` オプションに設定された値は、要求に応じてエージェントがコミットをロールバックできるようにしつつ、セキュリティ リスクを軽減するために上書きされます。 詳細については、「[`actions/checkout/README.md`](https://github.com/actions/checkout/blob/main/README.md)を参照してください。

          `copilot-setup-steps.yml` ファイルは、変更が加えられると、通常の GitHub Actions ワークフローとして自動的に実行されるため、正常に実行されたかどうかを確認できます。 これは、ファイルを作成または変更したプル要求内の他のチェックと共に表示されます。

yml ファイルを既定のブランチにマージした後は、リポジトリの [アクション] タブからいつでもワークフローを手動で実行することで、すべてが想定どおりに動作するかを確認できます。 詳しくは、「ワークフローの手動実行」をご覧ください。

Copilot が作業を開始すると、セットアップ手順が実行され、セッション ログに更新内容が表示されます。 「GitHub Copilot のセッションを追跡する」を参照してください。

いずれかのセットアップ手順が非ゼロの終了コードを返して失敗した場合、Copilot は残りのセットアップ手順をスキップし、現在の開発環境の状態で作業を開始します。

Copilot の環境にツールまたは依存関係を事前にインストールする

一時的な開発環境では、Copilot はプロジェクトをビルドまたはコンパイルし、自動テスト、リンター、その他のツールを実行できます。 これを行うには、プロジェクトの依存関係をインストールする必要があります。

Copilot は、試行錯誤のプロセスを通じてこれらの依存関係自体を検出してインストールできますが、大規模言語モデル (LLM) の非決定論的な性質のため、低速で信頼性が低くなる可能性があり、場合によっては (プライベートの場合など)、これらの依存関係をまったくダウンロードできないこともあります。

Copilot が作業を開始する前に、Copilot セットアップステップ ファイルを使用して、ツールまたは依存関係を確定的にインストールできます。 この操作を行うには、stepscopilot-setup-steps ジョブに追加します。

# ...

jobs:
  copilot-setup-steps:
    # ...

    # You can define any steps you want, and they will run before the agent starts.
    # If you do not check out your code, Copilot will do this for you.
    steps:
      - name: Checkout code
        uses: actions/checkout@v5

      - name: Set up Node.js
        uses: actions/setup-node@v4
        with:
          node-version: "20"
          cache: "npm"

      - name: Install JavaScript dependencies
        run: npm ci

より大きな GitHub ホステッド GitHub Actions ランナーにアップグレードする

デフォルトでは、Copilot は標準の GitHub Actions ランナーで動作します。 パフォーマンスの向上 (CPU とメモリ)、ディスク領域の拡大、プライベート ネットワークなどの高度な機能を実現するために、より大きなランナー Azureアップグレードできます。 詳細については、「より大きなランナー」を参照してください。

  1. 組織用に大きなランナーを設定してください。 詳細については、「より大きなランナーを管理する」を参照してください。

  2. Azure プライベート ネットワークで大規模なランナーを使用している場合は、Copilotコーディングエージェントに必要なホストへの送信アクセスを許可するように Azure プライベート ネットワークを構成します。

    • uploads.github.com
    • user-images.githubusercontent.com
    •         `api.individual.githubcopilot.com` (Copilot Pro または Copilot Pro+ ユーザーがリポジトリで Copilotコーディングエージェント を使用することが予想される場合)
      
    •         `api.business.githubcopilot.com` (リポジトリで Copilotコーディングエージェント を使用することが Copilot 事業 ユーザーに期待する場合)
      
    •         `api.enterprise.githubcopilot.com` (リポジトリで Copilot Enterprise ユーザーが Copilotコーディングエージェント を使用することを予想する場合)
      
    • OpenAI Codex サードパーティ エージェントを使用している場合 (詳細については、「サード パーティのエージェントについて」を参照してください)。
      • npmjs.org
      • npmjs.com
      • registry.npmjs.com
      • registry.npmjs.org
      • skimdb.npmjs.com
  3. リポジトリ内の copilot-setup-steps.yml ファイルを使用して、 Copilotコーディングエージェント を選択したランナーで実行するように構成します。 Copilot で使用する大きなランナーを対象としたラベルまたはグループに、runs-on ジョブの copilot-setup-steps ステップを設定します。 runs-on で大きなランナーを指定する方法の詳細については、「より大きなランナーでジョブを実行する を参照してください。

    # ...
    
    jobs:
      copilot-setup-steps:
        runs-on: ubuntu-4-core
        # ...
    

メモ

  • Copilotコーディングエージェント は、Ubuntu x64 Linux および Windows 64 ビット ランナーとのみ互換性があります。 macOS またはその他のオペレーティング システムを持つランナーはサポートされていません。

セルフ ホステッド GitHub Actions ランナーを使用する

セルフホステッド ランナーで Copilotコーディングエージェント を実行できます。 ネットワーク上の内部リソースへのアクセスをCopilot に提供するか、またはGitHub Actions でCI/CDワークフローを実行する方法と一致させるためにこれを行うことができます。

エフェメラルで Copilotコーディングエージェント を使用するには、複数のジョブに再利用しないシングルユーザー ランナーのみに限ることをおすすめします。 ほとんどのお客様は、ARC (アクション ランナー コントローラー) または GitHub Actions ランナー スケール セット クライアントを使用してこれを設定します。 詳しくは、「セルフホステッド ランナー リファレンス」をご覧ください。

メモ

Copilotコーディングエージェント は、Ubuntu x64 および Windows 64ビット ランナーとのみ互換性があります。 macOS またはその他のオペレーティング システムを持つランナーはサポートされていません。

  1. GitHub Actions ランナーのネットワークセキュリティ制御を構成して、Copilotコーディングエージェント がネットワークやパブリックインターネットに対する無制限アクセスを持たないようにします。

           [GitHub Actions セルフホステッド ランナーに必要な標準ホスト](/actions/reference/runners/self-hosted-runners#accessible-domains-by-function)への接続に加え、以下のホストへの接続を許可するよう、ファイアウォールの構成を調整する必要があります。
    
    • uploads.github.com
    • user-images.githubusercontent.com
    •         `api.individual.githubcopilot.com` (Copilot Pro または Copilot Pro+ ユーザーがリポジトリで Copilotコーディングエージェント を使用することが予想される場合)
      
    •         `api.business.githubcopilot.com` (リポジトリで Copilotコーディングエージェント を使用することが Copilot 事業 ユーザーに期待する場合)
      
    •         `api.enterprise.githubcopilot.com` (リポジトリで Copilot Enterprise ユーザーが Copilotコーディングエージェント を使用することを予想する場合)
      
    • OpenAI Codex サードパーティ エージェントを使用している場合 (詳細については、「サード パーティのエージェントについて」を参照してください)。
      • npmjs.org
      • npmjs.com
      • registry.npmjs.com
      • registry.npmjs.org
      • skimdb.npmjs.com
  2. リポジトリ設定で Copilotコーディングエージェント の統合ファイアウォール機能を無効にします。 ファイアウォールは、セルフホステッド ランナーと互換性がありません。 ファイアウォールによる制限を無効化しない限り、Copilotコーディングエージェント の使用はブロックされます。 詳しくは、「GitHub Copilot コーディング エージェントのファイアウォールのカスタマイズまたは無効化」をご覧ください。

  3.        `copilot-setup-steps.yml` ファイルで、`runs-on`属性を ARC マネージド スケール セット名に設定します。
    
    # ...
    
    jobs:
      copilot-setup-steps:
        runs-on: arc-scale-set-name
        # ...
    
  4. Copilotコーディングエージェントのインターネットへの接続用にプロキシ サーバーを設定する際には、必要に応じて次の環境変数を設定します。

    VariableDescriptionExample
    https_proxyHTTPS トラフィックのプロキシ URL。 必要に応じて基本認証を含めることができます。http://proxy.local
    http://192.168.1.1:8080
    http://username:password@proxy.local
    http_proxyHTTP トラフィックのプロキシ URL。 必要に応じて基本認証を含めることができます。http://proxy.local
    http://192.168.1.1:8080
    http://username:password@proxy.local
    no_proxyプロキシをバイパスするホストまたは IP アドレスのコンマ区切りの一覧。 一部のクライアントでは、ホスト名ではなく IP に直接接続する場合にのみ IP アドレスが優先されます。example.com
    example.com,myserver.local:443,example.org

| ssl_cert_file |プロキシ サーバーによって提示される SSL 証明書へのパス。 プロキシが SSL 接続をインターセプトする場合は、これを構成する必要があります。 | /path/to/key.pem | | node_extra_ca_certs |プロキシ サーバーによって提示される SSL 証明書へのパス。 プロキシが SSL 接続をインターセプトする場合は、これを構成する必要があります。 | /path/to/key.pem |

これらの環境変数は、 [次の手順](#setting-environment-variables-in-copilots-environment)に従うか、ランナーに直接設定することで設定できます (たとえば、カスタム ランナーイメージを使用)。 カスタム イメージの構築の詳細については、「 [AUTOTITLE](/actions/concepts/runners/actions-runner-controller#creating-your-own-runner-image)」を参照してください。

Copilot を Windows 開発環境に切り替える

既定では、Copilot は Ubuntu Linux ベースの開発環境を使用します。

Windows 用のソフトウェアをビルドする場合や、リポジトリで Windows ベースのツールチェーンを使用する場合は、Windows 開発環境を使用することをお勧めします。そのため、Copilot は、projectを構築し、テストを実行し、その作業を検証できます。

Copilotコーディングエージェント の内蔵型ファイアウォールは Windows と互換性がないため、Azure のプライベートネットワークを使用して独自のネットワーク制御を実装する際には、セルフホステッド ランナーまたは GitHub がホストする大型のランナーのみを使用することをおすすめします。 Azureプライベート ネットワークを使用するランナーの詳細については、「GitHubホストランナーのための企業内Azureプライベートネットワークについてを参照してください。

Windows をセルフホステッド ランナーで使用するには、上記の「セルフホステッド GitHub Actions ランナーを使用する」セクションの手順に従って Windows ランナー向けのラベルを使用します。 WindowsでGitHubがホストするより大きなランナーを使用するには、上記の「大きなランナーにアップグレードする」セクションの手順に従い、Windowsランナーのラベルを使用してください。

Git Large File Storage (LFS) の有効化

Git Large File Storage (LFS) を使用してリポジトリに大きなファイルを格納する場合は、Copilot の環境をカスタマイズして Git LFS をインストールし、LFS オブジェクトを取得する必要があります。

Git LFS を有効にするには、actions/checkout オプションを copilot-setup-steps に設定した lfs ステップを true ジョブに追加します。

YAML
# ...

jobs:
  copilot-setup-steps:
    runs-on: ubuntu-latest
    permissions:
      contents: read # for actions/checkout
    steps:
      - uses: actions/checkout@v5
        with:
          lfs: true

Copilot の環境に環境変数を設定する

Copilot がアクセスするツールや依存関係を構成または認証するために、環境変数を設定することがあります。

Copilot の環境変数を設定するには、copilot 環境に GitHub Actions の変数またはシークレットを作成します。 値にパスワードや API キーなどのセンシティブ情報が含まれる場合は、GitHub Actions シークレットを使用するのが最適です。

  1. GitHub で、リポジトリのメイン ページに移動します。

  2. リポジトリ名の下にある [Settings] をクリックします。 [設定] タブが表示されない場合は、 [] ドロップダウン メニューを選び、 [設定] をクリックします。

    タブを示すリポジトリ ヘッダーのスクリーンショット。 [設定] タブが濃いオレンジ色の枠線で強調表示されています。

  3. 左側のサイドバーで、 [環境] をクリックします。

  4.        `copilot` 環境を選択します。
    
  5. シークレットを追加するには、[環境シークレット] の下にある [環境シークレットを追加] をクリックします。 変数を追加するには、[環境変数] の下の [環境変数を追加] をクリックします。

  6. [名前] と [値] フィールドに入力し、必要に応じて [シークレットを追加] または [変数を追加] をクリックします。

参考資料

  •         [AUTOTITLE](/copilot/customizing-copilot/customizing-or-disabling-the-firewall-for-copilot-coding-agent)