Copilot クラウドエージェントの開発環境のカスタマイズについて
タスクに取り組んでいる間、 Copilot は独自のエフェメラル開発環境にアクセスでき、 GitHub Actionsを利用して、コードの探索、変更、自動テストやリンターの実行などを行うことができます。
Copilot
Copilotを使用して、[](#customizing-copilots-development-environment-with-copilot-setup-steps)の開発環境をカスタマイズできます。
Copilotセットアップステップファイルを使用すると、次のことができます。
- Copilotの環境にツールまたは依存関係をプレインストールする
- 標準の GitHubホスト型 GitHub Actions ランナーから大きなランナーにアップグレードする
- セルフホステッドランナーでGitHub Actions実行する
- 既定の Ubuntu Linux 環境ではなく、Windows 開発環境Copilot提供する
- Git Large File Storage (LFS) を有効にする
さらに、次のものもご利用いただけます。
メモ
組織の所有者は、組織内のすべてのリポジトリで 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(下記参照)servicessnapshottimeout-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@v6
- 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 プライベート ネットワークで大規模なランナーを使用している場合は、 Copilot クラウドエージェントに必要なホストへの送信アクセスを許可するように Azure プライベート ネットワークを構成します。
uploads.github.comuser-images.githubusercontent.comapi.individual.githubcopilot.com( Copilot Pro または Copilot Pro+ ユーザーがリポジトリで Copilot クラウドエージェント を使用することが予想される場合)api.business.githubcopilot.com( Copilot 事業 ユーザーがリポジトリで Copilot クラウドエージェント を使用することが予想される場合)api.enterprise.githubcopilot.com( Copilot Enterprise ユーザーがリポジトリで Copilot クラウドエージェント を使用することが予想される場合)- OpenAI Codexサードパーティ エージェントを使用している場合 (詳細については、サード パーティのエージェントについて を参照してください)。
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.comapi.individual.githubcopilot.com( Copilot Pro または Copilot Pro+ ユーザーがリポジトリで Copilot クラウドエージェント を使用することが予想される場合)api.business.githubcopilot.com( Copilot 事業 ユーザーがリポジトリで Copilot クラウドエージェント を使用することが予想される場合)api.enterprise.githubcopilot.com( Copilot Enterprise ユーザーがリポジトリで Copilot クラウドエージェント を使用することが予想される場合)- OpenAI Codexサードパーティ エージェントを使用している場合 (詳細については、サード パーティのエージェントについて を参照してください)。
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 Actions ランナーの使用 」セクションの手順に従います。 より大きな 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@v6
with:
lfs: true
# ...
jobs:
copilot-setup-steps:
runs-on: ubuntu-latest
permissions:
contents: read # for actions/checkout
steps:
- uses: actions/checkout@v6
with:
lfs: true
Copilotの環境での環境変数の設定
Copilotの環境で環境変数を設定して、アクセス権を持つツールまたは依存関係を構成または認証することができます。
Copilotの環境変数を設定し、GitHub Actions環境で`copilot`変数またはシークレットを作成することができます。 パスワードや API キーなどの機密情報が値に含まれている場合は、 GitHub Actions シークレットを使用することをお勧めします。
-
GitHub で、リポジトリのメイン ページに移動します。
-
リポジトリ名の下にある [Settings] をクリックします。 [設定] タブが表示されない場合は、 [] ドロップダウン メニューを選び、 [設定] をクリックします。
![タブを示すリポジトリ ヘッダーのスクリーンショット。 [設定] タブが濃いオレンジ色の枠線で強調表示されています。](/assets/cb-28260/images/help/repository/repo-actions-settings.png)
-
左側のサイドバーで、 [環境] をクリックします。
-
`copilot` 環境をクリックします。 -
シークレットを追加するには、[環境シークレット] の下にある [環境シークレットを追加] をクリックします。 変数を追加するには、[環境変数] の下の [環境変数を追加] をクリックします。
-
[名前] と [値] フィールドに入力し、必要に応じて [シークレットを追加] または [変数を追加] をクリックします。