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

Файл конфигурации

Создание файла конфигурации

Semaphore использует файл config.json для основной конфигурации. Вы можете сгенерировать этот файл интерактивно с помощью встроенных инструментов или через веб-конфигуратор.

Генерация через CLI

Используйте следующие команды для интерактивной генерации файла конфигурации:

  • Для сервера Semaphore:

    semaphore setup
  • Для runner'а Semaphore:

    semaphore runner setup
    подсказка

    Подробнее о настройке runner'а см. в разделе Runner'ы.

Генерация на сайте

Также можно воспользоваться интерактивным веб-конфигуратором:

Пример файла конфигурации

Semaphore использует файл конфигурации config.json со следующим содержимым:

{
"mysql_test": {
"host": "127.0.0.1:3306",
"user": "root",
"pass": "***",
"name": "semaphore"
},

"dialect": "mysql",

"git_client": "go_git",
"git_attempts": 4,

"auth": {
"totp": {
"enabled": false,
"allow_recovery": true
}
},

"use_remote_runner": true,
"runner_registration_token": "73fs***",

"tmp_path": "/tmp/semaphore",
"cookie_hash": "96Nt***",
"cookie_encryption": "x0bs***",
"access_key_encryption": "j1ia***",

"max_tasks_per_template": 3,

"schedule": {
"timezone": "UTC"
},

"log": {
"events": {
"enabled": true,
"path": "./events.log"
}
},

"process": {
"chroot": "/opt/semaphore/sandbox"
}
}

Использование файла конфигурации

  • Для сервера Semaphore:
semaphore server --config ./config.json
  • Для runner'а Semaphore:
semaphore runner start --config ./config.json

Каталог секретов

Semaphore хранит короткоживущие файлы секретов (например, токены HashiCorp Vault или OpenBao, считываемые с диска) в настраиваемом каталоге.

ОпцияПеременная окруженияОписание
dirs.secretsSEMAPHORE_SECRETS_PATHКаталог для файлов секретов. По умолчанию: /tmp/semaphore.
secrets_path (устаревшая)SEMAPHORE_SECRETS_PATHНастройка верхнего уровня, сохранённая для обратной совместимости. Используется, только если dirs.secrets не задан или оставлен со значением по умолчанию.

Приоритет: отличное от значения по умолчанию dirs.secrets имеет приоритет над устаревшим secrets_path. Если вы задаёте SEMAPHORE_SECRETS_PATH, Semaphore применяет его к обоим полям.

Пример в текущем формате:

{
"dirs": {
"secrets": "/var/lib/semaphore/secrets"
}
}

В старых установках всё ещё может использоваться:

{
"secrets_path": "/var/lib/semaphore/secrets"
}

Файлы токенов, на которые ссылаются внешние хранилища секретов, должны находиться внутри этого каталога.

Операции Git

Semaphore клонирует и обновляет репозитории задач перед каждым запуском. Этим поведением управляют две опции:

ОпцияПеременная окруженияОписание
git_clientSEMAPHORE_GIT_CLIENTРеализация Git-клиента: cmd_git (по умолчанию, использует системный бинарный файл git) или go_git (клиент на чистом Go).
git_attemptsSEMAPHORE_GIT_ATTEMPTSСколько раз выполняются попытки clone и pull, прежде чем задача завершится ошибкой. По умолчанию: 4. Установите 1, чтобы выполнить одну попытку без повторов.

Если clone или pull завершился ошибкой и попытки ещё остались, Semaphore ждёт с экспоненциальной задержкой (начиная с 1 секунды, удваивая при каждой попытке, максимум 60 секунд) и записывает в лог сообщение вроде Git pull failed (...), retrying in 2s. Повторы применяются только к сетевым операциям; неудачный checkout или ошибка аутентификации всё равно приводят к сбою задачи после исчерпания всех попыток.

Если ваш git-сервер периодически недоступен, увеличьте git_attempts. Если ошибки возникают сразу и постоянно (неверные учётные данные, отсутствующий репозиторий), устраните первопричину — повторы тут не помогут.