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

Переменные окружения

С помощью переменных окружения можно переопределить любую доступную опцию конфигурации.

Вы можете воспользоваться интерактивным генератором переменных окружения (для Docker):


Окружение приложений (Ansible, Terraform и т. д.)

Semaphore может передавать переменные окружения процессам приложений (Ansible, Terraform/OpenTofu, Python, PowerShell и т. д.). Для этого есть две связанные опции:

  • env_vars / SEMAPHORE_ENV_VARS: статические пары ключ-значение, которые будут заданы для процессов приложений.
  • forwarded_env_vars / SEMAPHORE_FORWARDED_ENV_VARS: список имён переменных, которые сервер будет пробрасывать из окружения собственного процесса.

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

{
"env_vars": {
"HTTP_PROXY": "http://proxy.internal:3128",
"ANSIBLE_STDOUT_CALLBACK": "yaml"
},
"forwarded_env_vars": [
"AWS_ACCESS_KEY_ID",
"AWS_SECRET_ACCESS_KEY",
"GOOGLE_APPLICATION_CREDENTIALS"
]
}

Эквивалент через переменные окружения:

export SEMAPHORE_ENV_VARS='{"HTTP_PROXY":"http://proxy.internal:3128","ANSIBLE_STDOUT_CALLBACK":"yaml"}'
export SEMAPHORE_FORWARDED_ENV_VARS='["AWS_ACCESS_KEY_ID","AWS_SECRET_ACCESS_KEY","GOOGLE_APPLICATION_CREDENTIALS"]'

Примечания:

  • Проброс выполняется явно: процессы приложений наследуют только переменные, перечисленные в forwarded_env_vars.
  • Секреты следует передавать безопасным способом (например, через секреты Docker/Kubernetes), а затем пробрасывать с помощью forwarded_env_vars.

Конфигурация исполнителя runner'а

Для развёртываний runner'а весь блок executor можно задать одной JSON-переменной окружения вместо отдельных ключей:

export SEMAPHORE_RUNNER_EXECUTOR='{"type":"docker","docker":{"image":"semaphoreui/job:latest"}}'

Это эквивалентно заданию runner.executor.type и вложенных полей runner.executor.docker.* в файле конфигурации. Все настройки исполнителя runner'а см. в разделе Опции конфигурации.


Секретные переменные окружения в группах переменных

Помимо глобальных переменных окружения, вы можете задавать секреты на уровне проекта в группах переменных. Секретные ключи маскируются в интерфейсе и логах. Об использовании и интеграции с Terraform через переменные TF_VAR_* см. Руководство пользователя → Группы переменных.