GitHub Actions
Для рабочих процессов в репозитории, принадлежащем организации, предоставьте встроенному маркеру разрешение на выполнение Copilot запросов:
permissions:
contents: read
copilot-requests: write
jobs:
copilot:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- run: your-application
env:
GITHUB_TOKEN: $
Необходимо включить использование Copilot CLI, выставленной в политику организации. Этот подход не требует GitHub приложения или сохраненного секрета проверки подлинности. Дополнительные сведения см. в разделе Использование Copilot CLI в GitHub Actions с GITHUB_TOKEN.
Другие службы и системы CI
Для служб за пределами GitHub Actions:
-
Создайте приложение GitHub с разрешением репозитория запросов Copilot для чтения и записи.
-
Установите его в организации, которая должна быть выставлена счета. Для текущей проверки разрешений Copilot требуется доступ ко всем репозиториям.
-
Генерация токена доступа для установки приложения GitHub с идентификатором репозитория и разрешением Copilot:
{ "repository_ids": [123456789], "permissions": { "copilot_requests": "write" } } -
Передайте полученный
ghs_маркер в среду выполнения в качествеCOPILOT_GITHUB_TOKEN.
Организация должна быть включена для Copilot запросов из GitHub установки приложений. Срок действия маркеров установки истекает через один час.
Предупреждение
Не передайте маркер установки через параметр пакета SDK gitHubToken``github_tokenили эквивалентный параметр. Этот параметр предназначен для маркеров пользователей. Маркеры установки должны использовать путь проверки подлинности среды выполнения.
Настройка среды выполнения
В следующих примерах предполагается, что токен монетного двора находится в INSTALLATION_TOKEN. Они передают его только дочерней среде выполнения и отключают резервные копии для сохраненных учетных данных пользователя.
import { CopilotClient, RuntimeConnection } from "@github/copilot-sdk";
const token = process.env.INSTALLATION_TOKEN;
if (!token) throw new Error("INSTALLATION_TOKEN is required");
const client = new CopilotClient({
connection: RuntimeConnection.forStdio(),
env: {
...process.env,
COPILOT_GITHUB_TOKEN: token,
},
useLoggedInUser: false,
});
import os
from copilot import CopilotClient, RuntimeConnection
client = CopilotClient(
connection=RuntimeConnection.for_stdio(),
env={**os.environ, "COPILOT_GITHUB_TOKEN": os.environ["INSTALLATION_TOKEN"]},
use_logged_in_user=False,
)
package main
import (
"log"
"os"
copilot "github.com/github/copilot-sdk/go"
)
func main() {
token, ok := os.LookupEnv("INSTALLATION_TOKEN")
if !ok {
log.Fatal("INSTALLATION_TOKEN is required")
}
client := copilot.NewClient(&copilot.ClientOptions{
Connection: copilot.StdioConnection{},
Env: append(os.Environ(), "COPILOT_GITHUB_TOKEN="+token),
UseLoggedInUser: copilot.Bool(false),
})
_ = client
}
use github_copilot_sdk::{ClientOptions, Transport};
fn main() {
let token = std::env::var("INSTALLATION_TOKEN").expect("INSTALLATION_TOKEN is required");
let options = ClientOptions::new()
.with_transport(Transport::Stdio)
.with_env([("COPILOT_GITHUB_TOKEN", token)])
.with_use_logged_in_user(false);
drop(options);
}
using System.Collections;
using GitHub.Copilot;
var token = Environment.GetEnvironmentVariable("INSTALLATION_TOKEN")
?? throw new InvalidOperationException("INSTALLATION_TOKEN is required");
var environment = Environment.GetEnvironmentVariables()
.Cast<DictionaryEntry>()
.ToDictionary(entry => (string)entry.Key, entry => entry.Value?.ToString() ?? "");
environment["COPILOT_GITHUB_TOKEN"] = token;
await using var client = new CopilotClient(new CopilotClientOptions
{
Connection = RuntimeConnection.ForStdio(),
Environment = environment,
UseLoggedInUser = false,
});
import com.github.copilot.CopilotClient;
import com.github.copilot.rpc.CopilotClientOptions;
import java.util.HashMap;
import java.util.Objects;
var environment = new HashMap<>(System.getenv());
var token = Objects.requireNonNull(
System.getenv("INSTALLATION_TOKEN"), "INSTALLATION_TOKEN is required");
environment.put("COPILOT_GITHUB_TOKEN", token);
try (var client = new CopilotClient(new CopilotClientOptions()
.setEnvironment(environment)
.setUseLoggedInUser(false))) {
// Use the client.
}
Для встроенного FFI установите COPILOT_GITHUB_TOKEN в среде узла перед загрузкой среды выполнения. Параметры среды для каждого клиента не поддерживаются. Для существующего URI среды выполнения задайте его в этом процессе выполнения.
токены обновления
Помите новый маркер установки до истечения срока действия текущего маркера. Для дочернего процесса перезапустите клиент ПАКЕТА SDK с новой средой. Для внутрипроцессной или существующей среды выполнения перезапустите среду выполнения узла с новым маркером.
Billing
Использование присваивается и выставляется счет учетной записи, которая владеет установкой GitHub приложения. Использование установки организации для выставления счетов организации; Атрибуты установки учетной записи пользователя для этого пользователя.
Troubleshooting
| Симптом | Проверьте |
|---|---|
401 Unauthorized | Убедитесь, что организация поддерживает проверку подлинности GitHub установки приложений для Copilot. |
403 Resource not accessible by integration или ошибка с указанием сведений о пользователе | Убедитесь, что маркер установки включен COPILOT_GITHUB_, а не параметр явного маркера пакета SDK. |
403 Forbiddenиз API Copilot | Убедитесь, что запрос маркера repository_ids содержит и copilot_requests: write. |
403 Forbidden с требуемым запросом маркера | Убедитесь, что установка приложения имеет доступ ко всем репозиториям , а затем помят новый маркер. |
| Запрошенная модель недоступна | Убедитесь, что политика Copilot организации позволяет модели и пакетной среде выполнения поддерживать ее. |
| Счета за неправильную учетную запись | Убедитесь, что установка принадлежит предполагаемой организации. |
Дополнительные материалы
- Проверка подлинности: другие методы проверки подлинности и приоритет
- Генерация токена доступа для установки приложения GitHub: создание маркера приложения GitHub