Saltar al contenido principal

Archivo de configuración

Crear el archivo de configuración

Semaphore usa un archivo config.json para su configuración principal. Puede generar este archivo de forma interactiva con las herramientas integradas o mediante un configurador web.

Generar mediante la CLI

Use los siguientes comandos para generar el archivo de configuración de forma interactiva:

  • Para el servidor de Semaphore:

    semaphore setup
  • Para el runner de Semaphore:

    semaphore runner setup
    consejo

    Para más detalles sobre la configuración del runner, consulte la sección Runners.

Generar en el sitio web

Como alternativa, puede usar el configurador interactivo web:

Ejemplo de archivo de configuración

Semaphore usa un archivo de configuración config.json con el siguiente contenido:

{
"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"
}
}

Uso del archivo de configuración

  • Para el servidor de Semaphore:
semaphore server --config ./config.json
  • Para el runner de Semaphore:
semaphore runner start --config ./config.json

Directorio de secretos

Semaphore almacena archivos de secretos de corta duración (por ejemplo, tokens de HashiCorp Vault u OpenBao leídos desde disco) en un directorio configurable.

OpciónVariable de entornoDescripción
dirs.secretsSEMAPHORE_SECRETS_PATHDirectorio para los archivos de secretos. Predeterminado: /tmp/semaphore.
secrets_path (heredado)SEMAPHORE_SECRETS_PATHAjuste de nivel superior conservado por compatibilidad con versiones anteriores. Se usa solo cuando dirs.secrets no está definido o sigue en la ruta predeterminada.

Precedencia: un valor de dirs.secrets distinto del predeterminado prevalece sobre el secrets_path heredado. Cuando define SEMAPHORE_SECRETS_PATH, Semaphore lo aplica a ambos campos.

Ejemplo con la estructura actual:

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

Las instalaciones heredadas pueden seguir usando:

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

Los archivos de token referenciados por almacenamientos externos de secretos deben encontrarse dentro de este directorio.

Operaciones de Git

Semaphore clona y actualiza los repositorios de las tareas antes de cada ejecución. Dos opciones controlan este comportamiento:

OpciónVariable de entornoDescripción
git_clientSEMAPHORE_GIT_CLIENTImplementación del cliente Git: cmd_git (predeterminado, usa el binario git del sistema) o go_git (cliente puro en Go).
git_attemptsSEMAPHORE_GIT_ATTEMPTSNúmero de intentos de las operaciones de clone y pull antes de que la tarea falle. Predeterminado: 4. Establézcalo en 1 para intentarlo una sola vez sin reintentos.

Cuando un clone o pull falla y quedan reintentos, Semaphore espera con retroceso exponencial (empezando en 1 segundo, duplicándose en cada intento, con un máximo de 60 segundos) y registra un mensaje como Git pull failed (...), retrying in 2s. Los reintentos se aplican solo a las operaciones de red; un checkout fallido o un error de autenticación siguen haciendo fallar la tarea una vez agotados todos los intentos.

Si su servidor Git no está disponible de forma intermitente, aumente git_attempts. Si los fallos son inmediatos y persistentes (credenciales incorrectas, repositorio inexistente), corrija el problema de fondo; los reintentos no servirán de ayuda.