Semaphore v2.17 introduce nuove funzionalità e miglioramenti per l’automazione dell’infrastruttura e i team DevOps. Questa release si concentra sul miglioramento della developer experience e sulla semplificazione dei workflow infrastructure-as-code.

Panoramica delle funzionalità principali

Funzionalità

Nome issuer personalizzato nell’app TOTP

Semaphore v2.17 introduce una nuova opzione per personalizzare il nome issuer mostrato nelle app autenticatrici TOTP (Time-based One-Time Password).

Obiettivo:
Il nome issuer aiuta gli utenti a identificare quale account nell’app autenticatrice appartiene a Semaphore, particolarmente utile quando si gestiscono account di più organizzazioni o ambienti.

Come configurare:

Puoi impostare il nome issuer in due modi:

  1. Variabile d’ambiente

    Imposta la variabile d’ambiente SEMAPHORE_TOTP_ISSUER con il nome issuer desiderato all’avvio di Semaphore.

    Esempio (Docker Compose):

    environment:
      - SEMAPHORE_TOTP_ISSUER=MyCompany Semaphore
    

    Esempio (Standalone):

    SEMAPHORE_TOTP_ISSUER="MyCompany Semaphore" ./semaphore server
    
  2. File di configurazione

    Nel file config.json, imposta la seguente opzione nella sezione auth:

    {
      "auth": {
        "totp": {
          "issuer": "MyCompany Semaphore"
        }
      }
    }
    

Precedenza:
Se sono impostate sia la variabile d’ambiente sia l’opzione nel file di configurazione, ha la precedenza la variabile d’ambiente (SEMAPHORE_TOTP_ISSUER).

Valore predefinito:
Se non impostato, il nome issuer predefinito sarà Semaphore.

Risultato:
Quando gli utenti aggiungono il loro account TOTP di Semaphore a un’app autenticatrice, verrà mostrato il nome issuer selezionato, rendendo più facile distinguere tra più account.

Per tutti i dettagli su tutte le variabili d’ambiente disponibili, vedi la documentazione delle variabili d’ambiente di installazione.

Attività pianificate una tantum

Semaphore ora supporta le pianificazioni una tantum oltre alle pianificazioni cron. Usa questa opzione quando hai bisogno che un’attività venga eseguita in una data e ora specifiche e una sola volta.

Casi d’uso:

Viste personalizabili

Le viste dei template ora sono molto più personalizzabili, permettendoti di adattare cosa viene mostrato e come è organizzato in base al tuo workflow.

  1. Ora puoi spostare la scheda All in qualsiasi posizione nella barra.

  2. Puoi nascondere completamente la scheda All agli utenti regolari del progetto.

  3. Puoi cambiare l’ordinamento predefinito dei template per una vista specifica.

Miglioramenti tipici includono:

Interrompere tutte le attività

Ora puoi interrompere tutte le attività in esecuzione per un template con una sola azione. Questo ti aiuta a fermare rapidamente un rollout o annullare job avviati accidentalmente.

Supporto server syslog

Semaphore ora può inoltrare i log a un server syslog esterno, rendendo più semplice centralizzare la raccolta dei log e integrarsi con pipeline di monitoraggio e allerta esistenti.

config.json:

{
  "syslog": {
    "enabled": true,
    "network": "udp",
    "address": "localhost:514",
    "tag": "semaphore"
  }
}

Variabili d’ambiente:

export SEMAPHORE_SYSLOG_ENABLED=True
export SEMAPHORE_SYSLOG_NETWORK=udp
export SEMAPHORE_SYSLOG_ADDRESS=localhost:514
export SEMAPHORE_SYSLOG_TAG=semaphore

Rollback delle migrazioni del database

Ora è possibile eseguire il rollback delle migrazioni del database. Questo rende più sicuro recuperare da un problema di aggiornamento e può semplificare i downgrade quando necessario.

semaphore migrate --undo-to 2.16

Drag and drop per variabili di survey, argomenti CLI, ecc.

Ora puoi riordinare variabili di survey, argomenti CLI e altri elementi di elenco tramite drag and drop, rendendo i template più facili da mantenere e rivedere.

Esportazione e importazione di progetti via CLI

Semaphore ora supporta l’importazione automatica dei progetti.

Il container Docker accetta le variabili d’ambiente SEMAPHORE_IMPORT_PROJECT_FILE e SEMAPHORE_IMPORT_PROJECT_NAME per questo.

Se devi importare un progetto dalla CLI, puoi usare il comando seguente:

semaphore project import --file /path/to/the/backup.json --project-name "Demo project"

Se il nome del progetto non è fornito, verrà usato il nome del progetto dai metadati del backup.

Per importare tutti i progetti da una directory, usa il comando seguente:

semaphore project import --dir /path/to/the/dir

Per esportare un progetto, puoi usare il comando seguente:

semaphore project export --project-name "Demo project" --file /path/to/the/backup.json

Se vuoi esportare tutti i progetti in una directory:

semaphore project export --dir /path/to/the/dir

Combinando questo comando con cron, puoi implementare backup automatici dei progetti.

Strumento CLI per migrare da BoltDB a SQLite/MySQL/Postgres

Un nuovo migratore CLI aiuta a spostare i dati di Semaphore da BoltDB a SQLite, MySQL o Postgres. BoltDB è in deprecazione e verrà rimosso in v3.0.

semaphore migrate --from-boltdb /path/to/boltdb/file

Supporto Devolutions Server (Enterprise)

Le installazioni Enterprise ora possono integrarsi con Devolutions Server come backend per i segreti, simile a HashiCorp Vault.

Ruoli personalizzati e RBAC esteso (Enterprise)

L’interfaccia di Semaphore ora supporta ruoli personalizzati a livello di progetto e globali, consentendo un controllo di accesso granulare per attività e template. L’RBAC è stato esteso con controlli più granulari sulle risorse Semaphore, aiutando i team ad applicare il principio del minimo privilegio in modo più preciso.

Gli utenti Enterprise possono definire ruoli personalizzati con permessi su misura per soddisfare le esigenze di accesso dell’organizzazione.

I proprietari e i manager del progetto possono assegnare questi ruoli a template specifici e concedere permessi mirati per eseguire, visualizzare o gestire le attività.

Alta disponibilità active-active (Enterprise)

In una configurazione standard a nodo singolo, un processo Semaphore fa tutto: serve la UI web, esegue job pianificati, esegue attività e invia aggiornamenti in tempo reale ai browser. Se quel processo va giù, tutto si ferma.

Con HA active-active, esegui più istanze Semaphore identiche dietro un load balancer. Tutte sono completamente attive contemporaneamente: non c’è un “primario” o uno “standby”. Qualsiasi nodo può servire qualsiasi richiesta, eseguire qualsiasi attività o attivare qualsiasi pianificazione. Si coordinano tramite un’istanza Redis condivisa per evitare conflitti.

Tutte le istanze si collegano agli stessi due backend:

{
  "ha": {
    "enabled": true,
    "node_id": "node1",
    "redis": {
      "addr": "localhost:6379"
    }
  }
}

Logging migliorato

Il logging è stato migliorato per fornire più contesto e chiarezza, aiutandoti a fare troubleshooting dei fallimenti e a capire cosa è successo durante un’esecuzione.

Chiave di abbonamento tramite variabile d’ambiente (PRO)

Le chiavi di abbonamento PRO ora possono essere fornite tramite una variabile d’ambiente, cosa utile per deploy containerizzati e rollout guidati da CI/CD.