Bir RoR uygulamasını dağıtmak için capistrano kullanıyorum. Kod tabanı bir git deposundadır ve dallanma, geliştirmede yaygın olarak kullanılmaktadır. Capistrano, deploy.rb
ayarları için dosyayı kullanır , bunlardan biri dağıtım yapılacak daldır.
En Yeni şube oluşturduğunuzu varsayalım: Benim sorun budur A dan usta . Konuşlandırma dosyası ana dala başvuracaktır . Bunu düzenlerim, böylece A , test ortamına dağıtılabilir. Ben özellikle ilgili çalışmalarımız ve birleştirme şube tamamladıktan A içine ustası . Yana deploy.rb
gelen dosya A yeni olmasının, şimdi de birleşti ve alır deploy.rb
içinde usta şube referansları A . Tekrar düzenleme zamanı.
Bu, görünüşte gereksiz olan manuel düzenlemenin birçoğudur - parametre her zaman mevcut şube adıyla eşleşmelidir. Bunun da ötesinde, her seferinde ayarları düzenlemeyi unutmak kolaydır.
Bu süreci otomatikleştirmenin en iyi yolu ne olabilir?
Düzenleme: Birisinin tam olarak ihtiyacım olan şeyi zaten yaptığı ortaya çıktı :
Bu sabah, git deposunun bir dalını bir hazırlık sunucusuna dağıtma fırsatım oldu, ancak nasıl yapılacağı konusunda en ufak bir fikrim yoktu. Capistrano kaynak kodunda hızlı bir arama,
:branch "branch_name"
dağıtım betiğimde seti kullanabileceğimi ortaya çıkardı . Ben denedim ve işe yaradı. Daha sonra tüm şubelerimde benzer bir değişiklik yapmam gerektiğini düşündüm. Tabii ki, ben tembel bir herifim ve daha iyi bir yol olup olmadığını merak ettim.Git'e aşina değilseniz, git branch komutunun çıktısı, yerel makinenizde halihazırda teslim alınmış olanı işaretleyen bir yıldız işaretine sahip dalların bir listesidir. Örneğin:
> git branch * drupal_authentication fragment_caching master
Öyleyse, düşündüm ki, çıktıyı sadece ayrıştırıp güncel olarak işaretlenmiş dalı ararsam:
set :branch, $1 if `git branch` =~ /\* (\S+)\s/m
Artık yerel makinemde geçerli olan dalı tek, paylaşılan, dağıtım komut dosyasıyla dağıtabiliyorum.