2015-12-08 18 views
9

sorum 12 faktör uygulamalar bildirgesinde birinci faktörü ile ilgilidir üzerinde dağıtılan bir Gradle/Yay uygulama için (12-faktör uygulama Manifesto'sundan) kod temeli faktörü saygı. (bakınız http://12factor.net/codebase).Cloudfoundry veya Heroku

TL; DR:

bu faktör bu durumda, her iki uygulamaya

için aynı kod tabanını (depo) kullanmak gerekmiyor bu yüzden, orada codebases arasında bire bir ilişki ve dağıtır devletler

Benim gereksinimi: Ben bir web sitesi Bahar uygulama ve bir toplu Bahar uygulaması hem alanı modeli (JPA varlık sınıfları) yani ortak bir kod paylaşımı var. Bu ortak kodu paylaşabilmem gerekir. Ve her iki uygulama da bir kez ortak kodunun aynı sürümünü kullanmalıdır.

Benim şu anki kurulum:

  • Alan modeli (JPA varlık sınıfları) Repo
  • İnternet sitesi uygulaması Repo
    • Alan modeli: github üzerinde şu anda üç "üst düzey" depoları var dizini/gradle projesi (git subtree pull/push ile birlikte gelir)
  • Toplu uygulama repo
    • Alan modeli dizin/(git subtree pull/push dahil) gradle proje

Lütfen ayrıca Alan modeli Repo (yukarıda belirtildiği gibi) ayrı ayrı yaşar ama olduğuna dikkat Ayrıca hem web sitesi hem de toplu iş başvuruları içindedir. Bu Domain model repo'yu bir dizin ve diğer iki tablo içinde bir graper projesi olarak eklemek için git subtree pull/push kullanıyorum. Bunun nedeni, Heroku'nun kodun kendisini repolardan oluşturmasıdır.

Tüm bunlar çok can sıkıcı ve hatalara açık.

Lütfen daha iyi bir çözüm önerebilir misiniz?

+0

Sorunu gerçekten anlamıyorum. Onu kırar ve daha net olabilir misin? – polka

cevap

2

Ben Bintray özel bir Maven repo ortak kod yayınlar ve daha sonra diğer tüketici uygulamalarına bu özel repo ekleyip bir bağımlılık olarak ortak modül belirtmek istiyorum olduğunu. Bu, her ikisinin de aynı sürüme bağlı olacağının garantisini vermez, ancak the Maven Versions Plugin gibi araçları kullanarak harici işlemler yoluyla kolayca yönetilebilir. Ancak, iki uygulamanın etki alanı modellerini gevşek bir şekilde birleştirmek için daha esnek bir serileştirme sistemi eklemek isteyebilirsiniz.

-1

I ve bir bağımlılık olarak üretime yükleyin (yakut içinde bir mücevher olacağını edilir Bu tür paketlerde için ne konuşuyoruz java/gradle emin değilim) bir pakette alanı modellerini paket olacaktır. Aksi takdirde bir git submodule da bir seçenek

+0

Merhaba. Bunun 12 faktörlü uygulama manifestosuna nasıl uyduğunu açıklar mısınız?Ayrıca, yukarıdaki kalın yazım kuralının nasıl yerine getirildiğini lütfen belirtin, yani her iki uygulama da ortak kodun aynı sürümünü herhangi bir zamanda kullanmalıdır. – balteo

+0

Bir paket bağımlı bağımlılık, uygulama kod tabanının bir parçası olmayacaktır. Ortak kitaplıklara yapılan güncellemeler, uygulama kod tabanı güncellemeleri yerine bağımlılık güncellemeleri tarafından yönetilecektir. Bildiğim kadarıyla, normalde 3. parti kodu almak ve kullanmak için kullanılsa bile, bağımlılıkların yaratılmasının temel nedenlerinden biri de budur. – Achilles