Примечание. В GitHub Enterprise Server в настоящее время не поддерживаются средства выполнения тестов, размещенные в GitHub. Дополнительные сведения о планируемой поддержке в будущем см. в GitHub public roadmap.
Сведения об автомасштабировании
Вы можете автоматически увеличивать или уменьшать количество локальных средств выполнения в вашей среде в ответ на полученные события веб-перехватчика с определенной меткой. Например, можно создать автоматизацию, которая добавляет новое локальное средство выполнения при каждом получении события веб-перехватчика workflow_job
с действием queued
, которое уведомляет о готовности нового задания к обработке. Полезные данные веб-перехватчика содержат данные метки, поэтому вы можете определить тип средства выполнения, который запрашивает задание. После завершения задания можно создать автоматизацию, которая удаляет средство выполнения в ответ на действие workflow_job
completed
.
Рекомендуемые решения автомасштабирования
GitHub тесно сотрудничает с двумя проектами открытого кода, которые рекомендуется использовать для автомасштабирования средств выполнения. В зависимости от ваших потребностей вам может подойти одно или оба решения.
Следующие репозитории содержат подробные инструкции по настройке этих средств автомасштабирования.
- actions/actions-runner-controller — контроллер Kubernetes для локальных средств выполнения тестов GitHub Actions.
- philips-labs/terraform-aws-github-runner — модуль Terraform для масштабируемых средств выполнения GitHub Actions в Amazon Web Services.
Каждое решение имеет определенные особенности, которые может быть важно учитывать.
actions-runner-controller | terraform-aws-github-runner | |
---|---|---|
Параметры выполнения | Kubernetes | Виртуальные машины Linux и Windows |
Поддерживаемые облака | Azure, Amazon Web Services, Google Cloud Platform, локальная среда | Amazon Web Services |
Где можно масштабировать средства выполнения | Уровни предприятия, организации и репозитория. По метке и по группе средства выполнения. | Уровни организации и репозитория. По метке и по группе средства выполнения. |
Как можно масштабировать средства выполнения | События веб-перехватчика, по расписанию, по запросу | События веб-перехватчика, по расписанию (только средства выполнения на уровне организации) |
Использование временных средств выполнения для автомасштабирования
GitHub рекомендует реализовать автомасштабирование с помощью временных локальных средств выполнения. Автомасштабирование с постоянными локальными средствами выполнения не рекомендуется. В некоторых случаях GitHub не может гарантировать, что задания не назначаются постоянным средствам выполнения, которые завершили работу. При использовании временных средств выполнения это может быть гарантировано, так как GitHub назначает средству выполнения только одно задание.
Такой подход позволяет управлять средствами выполнения как временными системами, так как вы можете использовать автоматизацию для обеспечения новой среды для каждого задания. Это помогает ограничить уязвимость любых конфиденциальных ресурсов из предыдущих заданий, а также снизить риск получения новых заданий скомпрометированным средством выполнения.
Чтобы добавить в вашу среду временное средство выполнения, включите параметр --ephemeral
при регистрации средства выполнения с помощью config.sh
. Пример:
./config.sh --url https://github.com/octo-org --token example-token --ephemeral
Служба GitHub Actions автоматически отменяет регистрацию средства выполнения после обработки одного задания. Затем вы можете создать собственную автоматизацию, которая очищает средство выполнения после отмены его регистрации.
Примечание. Если задание помечено для средств выполнения определенного типа, но ни одно из них недоступно, задание в очереди не сразу завершается сбоем. Оно будет оставаться в очереди до истечения 24-часового периода ожидания.
Использование веб-перехватчиков для автомасштабирования
Вы можете создать собственную среду автомасштабирования с помощью полезных данных, полученных от веб-перехватчика workflow_job
. Этот веб-перехватчик доступен на уровне репозитория, организации и предприятия, а полезные данные для этого события содержат ключ action
, соответствующий этапам жизненного цикла задания рабочего процесса, например, когда задания queued
, in_progress
и completed
. Затем вы должны создать собственную автоматизацию масштабирования в ответ на эти полезные данные веб-перехватчика.
- Дополнительные сведения о
workflow_job
веб-перехватчике см. в разделе События и полезные данные веб-перехватчика. - Сведения о работе с веб-перехватчиками см. в разделе Создание веб-перехватчиков.
Требования к проверке подлинности
Вы можете регистрировать и удалять репозиторий и локальные средства выполнения организации с помощью API. Для проверки подлинности в API в вашей реализации автомасштабирования может использоваться маркер доступа или приложение GitHub.
Для маркера доступа потребуется следующая область.
- Для частных репозиториев используйте маркер доступа с областью
repo
. - Для общедоступных репозиториев используйте маркер доступа с областью
public_repo
. - Для организаций используйте маркер доступа с областью
admin:org
.
Для проверки подлинности с помощью приложения GitHub необходимо назначить следующие разрешения.
- Для репозиториев назначьте разрешение
administration
. - Для организаций назначьте разрешение
organization_self_hosted_runners
.
Вы можете регистрировать и удалять локальные средства выполнения предприятия с помощью API. Для проверки подлинности в API в вашей реализации автомасштабирования может использоваться маркер доступа.
Для маркера доступа потребуется область manage_runners:enterprise
.