Средства выполнения (раннеры)¶
Средство выполнения (раннер) — это приложение, работающее с CI/CD для запуска заданий в пайплайне.
Версии средств выполнения¶
В целях совместимости мажорная и минорная версии средств выполнения должны быть синхронизированы с мажорной и минорной версиями AppSec.Code. Более старые версии средств выполнения могут работать с более новыми версиями AppSec.Code, и наоборот. Однако при разнице в версиях функции могут быть недоступны или работать некорректно.
Обратная совместимость гарантируется между минорными обновлениями версий. Однако иногда в минорных версиях AppSec.Code могут появляться новые возможности, которые требуют, чтобы средство выполнения было той же минорной версии.
Регистрация средства выполнения¶
После установки приложения вы регистрируете отдельные средства выполнения (раннеры). Средства выполнения — это агенты, которые выполняют поступающие CI/CD-задания.
При регистрации средства выполнения устанавливается связь между экземпляром AppSec.Code и машиной, на которой установлено средство выполнения.
Задания обычно обрабатываются на той же машине, на которой установлено средство выполнения. Тем не менее, можно также поручить средству выполнения выполнение заданий в контейнере, в кластере Kubernetes или в облачных экземплярах с автоматическим масштабированием.
Исполнители¶
При регистрации средства выполнения необходимо выбрать исполнителя.
Исполнитель определяет окружение, в котором выполняется каждое задание.
Например, если вы хотите, чтобы CI/CD-задание выполняло команды в кастомном контейнере Docker, вы можете установить Runner на Linux-сервере и зарегистрировать runner, использующий Docker executor.
Возможны и другие конфигурации. Можно установить Runner на виртуальную машину, а в качестве исполнителя использовать другую виртуальную машину.
Когда вы устанавливаете Runner в контейнер Docker и выбираете Docker executor для запуска заданий, это иногда называют конфигурацией «Docker-in-Docker».
Кто имеет доступ к средствам выполнения в пользовательском интерфейсе¶
Перед регистрацией средства выполнения следует определить, должен ли доступ к нему иметь каждый пользователь, или же необходимо ограничить его только определенной группой или проектом.
Существует три типа средств выполнения (раннеров), в зависимости от того, кому вы хотите предоставить доступ:
- Совместно используемые средства выполнения — для использования всеми проектами.
- Групповые средства выполнения — для всех проектов и подгрупп в группе.
- Проектные средства выполнения — для индивидуальных проектов.
Область действия средства выполнения определяется при регистрации. Так средство выполнения узнает, для каких проектов оно доступен.
Теги¶
В процессе регистрации средства выполнения можно добавить к нему теги.
Когда выполняется CI/CD-задание, оно определяет, какое средство выполнения использовать, исходя из присвоенных ему тегов. Теги — единственный способ отфильтровать список доступных для выполнения заданий средств выполнения.
Например, если средство выполнения имеет тег ruby, вы должны добавить в файл .appseccode-ci.yml вашего проекта следующий код:
job:
tags:
- ruby
При выполнении этого задания используется средство выполнения с тегом ruby.
Конфигурирование средств выполнения¶
Настроить средство выполнения можно, отредактировав файл config.toml. Этот файл устанавливается в процессе установки средства выполнения.
В этом файле можно редактировать настройки для конкретного средства выполнения или для всех средств выполнения.
Можно задать такие параметры, как логирование и кэш. Можно задавать параллелизацию, память, лимиты процессора и т. д.
Мониторинг средств выполнения¶
Вы можете использовать Prometheus для мониторинга средств выполнения. Можно просматривать такие данные, как количество выполняемых в данный момент заданий и использование ими процессора.
Использование средств выполнения для выполнения заданий¶
После того как средство выполнения настроено и доступно для проекта, его могут использовать задания CI/CD.
Особенности¶
Средство выполнения обладает следующими особенностями и возможностями:
- Одновременное выполнение нескольких заданий.
- Использование нескольких токенов с несколькими серверами (даже для одного проекта).
- Ограничение количества одновременных заданий на один токен.
- Можно выполнять задания:
- Локально.
- С использованием контейнеров Docker.
- С использованием контейнеров Docker и выполнением заданий по SSH.
- С использованием контейнеров Docker с автомасштабированием в различных облаках и гипервизорах виртуализации.
- С подключением к удаленному SSH-серверу.
- Написан на языке Go и распространяется в виде одного бинарного файла без каких-либо других требований.
- Поддерживает Bash, PowerShell Core и Windows PowerShell.
- Работает на GNU/Linux, macOS и Windows (практически везде, где можно запустить Docker).
- Позволяет кастомизировать среду выполнения задания.
- Автоматическая перезагрузка конфигурации без перезапуска.
- Простая настройка с поддержкой окружений Docker, Docker-SSH, Parallels или SSH.
- Включает кэширование контейнеров Docker.
- Простая установка в качестве сервиса для GNU/Linux, macOS и Windows.
- Встроенный HTTP-сервер метрик Prometheus.
- Референсные worker’ы для мониторинга и передачи в AppSec.Code метрик Prometheus и других данных, специфичных для конкретного задания.