- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Deploymentvariablen zentral verwalten?
Hi,
Gibt es eine Mรถglichkeit in FirstSpirit Deploymentvariablen zentral zu setzen ?
Wir haben oft in Projekte mehrere Server (dev, test und prod) und pro Server mehrere Deploymentauftrรคge (partial, complete, delta, etc) und pro Auftrag mehrere Sprachen, die auch noch parallel generieren werden.
Wenn wir eine Deploymentvariable benutzen wollen, sagen wir deploymentTarget, mรผssen wir sie gefรผhlt tausendmal anlegen bzw. รคndern (pro Sprache und pro Auftrag). Und mit copy und paste geht das auch nicht.
Ich habe mir folgendes Workaround ausgedacht: ich habe in Servermanager/Projekteigenschaften eine Skript-Aktionsvorlage definiert, die den gewรผnschten Wert in schedule context schreibt.
context.setProperty("deploymentTarget ", "live");
Ich komme mit so einer Skript-Aktionsvorlage pro Projekt und Ziel-Webserver aus, die wird dann aus allen Auftrรคgen ganz am Anfang referenziert (mit neu aus Vorlage)
Vorteil: ich habe alle Werte zentral und muss sie nur einmal รคndern
Nachteil: man kann nicht mit $CMS_VALUE(deploymentTarget)$ darauf zugreifen.
Deshalb setze ich die Variable nochmal in der Project Settings Vorlage
$CMS_IF(!#global.preview)$
$CMS_IF(!#global.scheduleContext.getProperty("deploymentTarget").empty)$
$CMS_SET(deploymentTarget,#global.scheduleContext.getProperty("deploymentTarget"))$
$CMS_ELSE$
$CMS_VALUE(#global.logWarning("deploymentTarget not found in scheduleContext"))$
$CMS_END_IF$
$CMS_END_IF$
Die Sache ist, dieser Weg ist ja ganz eigen und nicht auf Anhieb fรผr anderen Kollegen verstรคndlich. Und, was schlimmer ist, fรผr jede neue Variable ist ein neues CMS_IF notwendig.
Gibt es eine bessere Mรถglichkeit, das Problem zu lรถsen? Bietet FirstSpirit vielleicht schon was out-of-the-box und ich weiร nichts davon ๐
Kann man wenigstens das Setzen aller Variablen in einer Schleife erledigen? Ich habe es versucht, aber da habe ich Knoten im Gehirn gekriegt und funktioniert hat es auch nicht
$CMS_FOR(propertyName,#global.scheduleContext.properties)$
$CMS_SET(#global.context("root")[propertyName],#global.scheduleContext.getProperty(propertyName))$
$CMS_END_FOR$
-> Danach ist โpropertyNameโ als Variable verfรผgbar, nicht โdeploymentTargetโ
Oder kann ich im Auftrag meine Werte via Skript in den Generierungs-Tasks als Variablen setzen?
Schรถne Grรผรe,
Ana
- Labels:
-
Developers
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Ana,
Eine Mรถglichkeit es "ganz sauber" und auch etwas komplizierter zu machen ist hier beschrieben. Deine Idee finde ich allerdings einfacher und vielleicht reicht es schon, wenn du in deiner Schleife den CMS_SET-Ausdruck folgendermaรen anpasst:
$CMS_SET(void, #global.context("root").setProperty(propertyName), #global.scheduleContext.getProperty(propertyName))$
Das bewirkt, dass nicht explizit eine Variable รผber CMS_SET gesetzt wird, sondern dass die setProperty-Methode auf dem Root-Context aufgerufen wird.
Gib uns mal Bescheid, ob das klappt (ich hab es jetzt nicht ausprobiert).
Grรผรe,
Hannes
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Hannes,
danke schรถn, das war genau das, wonach ich gesucht hatte! Hat mit einer รnderung, setVariableValue statt setProperty, funktioniert.
$CMS_SET(void, #global.context("root").setVariableValue(propertyName, #global.scheduleContext.getProperty(propertyName)))$
Ich habe immer noch das Problem, dass die Variablen, die ich in ProjectSettings so definiere, nicht in PageContext sichtbar sind.
Dafรผr habe ich aber ein Ticket eingereicht.
Grรผรe,
Ana

