Zum Hauptinhalt springen

Datenbankmigrationen

Der Befehl semaphore migrate aktualisiert das Semaphore-Datenbankschema auf eine bestimmte Semaphore-Version oder rollt es darauf zurück. Verwenden Sie ihn für Upgrades und Downgrades.

semaphore migrate --help
info

Sie müssen migrate nur selten manuell ausführen. semaphore server, semaphore setup und jeder andere CLI-Befehl, der auf die Datenbank zugreift, wenden ausstehende Migrationen vor der Ausführung automatisch an. migrate dient dazu, Migrationen ohne Start des Servers anzuwenden oder sie zurückzurollen.

warnung

Sichern Sie Ihre Datenbank immer, bevor Sie Migrationen anwenden oder zurückrollen.

Migrationen anwenden

Alle ausstehenden Migrationen anwenden und die Datenbank auf den aktuellen Stand bringen:

semaphore migrate --config /path/to/config.json

Migrationen nur bis zu einer bestimmten Version anwenden:

semaphore migrate --apply-to 2.15.1

Migrationen zurückrollen

Migrationen bis zu einer früheren Version rückgängig machen:

semaphore migrate --undo-to 2.13

Geben Sie die Semaphore-Version an, auf die Sie herabstufen. Die Binärdatei, mit der Sie migrate ausführen, muss alle rückgängig zu machenden Migrationen kennen. Führen Sie den Befehl daher mit der neueren Binärdatei aus, bevor Sie die ältere installieren.

Optionen

FlagBeschreibung
--apply-to <version>Migrationen bis einschließlich dieser Version anwenden (z. B. 2.15 oder 2.14.4).
--undo-to <version>Migrationen bis zu dieser Version zurückrollen.

--apply-to und --undo-to schließen sich gegenseitig aus; die Angabe beider führt zu einem Fehler. Ohne eines der beiden Flags werden alle ausstehenden Migrationen angewendet.

Nach Abschluss gibt der Befehl die verwendete Datenbankverbindung aus.

hinweis

semaphore migrate akzeptiert aus Gründen der Abwärtskompatibilität weiterhin --err-log-size, --skip-task-output und --merge-existing-users, ab Version 2.19 haben diese Flags jedoch keine Wirkung mehr. Sie gehörten zum unten beschriebenen BoltDB-Import.

Migration von BoltDB zu SQLite/MySQL/PostgreSQL

Nur in den Versionen 2.17 und 2.18 verfügbar

BoltDB ist seit Version 2.16 veraltet, und die Unterstützung wurde in Version 2.19 entfernt. Das Flag --from-boltdb und die Umgebungsvariable SEMAPHORE_MIGRATE_FROM_BOLTDB existieren ab 2.19 nicht mehr, und semaphore setup verweigert die Konfiguration einer BoltDB-Datenbank.

warnung

Wenn Sie noch BoltDB verwenden, migrieren Sie, bevor Sie auf 2.19 oder neuer aktualisieren. Installieren Sie Semaphore 2.17 oder 2.18, führen Sie die unten beschriebene Migration durch und aktualisieren Sie erst danach auf eine neuere Version.

Installieren Sie zur Migration zunächst Semaphore 2.17 oder 2.18 und konfigurieren Sie anschließend die Zieldatenbank (SQLite, MySQL oder PostgreSQL) in Ihrer config.json. Führen Sie danach den folgenden Befehl aus, um alle Daten aus der alten BoltDB-Datei in die neue Datenbank zu importieren:

semaphore migrate --from-boltdb /path/to/boltdb/file --config /path/to/config.json

Der Befehl liest alle Projekte, Vorlagen, Inventories, Repositories, Schlüssel, Benutzer und den Aufgabenverlauf aus BoltDB und schreibt sie in die Datenbank, die in der aktuellen Semaphore-Konfiguration angegeben ist. Die ursprüngliche BoltDB-Datei wird nicht verändert.

Zusätzliche Argumente (nur 2.17 und 2.18):

FlagBeschreibung
--err-log-size <n>Maximale Anzahl der in der Ausgabe angezeigten Fehlerzeilen.
--skip-task-outputAufgabenausgaben nicht importieren.
--merge-existing-usersVorhandene Benutzer anhand des Benutzernamens wiederverwenden, statt bei Konflikten abzubrechen.

Wenn Sie den Docker-Container von Semaphore UI verwenden, können Sie die Umgebungsvariable SEMAPHORE_MIGRATE_FROM_BOLTDB setzen, um die vorhandene BoltDB-Datenbank automatisch zu importieren. Der Import wird nur einmal beim ersten Start des Containers ausgeführt. Beispiel:

docker run --name semaphore \
-p 3000:3000 \
-e SEMAPHORE_DB_DIALECT=sqlite \
-e SEMAPHORE_ADMIN=admin \
-e SEMAPHORE_ADMIN_PASSWORD=changeme \
-e SEMAPHORE_ADMIN_NAME="Admin" \
-e SEMAPHORE_MIGRATE_FROM_BOLTDB=/var/lib/semaphore/database.boltdb \
-e SEMAPHORE_ADMIN_EMAIL=admin@localhost \
-v semaphore_data:/var/lib/semaphore \
-d semaphoreui/semaphore:v2.18.2

Fehlerbehebung

  • Wenn eine Migration fehlschlägt, prüfen Sie die Logs auf Details und stellen Sie sicher, dass die CLI-Binärdatei dieselbe Version wie der Semaphore-Server hat.
  • Stellen Sie sicher, dass die CLI dieselbe Konfigurationsdatei (und damit dieselbe Datenbank) wie der Server verwendet. Siehe Wie die Konfigurationsdatei gefunden wird.