Перейти к основному содержимому

Ключевые понятия

В основе Semaphore лежит одна главная идея: шаблон задачи собирает всё, что нужно для запуска, а его запуск порождает задачу. Понять, где настраивается каждая часть этого «всего», — значит почти полностью освоить продукт.

Объектная модель

Проекты содержат всё

Проект — это единица изоляции. Репозитории, ключи, инвентари, группы переменных, шаблоны и история задач принадлежат ровно одному проекту, как и состав команды. Два проекта не разделяют между собой ничего, кроме сервера и его пользователей, — именно поэтому проект является правильной границей между командами, средами или заказчиками.

Ресурсы описывают входные данные

Существует четыре вида ресурсов, чтобы одно и то же значение можно было переиспользовать во многих шаблонах и менять в одном месте:

  • Репозиторий — место, где лежит playbook или скрипт.
  • Хранилище ключей хранит SSH-ключи, логины и токены, которые нужны для доступа к репозиторию и целевым хостам.
  • Инвентарь перечисляет хосты, на которые нацелен запуск, и то, как к ним подключаться.
  • Группа переменных передаёт переменные и секреты в окружение запуска.

Шаблоны определяют запуск

Шаблон задачи выбирает приложение (Ansible, Terraform, скрипт), один репозиторий, playbook или точку входа в нём, а также инвентарь, группу переменных и ключи. Он же решает, что может изменить человек, запускающий задачу: survey-переменные превращают шаблон в форму, а prompts позволяют пользователю переопределить ветку, инвентарь или дополнительные аргументы.

Задачи — это запуски

Запуск шаблона создаёт задачу. У задачи есть собственный лог, статус, длительность и имя того, кто её запустил, и эта запись сохраняется после завершения запуска. Задачи запускаются из UI, по расписанию, по вебхуку интеграции, через API или из другого шаблона в рабочем процессе.

Глоссарий

ТерминЗначение
Ключ доступаОдна запись в Хранилище ключей: SSH-ключ, логин с паролем или токен. Его секретная часть шифруется в базе данных.
ОповещениеУведомление, отправляемое, когда задача достигает определённого состояния. Каналы настраиваются на сервере, а затем включаются для проекта и для шаблона.
ПриложениеИнструмент, который запускает шаблон: Ansible, Terraform, OpenTofu, Terragrunt, Bash, PowerShell или Python.
Шаблон сборкиТип шаблона, который создаёт версионированный артефакт; каждый запуск увеличивает версию.
Шаблон развёртыванияТип шаблона, связанный с шаблоном сборки; при запуске спрашивает, какую версию сборки доставлять.
ИсполнительСпособ, которым раннер запускает задание: как локальный процесс, в контейнере Docker или в Pod'е Kubernetes.
ИнтеграцияВходящий вебхук, который запускает шаблон, когда его вызывает внешняя система.
ИнвентарьХосты, на которые нацелена задача: статический текст, файл в репозитории или скрипт динамического инвентаря.
Хранилище ключейНабор ключей доступа в рамках проекта.
ПроектКонтейнер верхнего уровня: ресурсы, шаблоны, история задач и состав команды.
РольТо, что участник может делать внутри проекта. Встроенные роли: Owner, Manager, Task Runner и Guest.
РаннерОтдельный процесс, который выполняет задачи вместо сервера.
РасписаниеCron-выражение, запускающее шаблон без участия человека.
Хранилище секретовВнешняя система, например HashiCorp Vault, которая хранит секретные значения вместо базы данных Semaphore.
Survey-переменнаяПоле, которое определяет шаблон и заполняет пользователь при запуске задачи; становится переменной запуска.
ЗадачаОдно выполнение шаблона с его логом, статусом и автором.
Шаблон задачиПереиспользуемое определение того, что и с чем запускать. Часто просто «шаблон».
Группа переменныхИменованный набор переменных и секретов, передаваемых в запуск. В старых версиях и в API называется Environment.
ПредставлениеВкладка, которая группирует часть шаблонов проекта в списке шаблонов.
Рабочий процессГраф шаблонов, выполняемых последовательно, с ветвлениями, согласованиями и задержками. Возможность Pro.

Что дальше