Обзор
Предварительная сборка собирает основные компоненты пространства кода для определенного сочетания репозитория, ветви и devcontainer.json файла конфигурации. Он предоставляет быстрый способ создания нового пространства кода. В частности, для сложных и (или) больших репозиториев можно быстрее создать новое пространство кода с помощью предварительной сборки.
Если в настоящее время для создания пространства кода для репозитория требуется более 2 минут, скорее всего, вы можете воспользоваться предварительными сборками. Это связано с тем, что с предварительной сборкой любой исходный код, расширения редактора, зависимости проекта, команды и конфигурации уже скачаны, установлены и применены перед созданием пространства кода.
По умолчанию при отправке изменений в репозиторий GitHub Codespaces используется GitHub Actions для автоматического обновления предстроек.
Когда предварительные сборки доступны для определенной ветви репозитория, определенного файла конфигурации контейнера разработки и региона, вы увидите метку " Подготовка к сборке" в списке параметров типа компьютера при создании пространства кода. Если предварительная сборка по-прежнему создается, вы увидите метку "Prebuild in progress". Дополнительные сведения см. в разделе Создание пространства кода для репозитория.

При создании пространства кода из шаблона на странице GitHub "Пространства кода" можно автоматически использовать предварительную сборку для ускорения создания. Дополнительные сведения о шаблонах см. в разделе Создание пространства кода на основе шаблона.
Примечание.
Каждая предварительная сборка, созданная с вашей личной учетной записью, потребляет место в хранилище, которое будет взиматься с оплатой, или для репозиториев, принадлежащих вашей личной GitHub учетной записи, будет использовать некоторые из ежемесячных включенных хранилищ. Дополнительные сведения см. в разделе Биллинг GitHub Codespaces.
Процесс предварительной сборки
Чтобы создать предварительную сборку, настройте конфигурацию предварительной сборки. При сохранении конфигурации GitHub Actions рабочий процесс запускается для создания каждой требуемой предварительной сборки. Один рабочий процесс для каждой предварительной сборки. Рабочие процессы также запускаются всякий раз, когда необходимо обновить предварительные сборки для вашей конфигурации. Это может происходить с запланированными интервалами, при отправке в репозиторий с поддержкой предварительной сборки или при изменении конфигурации контейнера разработки. Дополнительные сведения см. в разделе Настройка предварительных сборок.
При запуске GitHub рабочего процесса конфигурации предварительной сборки создает временное пространство кода, выполняя операции установки вплоть до любых onCreateCommand и updateContentCommand команд в devcontainer.json файле. Во время создания предварительной сборки команды не postCreateCommand выполняются. Дополнительные сведения об этих командах см devcontainer.json . в справочнойVS Code документации. Затем будет создан и сохранен моментальный снимок созданного контейнера.
Как и в других GitHub Actions рабочих процессах, выполнение рабочего процесса конфигурации предварительной сборки будет использовать некоторые GitHub Actions минуты, включенные в вашу учетную запись, если у вас есть, или это будет взиматься за GitHub Actions минуты. Хранение предстроек пространства кода оплачивается так же, как и хранение активных или остановленных пространств кода. Дополнительные сведения см. в разделе Биллинг GitHub Codespaces.
При создании пространства кода из предварительной сборки GitHub загружает существующий моментальный снимок контейнера из хранилища и развертывает его на новой виртуальной машине, выполняя остальные команды, указанные в конфигурации контейнера разработки. Так как многие операции уже выполнены, например клонирование репозитория, создание codespace из предварительной сборки может быть значительно быстрее, чем создание без предварительной сборки. Это так, когда репозиторий большой и (или) команды onCreateCommand выполняются долго.
Сведения об отправке изменений в ветви с включенной предварительной сборкой
По умолчанию каждая отправка в ветвь с предварительной конфигурацией приводит GitHubGitHub Actions к запуску управляемого рабочего процесса для обновления предварительной сборки. Рабочий процесс предварительной сборки имеет ограничение параллелизма: запускается один рабочий процесс за раз для заданной конфигурации предварительной сборки, если только не были внесены изменения, влияющие на конфигурацию контейнера разработки для связанного репозитория. Дополнительные сведения см. в разделе Основные сведения о контейнерах разработки. Если выполнение уже выполняется, рабочий процесс, который был помещен в очередь, будет выполняться далее после завершения текущего выполнения.
Если для предварительной сборки настроено обновление при каждой отправке, это означает, что в случае очень частых отправок в репозиторий обновления предварительной сборки будут происходить не реже, чем требуется для запуска рабочего процесса предварительной сборки. Итак, если выполнение рабочего процесса обычно занимает один час, предварительные сборки будут создаваться для репозитория примерно раз в час, если выполнение завершится успешно, или чаще, если были отправки, изменяющие конфигурацию контейнера разработки в ветви.
Например, давайте представим, что выполняется 5 последовательных отправок в ветвь с предварительной конфигурацией. В этой ситуации:
-
Запуск рабочего процесса выполняется для первой принудительной отправки, чтобы обновить предварительную сборку.
-
Если 4 оставшиеся отправки не влияют на конфигурацию контейнера разработки, выполнение рабочего процесса для них ставится в очередь в состоянии "ожидание".
Если какая-либо из оставшихся 4 отправок изменяет конфигурацию контейнера разработки, то служба не пропустит это и немедленно запустит рабочий процесс создания предварительной сборки, соответствующим образом обновив предварительную сборку в случае успеха.
-
После завершения первого запуска рабочие процессы для второй, третьей и четвертой отправок будут отменены, а последний поставленный в очередь рабочий процесс (для пятой отправки) будет запущен и обновит предварительную сборку.