Skip to main content
Мы публикуем частые обновления нашей документации, и перевод этой страницы может все еще выполняться. Актуальные сведения см. в документации на английском языке.

Автомасштабирование с помощью локальных средств выполнения

Вы можете автоматически масштабировать локальные средства выполнения тестов в ответ на события веб-перехватчика.

Примечание. В GitHub Enterprise Server в настоящее время не поддерживаются средства выполнения тестов, размещенные в GitHub. Дополнительные сведения о планируемой поддержке в будущем см. в GitHub public roadmap.

Сведения об автомасштабировании

Вы можете автоматически увеличивать или уменьшать количество локальных средств выполнения в вашей среде в ответ на полученные события веб-перехватчика с определенной меткой. Например, можно создать автоматизацию, которая добавляет новое локальное средство выполнения при каждом получении события веб-перехватчика workflow_job с действием queued, которое уведомляет о готовности нового задания к обработке. Полезные данные веб-перехватчика содержат данные метки, поэтому вы можете определить тип средства выполнения, который запрашивает задание. После завершения задания можно создать автоматизацию, которая удаляет средство выполнения в ответ на действие workflow_job completed.

Рекомендуемые решения автомасштабирования

GitHub тесно сотрудничает с двумя проектами открытого кода, которые рекомендуется использовать для автомасштабирования средств выполнения. В зависимости от ваших потребностей вам может подойти одно или оба решения.

Следующие репозитории содержат подробные инструкции по настройке этих средств автомасштабирования.

Каждое решение имеет определенные особенности, которые важно учитывать.

Функцииactions-runner-controllerterraform-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. Затем вы должны создать собственную автоматизацию масштабирования в ответ на эти полезные данные веб-перехватчика.

Требования к проверке подлинности

Вы можете регистрировать и удалять репозиторий и локальные средства выполнения организации с помощью API. Для проверки подлинности в API в вашей реализации автомасштабирования может использоваться маркер доступа или приложение GitHub.

Для маркера доступа потребуется следующая область.

  • Для частных репозиториев используйте маркер доступа с областьюrepo.
  • Для общедоступных репозиториев используйте маркер доступа с областьюpublic_repo.
  • Для организаций используйте маркер доступа с областьюadmin:org.

Для проверки подлинности с помощью приложения GitHub необходимо назначить следующие разрешения.

  • Для репозиториев назначьте разрешение administration.
  • Для организаций назначьте разрешение organization_self_hosted_runners.

Вы можете регистрировать и удалять локальные средства выполнения предприятия с помощью API. Для проверки подлинности в API в вашей реализации автомасштабирования может использоваться маркер доступа.

Для маркера доступа потребуется область manage_runners:enterprise.