Semaphore v2.17 bringt neue Funktionen und Verbesserungen für Infrastruktur-Automatisierung und DevOps-Teams. Dieses Release konzentriert sich darauf, die Developer Experience zu verbessern und Infrastructure-as-Code-Workflows zu vereinfachen.

Übersicht der wichtigsten Funktionen

Funktionen

Benutzerdefinierter Issuer-Name in der TOTP-App

Semaphore v2.17 führt eine neue Option ein, um den in TOTP-(Time-based One-Time Password)-Authenticator-Apps angezeigten Issuer-Namen anzupassen.

Zweck:
Der Issuer-Name hilft Nutzern zu erkennen, welches Konto in ihrer Authenticator-App zu Semaphore gehört – besonders nützlich beim Verwalten von Konten aus mehreren Organisationen oder Umgebungen.

Konfiguration:

Sie können den Issuer-Namen auf zwei Arten festlegen:

  1. Umgebungsvariable

    Setzen Sie beim Starten von Semaphore die Umgebungsvariable SEMAPHORE_TOTP_ISSUER auf den gewünschten Issuer-Namen.

    Beispiel (Docker Compose):

    environment:
      - SEMAPHORE_TOTP_ISSUER=MyCompany Semaphore
    

    Beispiel (Standalone):

    SEMAPHORE_TOTP_ISSUER="MyCompany Semaphore" ./semaphore server
    
  2. Konfigurationsdatei

    Setzen Sie in Ihrer config.json die folgende Option im Abschnitt auth:

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

Priorität:
Wenn sowohl die Umgebungsvariable als auch die Option in der Konfigurationsdatei gesetzt sind, hat die Umgebungsvariable (SEMAPHORE_TOTP_ISSUER) Vorrang.

Standardwert:
Ist nichts gesetzt, lautet der Standard-Issuer-Name Semaphore.

Ergebnis:
Wenn Nutzer ihr Semaphore-TOTP-Konto in einer Authenticator-App hinzufügen, erscheint der ausgewählte Issuer-Name, sodass sich mehrere Konten leichter unterscheiden lassen.

Für vollständige Details zu allen verfügbaren Umgebungsvariablen siehe die Dokumentation zu Installations-Umgebungsvariablen.

Einmalige geplante Aufgaben

Semaphore unterstützt jetzt einmalige Zeitpläne zusätzlich zu Cron-Schedules. Verwenden Sie dies, wenn eine Aufgabe zu einem bestimmten Datum und einer bestimmten Uhrzeit einmalig ausgeführt werden soll.

Anwendungsfälle:

Anpassbare Views

Template-Views sind jetzt deutlich anpassbarer. Damit können Sie festlegen, was angezeigt wird und wie es organisiert ist, um besser zu Ihrem Workflow zu passen.

  1. Sie können den Tab „All“ an eine beliebige Stelle in der Leiste verschieben.

  2. Sie können den Tab „All“ für reguläre Projektbenutzer vollständig ausblenden.

  3. Sie können die Standard-Sortierung der Templates für eine bestimmte View ändern.

Typische Verbesserungen umfassen:

Alle Tasks stoppen

Sie können jetzt alle laufenden Tasks für ein Template mit einer einzigen Aktion stoppen. Das hilft, einen Rollout schnell zu unterbrechen oder Jobs zu beenden, die versehentlich gestartet wurden.

Syslog-Server-Unterstützung

Semaphore kann Logs jetzt an einen externen Syslog-Server weiterleiten. Das erleichtert die Zentralisierung der Log-Sammlung und die Integration in bestehende Monitoring- und Alerting-Pipelines.

config.json:

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

Umgebungsvariablen:

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

Rollback von Datenbank-Migrationen

Datenbank-Migrationen können jetzt zurückgerollt werden. Das macht es sicherer, auf Upgrade-Probleme zu reagieren, und vereinfacht bei Bedarf Downgrades.

semaphore migrate --undo-to 2.16

Drag-and-Drop für Survey-Variablen, CLI-Args, usw.

Sie können Survey-Variablen, CLI-Argumente und andere Listenelemente jetzt per Drag-and-Drop neu anordnen. Das macht Templates leichter zu pflegen und zu prüfen.

Projekt-Export und -Import via CLI

Semaphore unterstützt jetzt das automatische Importieren von Projekten.

Der Docker-Container akzeptiert dafür die Umgebungsvariablen SEMAPHORE_IMPORT_PROJECT_FILE und SEMAPHORE_IMPORT_PROJECT_NAME.

Wenn Sie ein Projekt über die CLI importieren müssen, können Sie den folgenden Befehl verwenden:

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

Wenn der Projektname nicht angegeben wird, wird der Projektname aus den Backup-Metadaten verwendet.

Um alle Projekte aus einem Verzeichnis zu importieren, verwenden Sie den folgenden Befehl:

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

Um ein Projekt zu exportieren, können Sie den folgenden Befehl verwenden:

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

Wenn Sie alle Projekte in ein Verzeichnis exportieren möchten:

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

Wenn Sie diesen Befehl mit cron kombinieren, können Sie automatische Projekt-Backups implementieren.

CLI-Tool zum Migrieren von BoltDB zu SQLite/MySQL/Postgres

Ein neuer CLI-Migrator hilft dabei, Semaphore-Daten von BoltDB zu SQLite, MySQL oder Postgres zu verschieben. BoltDB wird deprecated und in v3.0 entfernt.

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

Devolutions Server-Unterstützung (Enterprise)

Enterprise-Installationen können Devolutions Server nun als Secrets-Backend integrieren, ähnlich wie HashiCorp Vault.

Benutzerdefinierte Rollen und erweitertes RBAC (Enterprise)

Semaphore UI unterstützt jetzt benutzerdefinierte projektweite und globale Rollen. Damit wird eine fein abgestufte Zugriffskontrolle für Tasks und Templates möglich. RBAC wurde um granularere Kontrollen über Semaphore-Ressourcen hinweg erweitert, sodass Teams das Prinzip der geringsten Privilegien präziser umsetzen können.

Enterprise-Nutzer können benutzerdefinierte Rollen mit maßgeschneiderten Berechtigungen definieren, die den Zugriffserfordernissen der Organisation entsprechen.

Projekt-Owner und -Manager können diese Rollen bestimmten Templates zuweisen und ihnen gezielte Berechtigungen zum Ausführen, Anzeigen oder Verwalten von Tasks geben.

Active-Active High Availability (Enterprise)

In einem standardmäßigen Single-Node-Setup erledigt ein Semaphore-Prozess alles: Er stellt die Web-UI bereit, führt geplante Jobs aus, startet Tasks und pusht Live-Updates an Browser. Fällt dieser Prozess aus, steht alles still.

Mit Active-Active HA betreiben Sie mehrere identische Semaphore-Instanzen hinter einem Load Balancer. Alle sind gleichzeitig voll aktiv – es gibt kein „Primary“ oder „Standby“. Jeder Node kann jede Anfrage bedienen, jede Aufgabe ausführen oder jeden Zeitplan triggern. Über eine gemeinsam genutzte Redis-Instanz koordinieren sie sich, damit keine Kollisionen entstehen.

Alle Instanzen verbinden sich mit denselben zwei Backends:

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

Verbesserte Protokollierung

Die Protokollierung wurde verbessert. Logs bieten jetzt mehr Kontext und Klarheit. Das hilft Ihnen dabei, Fehler zu beheben und nachzuvollziehen, was während eines Laufs passiert ist.

Subscription-Key via Umgebungsvariable (PRO)

PRO-Subscription-Keys können jetzt über eine Umgebungsvariable bereitgestellt werden. Das ist hilfreich für containerisierte Deployments und CI/CD-gesteuerte Rollouts.