Skip to main content

Template Distribution: Automatisieren?

Comments

2 comments

  • Michael Bergmann

    Hallo Fabian,

    die Template Distribution (also genau diese Funktion über die Schaltfläche im SiteArchitect) lässt sich nicht automatisieren. Sie ist auch eher für "simple" Fälle und insbesondere eher für den manuellen Fall gedacht - "unter der Haube" nutzt sie "External Sync". Insbesondere kann man hier die "Menge der zu transportierenden Elemente" nur "einmal zentral" im Quellprojekt definieren - über eine fs-cli-ähnliche Syntax in der ProjectApp. 

    Ich weiß nicht, ob es hilft, aber alternativ könntet ihr ggf. "ContentTransport"-Mechanismen nutzen - hier gibt es mehr Flexibilität/Freiheit. Insbesondere kann man dann auch

    • Mehrere "Sets" von Elementen definieren (indem man einfach mehrere "Features" erstellt)
    • die entsprechende UI zur Definition nutzen
    • die zu verteilenden Elemente auch per API definieren

    Grundprinzip wäre ganz grob:

    • Feature(s) in der Quelle definieren
    • Im Quellprojekt dann einen Auftrag mit einem "ContentTransport"-Task anlegen - siehe hier (Abschnitte 4.9-4.10) - und dort das Feature wählen (*)
    • Damit der Transfer zwischen den Stages/Projekten funktioniert, muss man einen "Filesystem Storage" definieren. In unserer Cloud ist es so eingerichtet, dass im Pfad "/opt/firstspirit5/s3-transfer" ein S3-Ordner gemountet ist, den sich alle Stages "teilen" - siehe hier Seiten 7 bzw. 9 - "Sharing templates with different stages" / "Transporting templates master → sub-project" - da jeweils unter "Filesystem feature storage". 
    • In den "Kindprojekten" braucht man dann wiederum die "Gegenstücke" in Form entsprechender "ContentTransport-Import-Aufträge" - wo man dann eben auch das entsprechende Feature wählt. (*)

    (*) Auch wenn bei der jeweiligen Feature-Auswahl eine Version/Revision dran steht, wird immer die "aktuellste" Version der Elemente beim Erzeugen des Feature-ZIPs benutzt, wenn der Task ausgeführt wird.

    Vorteile der Verteilung per ContentTransport in Verbindung mit Aufträgen:

    • Da sich Aufträge per API antriggern lassen, ist man recht frei wie genau man es baut, insbesondere ob man den "Installiere das Feature in einem Projekt" manuell im Ziel anstoßen will oder automatisiert
    • Man kann mit "festen" (auch unterschiedlichen z.B. "pro Ziel") Features arbeiten - oder sich ein bisschen Code bauen, der das hinterlegte Feature immer erst "anpasst" bzgl. der Elemente die man drin haben will - dafür gibt es API - grob würde man sowas machen wie getFeatureDescriptors() => createFeatureModel() => anpassen => saveFeature(...)
    • Da die Frage, wer welche Aufträge starten darf, rechtetechnisch konfigurierbar ist, ist man auch hier flexibler (TemplateDistribution löst das rein über die Zugehörigkeit zu einer fest definierten Gruppe "Template Distribution").

    Nachteile:

    • Mehr initialer Konfigurationsaufwand - insbesondere ist es kein reines "Push" sondern eine Kombination aus "Erzeuge mit das Feature" und entsprechendem "Pull". Wobei man das - bei Bedarf - natürlich auch "automatisieren" kann (also dass nach einem "Create Feature" im Quellprojekt in den Zielprojekten das "Install Feature" automatisch gestartet wird).
    • Je nachdem, wie "automatisch" man das möchte, muss man ggf. ein bisschen scripten (oder wenn es mehr als ein paar Zeilen sind, lieber ein kleines Modul/Executable bauen)

    Hilft das?

    Viele Grüße
    Michael

     

    0
  • Fabian König

    Hallo Michael,

    vielen Dank für die ausführliche Antwort.

    Das hilft tatsächlich sehr! Wir schauen aktuell, ob wir diesen Ansatz weiterverfolgen oder erst mal bei dem manuellen Template Transport bleiben.

    Viele Grüße
    Fabian

    0

Please sign in to leave a comment.