Was sind CI/CD?
CI/CD steht für Continuous Integration (CI) und Continuous Deployment/Delivery (CD). Es handelt sich um eine Reihe moderner Softwareentwicklungspraktiken, die Teams dabei helfen, Code schneller, mit weniger Fehlern und automatisiert bereitzustellen.
Kontinuierliche Integration (CI)
CI ist die Praxis, die Codeänderungen der Entwickler häufig in einem gemeinsamen Repository zusammenzuführen, in dem automatisierte Tests ausgeführt werden, um Probleme frühzeitig zu erkennen. Dadurch wird sichergestellt, dass Codeänderungen reibungslos integriert werden und vorhandene Funktionen nicht beeinträchtigt werden.
CI wird in Simplifier nicht benötigt, da Simplifier Merge-Konflikte aufgrund von
- Zusammenarbeit in Echtzeit innerhalb des Application Builders
- Modularisierung von Anwendungen
- Verwenden Sie nur eine aktive Version des Konnektors – da ein Interface immer die aktuelle Version des Quellsystems sein muss, da Sie sonst auf Probleme bei der Datenübertragung stoßen
In diesem Artikel beschreiben wir daher den Continuous Delivery (CD)-Prozess.
Kontinuierliche Lieferung (CD)
CD geht noch einen Schritt weiter, indem es Code automatisch für die Bereitstellung in Produktions- oder Staging-Umgebungen vorbereitet. Die Bereitstellung erfordert jedoch weiterhin eine manuelle Genehmigung.
Voraussetzungen
Bevor Sie beginnen, erstellen Sie Benutzer auf Ihren Quell- und Zielinstanzen (mehr erfahren) und weisen Sie die Rolle “SF_Administrator” zu (weitere Informationen).
Erstellen Sie außerdem mindestens ein Release für eine Anwendung (lesen Sie mehr). Passen Sie das verknüpfte Transportpaket an Ihre Bedürfnisse an (lesen Sie mehr).
Um die erforderliche Anwendungs-ID für die relevanten Anwendungen zu erhalten, öffnen Sie die Entwicklungstools Ihres Browsers, bevor Sie die Anwendungsübersicht auf Ihrer Instanz öffnen. Suchen Sie auf der Registerkarte “Netzwerk” nach dem Anruf “Anwendung” und sehen Sie sich die Antwort für die vollständige Anwendungsliste mit ID und Name an.
SCHRITT 1: Exportieren des Transports aus der Quellinstanz
Um die erforderliche Transportdatei abzurufen, müssen Sie ein gültiges Authentifizierungstoken von der Quellinstanz abrufen, die neueste Version für die Anwendung abrufen und schließlich die Transportdatei für diese Version herunterladen.
1. Abrufen eines Authentifizierungstokens für die Quellinstanz
Rufen Sie zunächst ein gültiges Simplifier-Token ab, indem Sie den erstellten Benutzer auf der Quellinstanz verwenden. Sie müssen das empfangene Simplifier-Token als Header-Parameter in den folgenden Anforderungen verwenden.
cURL-Beispiel:
curl -L -X POST 'https://<SOURCE-INSTANCE-URL>/genToken/' -H 'Content-Type: application/json' -d '{"user":"<USERNAME>","pass":"<PASSWORD>"}'
Beispiel für ein Ergebnis:
{ "result": "<SIMPLIFIERTOKEN>", "success": true }
2. Abrufen der Releaseliste für eine Anwendung
Holen Sie sich nun die Release-Liste zur Anwendung. Holen Sie sich die höchste Release-Nummer (siehe Eigenschaft ‘num’) aus dem result-array.
cURL-Beispiel:
curl -L -X GET 'https://<SOURCE-INSTANCE-URL>/UserInterface/api/release/AppReleaseList?appId=<APPLICATION-ID>' -H 'Simplifiertoken: <SIMPLIFIERTOKEN>'
Beispiel für ein Ergebnis:
{ "result": [ { "metadata": { "releaseNote": "Added bonus system for ideas", "releaseNum": 2, "appName": "IdeaManagement", "createDate": "2025-02-26T09:03:06.530+01:00", "transportCollectionName": "IdeaManagement_TP", "publisher": "b8de15bf-883c-4ca8-bcdb-b455352a8e11", "publisherEmail": "klara.fall@simplifier.io", "publisherFullName": "Klara Fall", "simVersion": "2501.5" }, "num": 2, "transportRequestName": "Default0000000003" }, { "metadata": { "releaseNote": "Initial Release", "releaseNum": 1, "appName": "IdeaManagement", "createDate": "2025-02-26T08:58:07.582+01:00", "transportCollectionName": "IdeaManagement_TP", "publisher": "b8de15bf-883c-4ca8-bcdb-b455352a8e11", "publisherEmail": "klara.fall@simplifier.io", "publisherFullName": "Klara Fall", "simVersion": "2501.5" }, "num": 1, "transportRequestName": "Default0000000002" } ], "success": true }
2. Laden Sie die Transportdatei herunter
Laden Sie als Nächstes die Transportdatei herunter und speichern Sie sie.
cURL-Beispiel:
curl -L -X GET 'https://<SOURCE-INSTANCE-URL>/UserInterface/api/release/AppReleaseDownloader?appId=<APPLICATION-ID>&version=<RELEASE-NUMBER>' -H 'Simplifiertoken: <SIMPLIFIERTOKEN>' -o
SCHRITT 2: Importieren des Transports in die Zielinstanz
Um die heruntergeladene Transportdatei zu importieren, müssen Sie ein Authentifizierungstoken abrufen, die Datei hochladen und in die Zielinstanz importieren.
1. Abrufen eines Authentifizierungstokens für die Zielinstanz
Rufen Sie zunächst ein gültiges Simplifier-Token ab, indem Sie den erstellten Benutzer auf der Zielinstanz verwenden. Sie müssen das empfangene Simplifier-Token als Header-Parameter in den folgenden Anforderungen verwenden.
cURL-Beispiel:
curl -L -X POST 'https://<TARGET-INSTANCE-URL>/genToken/' -H 'Content-Type: application/json' -d '{"user":"<USERNAME>","pass":"<PASSWORD>"}'
Beispiel für ein Ergebnis:
{ "result": "<SIMPLIFIERTOKEN>", "success": true }
2. Laden Sie die Transportdatei hoch
Teilen Sie die heruntergeladene Datei in Blöcke auf. Es wird empfohlen, Chunks mit einer Größe von 8 MB zu verwenden. Jeder Chunk muss über den html5uploader hochgeladen werden.
cURL-Beispiel:
curl -L -X POST 'https://<TARGET-INSTANCE-URL>/UserInterface/api/html5Uploader' -H 'Simplifiertoken: <SIMPLIFIERTOKEN>' -H 'Content-Type: application/json' -d '{"session":"<UPLOAD-SESSION>","start":<START-MB-CHUNK>,"end":<END-MB-CHUNK>,"dataSize":<CHUNK-SIZE>, "data":<CHUNKED-DATA>,"num":<CURRENT-CHUNK>,"count":<TOTAL-CHUNKS>}'
Beispiel für ein Ergebnis:
{ "result": "", "success": true }
3. Importieren Sie die Transportdatei
Nachdem der Upload abgeschlossen ist, lösen Sie den Import des Transports aus. Wir empfehlen die Verwendung der Importstrategie ‘OVERWRITEIFCHANGED’. Es werden nur neue Artefakte importiert und geänderte Artefakte überschrieben, aber der Import unveränderter Artefakte übersprungen.
cURL-Beispiel:
curl -L -X POST 'https://<TARGET-INSTANCE-URL>/UserInterface/api/transport/import' -H 'Simplifiertoken: <SIMPLIFIERTOKEN>' -H 'Content-Type: application/json' -d '{"uploadSession":"<UPLOAD-SESSION>","strategy":"<IMPORT-STRATEGY>"}'
Beispiel für ein Ergebnis:
{ "processId": <PROCESS-ID> }
Rufen Sie den Importstatus in Intervallen ab. Sobald der Import abgeschlossen ist, hat der Status der Eigenschaft ‘statusI18n’ einen der folgenden Werte:
- ‘transportImportStatus_Finished’ -> Erfolgreich abgeschlossen
- ‘transportImportStatus_Error’ -> Beim Import ist mindestens ein Fehler aufgetreten.
- ‘transportImportStatus_PostProcessFailed’ -> Alle Artefakte wurden importiert. Bei der Nachbearbeitung (z. B. App-Bereitstellung) von mindestens einem Artefakt ist ein Fehler aufgetreten.
cURL-Beispiel:
curl -L -X GET 'https://<TARGET-INSTANCE-URL>/UserInterface/api/transport/import/status/<PROCESS-ID>' -H 'Simplifiertoken: <SIMPLIFIERTOKEN>' -H 'Content-Type: application/json' -d '{"uploadSession":"<UPLOAD-SESSION>","strategy":"<IMPORT-STRATEGY>"}'
Beispiel für ein Ergebnis:
{ "processId": <PROCESS-ID>, "importer": <USER-ID>, "statusI18n": <STATUS>, "changed": "2025-02-26T11:31:14.916+01:00" }