# Настройка репозитория для приложение Copilot GitHub

Определите инструкции, сценарии и поведение автоматизации для конкретного GitHub Copilot appрепозитория.

Используйте `.github/github-app.yml` в репозитории, чтобы определить, как GitHub Copilot app должно вести себя для этого проекта.

Эти параметры проекта также можно изменить в пользовательском интерфейсе приложения. Если `.github/github-app.yml` он уже существует, изменения пользовательского интерфейса записываются обратно в этот файл. Если он еще не существует, его можно создать из текущих параметров проекта в приложении.

## Сведения о расположении файла конфигурации

Создайте файл по адресу:

```text copy
.github/github-app.yml
```

Приложение также поддерживает устаревшее имя `.github/copilot-desktop.yml` файла для обратной совместимости.

Инструкции по настройке на основе пользовательского интерфейса см. в разделе [Настройка приложения GitHub приложение Copilot](/ru/enterprise-cloud@latest/copilot/how-tos/github-copilot-app/customize-github-copilot-app).

## Проверка и доверие конфигурации

Когда приложение обнаруживает конфигурацию из репозитория, он не применяет инструкции репозитория, скрипты или другие параметры из файла, пока не будет проверяться и принимать конфигурацию. Это защищает вас от выполнения команд или применения параметров, добавленных другим участником. Конфигурации, создаваемые или обновляемые с помощью пользовательского интерфейса приложения, являются доверенными автоматически.

> \[!WARNING]
> Перед принятием конфигурации репозитория просмотрите каждую настроенную команду и зависимости, которые она выполняет. Скрипты и дочерние процессы получают GitHub учетные данные, описанные далее в этой статье, поэтому никогда не настраивайте их для регистрации или сохранения этих переменных среды.

Если файл изменяется за пределами приложения, включая изменения в пробелы или комментарии, необходимо проверить и принять обновленную конфигурацию перед применением приложения. Пока вы не примите текущую версию, приложение продолжает использовать параметры проекта, которые ранее были настроены в приложении.

## Пример конфигурации

```yaml copy
instructions: |
  Use bun instead of npm.

scripts:
  - name: Setup
    command: bun install
    triggers:
      - session.create
  - name: Run
    command: bun run dev
  - name: Archive cleanup
    command: rm -rf node_modules
    triggers:
      - session.archive

server_ready_pattern: '(?i)Local:\s+(https?://\S+)'
auto_open_in_browser: true

automation:
  auto_issue_session: true
  remote_control: false
```

## Настройка инструкций и скриптов

### `instructions`

Используйте `instructions` для добавления инструкций для конкретного репозитория в системный запрос сеансов в проекте. Если вы также настраиваете глобальные инструкции в приложении, глобальные инструкции применяются сначала, а затем инструкции проекта.

### `scripts`

Используется `scripts` для определения команд, которые отображаются в приложении и могут выполняться вручную или на определенных триггерах.

Каждый элемент скрипта поддерживает:

* `name` (`string`): Отображаемое имя в пользовательском интерфейсе.
* `command` (`string`): Команда для выполнения.
* `triggers` (`string[]`необязательно): события, которые автоматически запускают скрипт.

Скрипты без `triggers` использования вручную.

### Значения триггера

Используйте канонические значения триггеров в файле:

* `session.create`
* `session.archive`

Приложение также принимает эти устаревшие псевдонимы при анализе существующих файлов:

* `workspace.create` (псевдоним для `session.create`)
* `workspace.archive` (псевдоним для `session.archive`)

При запуске `COPILOT_SCRIPT_TRIGGER` активированного скрипта задано каноническое значение:

* `session.create`
* `session.archive`

## Настройка поведения обнаружения сервера и браузера

### `server_ready_pattern`

`server_ready_pattern` — это регулярное выражение, используемое для определения времени запуска скрипта на сервере.

Шаблоны используют синтаксис, поддерживаемый контейнером Rust `regex` . Сведения о синтаксисе [см.](https://docs.rs/regex/1/regex/#syntax) в документации по crate. Если шаблон недопустим, приложение использует шаблон обнаружения сервера по умолчанию.

Используйте первую группу записи для обнаруженного URL-адреса или порта. Приложение считывает группу `1`записи:

* Если запись является URL-адресом (`http://...` или `https://...`), используется URL-адрес.
* Если запись является только номером порта (например `3000`), приложение преобразует его в `http://localhost:3000`.

### `auto_open_in_browser`

Если `auto_open_in_browser` это `true`так, приложение открывает обнаруженный URL-адрес выполнения в интегрированном браузере. Если это поле опущено, то по умолчанию используется `true`действующее значение по умолчанию.

## Настройка поведения автоматизации

Задайте параметры автоматизации в разделе `automation`:

* `automation.auto_issue_session` (`boolean`) определяет, автоматически ли приложение запускает сеанс с контекстом проблемы. Если опущено, то по умолчанию используется `true`действующее значение по умолчанию.
* `automation.remote_control` (`boolean`) определяет, можно ли получить доступ к сеансам GitHub из веб-интерфейса или GitHub Mobile. Если опущено, то по умолчанию используется `false`действующее значение по умолчанию.

Если ваше Copilot место поступает из организации, для доступа к удаленному управлению необходимо установить соответствующее значение "Сохранить локальные сеансы в облаке". Управляемые `remoteControl` предприятием параметры могут дополнительно ограничить удаленный контроль даже в том `automation.remote_control`случае`true`. Дополнительные сведения см. в разделе \[AUTOTITLE и [О дистанционном управлении GitHub Copilot CLI сессиями](/ru/enterprise-cloud@latest/copilot/concepts/agents/copilot-cli/about-remote-control)]\(/copilot/reference/enterprise-administrators/enterprise-managed-settings).

## Переменные среды выполнения для скриптов

Скрипты выполняются с этими переменными среды, предоставляемыми приложением:

| Variable                 | Описание                                                                                  |
| ------------------------ | ----------------------------------------------------------------------------------------- |
| `COPILOT_WORKSPACE_NAME` | Текущее имя рабочей области.                                                              |
| `COPILOT_WORKSPACE_PATH` | Абсолютный путь к рабочей области.                                                        |
| `COPILOT_ROOT_PATH`      | Абсолютный путь к корневому извлечению проекта.                                           |
| `COPILOT_DEFAULT_BRANCH` | Project ветви по умолчанию.                                                               |
| `COPILOT_PORT`           | Порт App WebSocket для текущего контекста рабочей области.                                |
| `COPILOT_SCRIPT_TRIGGER` | Триггер, запускающий скрипт (только для триггерных скриптов).                             |
| `GH_TOKEN`               | Маркер для выбранной GitHub учетной записи.                                               |
| `GH_HOST`                | Узел для выбранной GitHub учетной записи.                                                 |
| `COPILOT_GH_ACCOUNT_*`   | Маркеры для каждой учетной записи, вошедшего в систему, включая выбранную учетную запись. |

Для каждой `COPILOT_GH_ACCOUNT_*` переменной приложение строчным регистром узла и входа оставляет буквы и цифры ASCII без изменений и заменяет все остальные байты UTF-8 шестнадцатеричным значением, окруженным подчеркиванием. Имя переменной использует формат `COPILOT_GH_ACCOUNT_<HOST>_<LOGIN>`. Например, маркер для `alice` включено`github.com``COPILOT_GH_ACCOUNT_github_2E_com_alice`, а маркер для `user` включен `ghe-example.com``COPILOT_GH_ACCOUNT_ghe_2D_example_2E_com_user`.

## Устаревшая совместимость

Для обратной совместимости приложение по-прежнему может проанализировать старую фигуру на основе `scripts` объектов:

```yaml copy
scripts:
  setup: bun install
  run: bun run dev
  archive: rm -rf node_modules
```

В этой устаревшей форме:

* `setup` сопоставляется с скриптом с триггером создания.
* `archive` сопоставляется с скриптом с триггером архива.
* `run` сопоставляется с записями скриптов `{ name, command }` вручную и может быть одной командной строкой или списком объектов.