Meine Frage bezieht sich auf das erste Faktor-12-Manifest für Apps: die Codebasis. (siehe http://12factor.net/codebase).Respektieren des Codebasis-Faktors (aus dem 12-Faktor-App-Manifest) für eine Gradle/Spring-App auf Cloudfoundry oder Heroku
TL; DR:
dieser Faktor besagt, gibt es eine Eins-zu Eins-Beziehung zwischen Codebases und entfaltet, so dass in diesem Fall, dass Sie nicht die gleiche Code-Basis (Repository) für beide Anwendungen verwenden soll
Meine Anforderung: Ich habe eine Website Spring-Anwendung und eine Batch-Spring-Anwendung teilen beide einen gemeinsamen Code dh das Domänenmodell (JPA-Entity-Klassen). Ich muss diesen gemeinsamen Code teilen können. Und beide Anwendungen müssen die gleiche Version des gemeinsamen Codes zu jeder Zeit verwenden.
Meine aktuelle Setup: Ich habe zur Zeit drei "Top-Level" Repositories auf GitHub:
- Domain-Modell (JPA Entitätsklassen) Repo
- Webseite Anwendung Repo
- Domain-Modell Verzeichnis/Gradle Projekt (im Lieferumfang enthalten
git subtree pull/push
)
- Domain-Modell Verzeichnis/Gradle Projekt (im Lieferumfang enthalten
- Batch Anwendung Repo
- Domain Modell Verzeichnis/gradle Projekt (im Lieferumfang
git subtree pull/push
)
- Domain Modell Verzeichnis/gradle Projekt (im Lieferumfang
auch Bitte beachten Sie, dass der Domain-Modell Repo getrennt lebt (wie oben erwähnt), aber auch verschachtelt sowohl in der Website als auch in den Batch-Anwendung Repos. Ich benutze eine git subtree pull/push
, um dieses Domain-Modell Repo als ein Verzeichnis und ein Gradle-Projekt innerhalb der anderen zwei Repos einzuschließen. Der Grund dafür ist, dass Heroku den Code selbst aus den Repos erstellt.
All dies ist sehr mühsam und fehleranfällig.
Kann jemand bitte eine bessere Lösung empfehlen?
Ich verstehe Ihre Frage nicht wirklich. Kannst du es durchbrechen und klarer sein? – polka