Copilotクラウドエージェントの開発環境のカスタマイズについて
タスクに取り組んでいる間、 Copilot は独自のエフェメラル開発環境にアクセスでき、 GitHub Actionsを利用して、コードの探索、変更、自動テストやリンターの実行などを行うことができます。
Copilot
Copilotを使用して、[](#customizing-copilots-development-environment-with-copilot-setup-steps)の開発環境をカスタマイズできます。
Copilotセットアップステップファイルを使用すると、次のことができます。
* Copilotの環境にツールまたは依存関係をプレインストールする * 標準の GitHubホスト型 GitHub Actions ランナーから大きなランナーにアップグレードする * セルフホステッドランナーでGitHub Actions実行する
既定の Ubuntu Linux 環境ではなく、 Windows開発環境を設定する -
[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-cloud-agent)。
メモ
組織の所有者は、組織内のすべてのリポジトリで Copilotクラウドエージェント の既定のランナーの種類を構成し、リポジトリがこの既定値をオーバーライドできるかどうかを選択できます。 詳細については、「GitHub Copilotクラウドエージェント用ランナーを組織に構成する方法」を参照してください。
Copilotセットアップ手順を使用してCopilotの開発環境をカスタマイズする
リポジトリ内のCopilotにある特別なGitHub Actions ワークフロー ファイルを作成することで、.github/workflows/copilot-setup-steps.ymlの環境をカスタマイズできます。
`copilot-setup-steps.yml` ファイルは通常のGitHub Actions ワークフロー ファイルのように見えますが、1 つの`copilot-setup-steps` ジョブを含む必要があります。 このジョブの手順は、GitHub Actionsが動作を開始する前に、Copilotで実行されます。
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の言語と依存関係に合わせてカスタマイズする必要があります。
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:
# ...
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 (下記参照)
servicessnapshot-
`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が作業を開始すると、セットアップ手順が実行され、セッション ログに更新プログラムが表示されます。 「[AUTOTITLE](/copilot/how-tos/use-copilot-agents/cloud-agent/track-copilot-sessions)」を参照してください。
0 以外の終了コードを返すことでセットアップ手順が失敗した場合、 Copilot は残りのセットアップ手順をスキップし、開発環境の現在の状態の操作を開始します。
Copilotの環境でのツールまたは依存関係のプレインストール
一時的な開発環境では、 Copilot はプロジェクトをビルドまたはコンパイルし、自動テスト、リンター、その他のツールを実行できます。 これを行うには、プロジェクトの依存関係をインストールする必要があります。
Copilot では、試用とエラーのプロセスを介してこれらの依存関係自体を検出してインストールできますが、大規模な言語モデル (LLM) の非決定論的な性質を考えると、低速で信頼性が低下する可能性があり、場合によっては、依存関係を完全にダウンロードできない場合があります (プライベートの場合など)。
Copilotセットアップ手順ファイルを使用して、Copilot が作業を開始する前に、ツールまたは依存関係を確定的にインストールできます。 この操作を行うには、steps を copilot-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アップグレードできます。 詳細については、「より大きなランナー」を参照してください。
-
組織用に大きなランナーを設定してください。 詳細については、「より大きなランナーを管理する」を参照してください。
-
Azureプライベート ネットワークで大規模なランナーを使用している場合は、Azure プライベート ネットワークを構成して、Copilotクラウドエージェント に必要なホストへの送信アクセスを許可します。
uploads.github.comuser-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サードパーティ エージェントを使用している場合 (詳細については、[AUTOTITLE](/copilot/concepts/agents/about-third-party-agents) を参照してください)。npmjs.orgnpmjs.comregistry.npmjs.comregistry.npmjs.orgskimdb.npmjs.com
-
リポジトリ内の
copilot-setup-steps.ymlファイルを使用して、選択したランナーで実行するように Copilotクラウドエージェント を構成します。runs-onジョブのcopilot-setup-stepsステップを、使用したい大きなランナー用のラベルまたはグループに設定してくださいCopilot。runs-onで大きなランナーを指定する方法の詳細については、「より大きなランナーでジョブを実行する を参照してください。# ... jobs: copilot-setup-steps: runs-on: ubuntu-4-core # ...
メモ
* Copilotクラウドエージェント は、Ubuntu x64 Linux および Windows 64 ビット ランナーとのみ互換性があります。 macOS またはその他のオペレーティング システムを持つランナーはサポートされていません。
セルフホステッド GitHub Actions ランナーの使用
セルフホステッド ランナーで Copilotクラウドエージェント を実行できます。 これは、 GitHub Actionsで CI/CD ワークフローを実行する方法と一致させるか、ネットワーク上の内部リソースに Copilot アクセスできるようにする場合があります。
Copilotクラウドエージェントは、複数のジョブに再利用されないエフェメラルな単一使用ランナーでのみ使用することをお勧めします。 ほとんどのお客様は、ARC (アクション ランナー コントローラー) または GitHub Actions Runner Scale Set Client を使用してこれを設定します。 詳細については、「[AUTOTITLE](/actions/reference/runners/self-hosted-runners#supported-autoscaling-solutions)」を参照してください。
メモ
Copilotクラウドエージェント は、Ubuntu x64 および Windows 64 ビット ランナーとのみ互換性があります。 macOS またはその他のオペレーティング システムを持つランナーはサポートされていません。
-
GitHub Actionsがネットワークやパブリック インターネットにオープン アクセスできないように、Copilotクラウドエージェント ランナーのネットワーク セキュリティ制御を構成します。 GitHub Actionsへの接続と、次のホスト[](/actions/reference/runners/self-hosted-runners#accessible-domains-by-function)許可するようにファイアウォールを構成する必要があります。uploads.github.comuser-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サードパーティ エージェントを使用している場合 (詳細については、[AUTOTITLE](/copilot/concepts/agents/about-third-party-agents) を参照してください)。npmjs.orgnpmjs.comregistry.npmjs.comregistry.npmjs.orgskimdb.npmjs.com
-
リポジトリ設定 Copilotクラウドエージェント統合ファイアウォールを無効にします。 ファイアウォールは、セルフホステッド ランナーと互換性がありません。 これが無効でない限り、 Copilotクラウドエージェント の使用はブロックされます。 詳細については、「GitHub Copilot クラウド エージェントのファイアウォールのカスタマイズまたは無効化」を参照してください。
-
`copilot-setup-steps.yml` ファイルで、`runs-on`属性を ARC マネージド スケール セット名に設定します。# ... jobs: copilot-setup-steps: runs-on: arc-scale-set-name # ... -
インターネットへの Copilotクラウドエージェント接続用にプロキシ サーバーを構成する場合は、必要に応じて次の環境変数を構成します。
Variable Description Example https_proxyHTTPS トラフィックのプロキシ URL。 必要に応じて基本認証を含めることができます。 http://proxy.localhttp://192.168.1.1:8080http://username:password@proxy.localhttp_proxyHTTP トラフィックのプロキシ URL。 必要に応じて基本認証を含めることができます。 http://proxy.localhttp://192.168.1.1:8080http://username:password@proxy.localno_proxyプロキシをバイパスするホストまたは IP アドレスのコンマ区切りの一覧。 一部のクライアントでは、ホスト名ではなく IP に直接接続する場合にのみ IP アドレスが優先されます。 example.comexample.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でプロジェクトのビルド、テストの実行、作業の検証を行うことができます。
Copilotクラウドエージェント の統合ファイアウォールはWindowsと互換性がないため、独自のネットワーク制御を実装できるAzureプライベート ネットワークでは、セルフホステッド ランナー以上の GitHub ホストランナーのみを使用することをお勧めします。 Azureプライベート ネットワークを使用するランナーの詳細については、「[AUTOTITLE](/admin/configuring-settings/configuring-private-networking-for-hosted-compute-products/about-azure-private-networking-for-github-hosted-runners-in-your-enterprise)を参照してください。
セルフホステッドランナーでWindowsを使用するには、上記の「セルフホステッドランナーの使用」セクションの手順に従って、Windowsランナー用のラベルを使用してください。 より大きなGitHubホストランナーでWindowsを使用するには、Windowsランナーのラベルを使用して、上の「大きなランナーにアップグレードする」セクションの手順に従います。
Git Large File Storage (LFS) の有効化
Git Large File Storage (LFS) を使用してリポジトリに大きなファイルを格納する場合は、Git LFS をインストールして LFS オブジェクトをフェッチするために Copilotの環境をカスタマイズする必要があります。
Git LFS を有効にするには、actions/checkout オプションを copilot-setup-steps に設定した lfs ステップを true ジョブに追加します。
# ...
jobs:
copilot-setup-steps:
runs-on: ubuntu-latest
permissions:
contents: read # for actions/checkout
steps:
- uses: actions/checkout@v5
with:
lfs: true
# ...
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の環境変数を設定するには、GitHub Actions環境に`copilot`変数またはシークレットを作成します。 パスワードや API キーなどの機密情報が値に含まれている場合は、 GitHub Actions シークレットを使用することをお勧めします。
-
GitHub で、リポジトリのメイン ページに移動します。
-
リポジトリ名の下にある [Settings] をクリックします。 [設定] タブが表示されない場合は、 [] ドロップダウン メニューを選び、 [設定] をクリックします。
![タブを示すリポジトリ ヘッダーのスクリーンショット。 [設定] タブが濃いオレンジ色の枠線で強調表示されています。](/https/docs.github.com/assets/cb-28260/images/help/repository/repo-actions-settings.png)
-
左側のサイドバーで、 [環境] をクリックします。
-
`copilot` 環境をクリックします。 -
シークレットを追加するには、[環境シークレット] の下にある [環境シークレットを追加] をクリックします。 変数を追加するには、[環境変数] の下の [環境変数を追加] をクリックします。
-
[名前] と [値] フィールドに入力し、必要に応じて [シークレットを追加] または [変数を追加] をクリックします。
詳細については、次を参照してください。
-
[AUTOTITLE](/copilot/how-tos/use-copilot-agents/cloud-agent/customize-the-agent-firewall)