Passa al contenuto principale

File di configurazione

Creazione del file di configurazione

Semaphore usa un file config.json per la sua configurazione principale. È possibile generare questo file in modo interattivo con gli strumenti integrati oppure tramite un configuratore web.

Generazione tramite CLI

Usare i seguenti comandi per generare il file di configurazione in modo interattivo:

  • Per il server Semaphore:

    semaphore setup
  • Per il runner Semaphore:

    semaphore runner setup
    suggerimento

    Per maggiori dettagli sulla configurazione dei runner, consultare la sezione Runner.

Generazione sul sito web

In alternativa, è possibile usare il configuratore interattivo web:

Esempio di file di configurazione

Semaphore usa un file di configurazione config.json con il seguente contenuto:

{
"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 file di configurazione

  • Per il server Semaphore:
semaphore server --config ./config.json
  • Per il runner Semaphore:
semaphore runner start --config ./config.json

Directory dei segreti

Semaphore memorizza i file di segreti temporanei (ad esempio i token di HashiCorp Vault o OpenBao letti da disco) in una directory configurabile.

OpzioneVariabile d'ambienteDescrizione
dirs.secretsSEMAPHORE_SECRETS_PATHDirectory per i file di segreti. Predefinita: /tmp/semaphore.
secrets_path (legacy)SEMAPHORE_SECRETS_PATHImpostazione di primo livello mantenuta per retrocompatibilità. Usata solo quando dirs.secrets non è impostata o ha ancora il percorso predefinito.

Precedenza: un valore non predefinito di dirs.secrets prevale sul legacy secrets_path. Quando si imposta SEMAPHORE_SECRETS_PATH, Semaphore lo applica a entrambi i campi.

Esempio con il layout attuale:

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

Le installazioni legacy possono ancora usare:

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

I file di token referenziati dagli storage di segreti esterni devono trovarsi all'interno di questa directory.

Operazioni Git

Semaphore clona e aggiorna i repository dei task prima di ogni esecuzione. Due opzioni controllano questo comportamento:

OpzioneVariabile d'ambienteDescrizione
git_clientSEMAPHORE_GIT_CLIENTImplementazione del client Git: cmd_git (predefinita, usa il binario git di sistema) oppure go_git (client in puro Go).
git_attemptsSEMAPHORE_GIT_ATTEMPTSNumero di tentativi delle operazioni di clone e pull prima che il task fallisca. Predefinito: 4. Impostare a 1 per un solo tentativo senza ripetizioni.

Quando un clone o un pull fallisce e restano tentativi disponibili, Semaphore attende con backoff esponenziale (a partire da 1 secondo, raddoppiando a ogni tentativo, fino a un massimo di 60 secondi) e registra un messaggio come Git pull failed (...), retrying in 2s. I tentativi ripetuti si applicano solo alle operazioni di rete; un checkout fallito o un errore di autenticazione fanno comunque fallire il task una volta esauriti tutti i tentativi.

Se il server git è saltuariamente non disponibile, aumentare git_attempts. Se i fallimenti sono immediati e persistenti (credenziali errate, repository mancante), correggere il problema di fondo: i tentativi ripetuti non saranno d'aiuto.