Bir adımda bir yapı yapabilir misiniz?


14

Gönderen Joel testi :

Bir adımda bir yapı yapabilir misiniz?

Yapamam demeliyim. Şu anda dağıtmak için yapılması gereken öğelerin bir elektronik tablo listesi olan bir web uygulaması üzerinde çalışıyorum. Benim sorum şu , bunu nasıl otomatikleştirebilirim ? Kuruluş çapında olması gerekiyor mu? İpuçları / teknikleri?


3
Listedeki öğelerin ne olduğuna bağlıdır? İdeal olarak, evet otomatikleştirebilmelisiniz.
Kimse

4
tr.wikipedia.org/wiki/Build_automation BTW: Bazı konaklamalar bir adım çok fazla :)
Mchl

Her türlü - dosyaları taşımak, saklı yordamlar vb komut dosyası - 14 adım vardır!
billy.bob

2
Farklı bir açıdan, listede otomatik olamayacağınızı düşünüyorsunuz?
Tyanna

1
Bir yapının nasıl otomatikleştirileceği sorusu öznel değildir ve Stack Overflow'da sorulmalıdır. Soru, yararlı bir cevap almak için gereken görevler hakkında daha fazla bilgi içermelidir.
David Thornley

Yanıtlar:


10

Marka oluşturma işlemini tek adımda otomatik hale getirebilir. Make istediğinizi hemen hemen yapabilir. Sapporo'nun neden Make'ın sadece C / C ++ için geçerli olduğunu düşündüğünden emin değilim. Herhangi bir tür komutu çalıştırmak için make komutunu kullanabilirsiniz. Programlamaya bile bağlı değildir, ancak tipik olarak bunun için kullanılır.


2
make "swiss army knife" tür araçlarından biridir; onunla çalışmayı seviyorum. Yapımın faydalı olacağına dikkat çekmek için başka bir şey, derlemenizi / işleminizi / vb. muhtemelen sorunlara neden olabilir.
Will

1
Birçok 'nix uygulama / sistemi' ./configure; Yapmak; make install 'Sanırım make bir kurulum motoru olarak iki katına çıkar. Bunu yapabilirse, OP'nin ocağını çözebileceğinden de eminim.
JBRWilkinson

Yap, ama sözdizimi oldukça belirsiz. Bugüne kadar 2 alternatifle karşılaştım: SCons (Make + makedepend'den çok daha kolay) ve Makefile (tescilli) oluşturulmasını otomatikleştiren bir araç.
Matthieu M.13

@JbRWilkinson ... dediğim gibi yapmak ne istersen yapabilirsin;)
Pemdas

3

Ortamınıza bağlı olarak, Make (C / C ++), Ant / Maven (Java), Gradle (Groovy) 'a bakmak isteyebilirsiniz. Şans yüksek, çevreniz için popüler bir çözüm var.


Bu bir ASP.NET / SQL ortamı
billy.bob

@ m.edmondson - sonra cruisecontrol.sourceforge.net muhtemelen gitmek için yol
bobah

ASP.NET için bir diğer iyi sürekli entegrasyon ortamı TeamCity'dir. CruiseControl ve TeamCity tarafından kullandım ve TeamCity'nin kullanımını biraz daha kolay ve biraz daha güçlü buldum. Ama artık durum böyle olmayabilir.
RationalGeek

NANT, Cruise Control için bir tamamlayıcı olarak kullandığımız .NET ANT varyantıdır. . ANT / NANT bu konuda iyi.
Jon Hopkins

İkinci olarak @Jon Hopkinds'in önerisi - nant, ortamınız için harika bir eşleşme.
JBRWilkinson


0

Elbette bunu otomatikleştirmenin bir yolu var. Chef gibi araçlarla , yeni kurulmuş yeni bir sunucu kurmak şu kadar kolay olabilir:

knife bootstrap ip.address -N aNameForTheServer -r "role[some functionality]"

Benim durumumda, bu tek komut tarafından yürütülen bazı adımlar şunlardır:

  • Gerekli kitaplıkları, programları ve Python modüllerini yükleyin
  • Belirtilen erişim ayrıcalıklarına sahip yeni kullanıcılar oluşturun
  • Yeni veritabanları oluşturun, gerekli şemayı yükleyin, sahiplik ve erişim haklarını ayarlayın
  • Proje kodunu indirip hazırlayın ve ardından yapılandırma bilgilerini yazın
  • Veritabanı sunucularını başlatarak, cron işlerini ayarlayarak vb. Her şeyi üretim moduna getirin.

Windows desteği "ön" olarak listelendiği için Chef'in ortamınızda nasıl performans göstereceğinden emin değilim, ancak UNIX tabanlı sistem için arının dizleri.

Kukla , şeften biraz daha yaşlı ve daha iyi Windows desteği sunabilen benzer bir sistemdir.


0

Java dünyasındaki Maven ile anlaşılır

mvn clean deploy

Konfigürasyonumuzda, bu, WAR dosyasının gerekli tüm binalarını (gerektiğinde JAR bağımlılıklarını çekerek), geliştirici web sunucusuna konuşlandırmayı ve geliştirici veritabanında hazır test verilerinin oluşturulmasını yapar. Maven uygulandıktan sonra uygulamanın çalıştığını doğrulamak için SeleniumRC aracılığıyla kapsamlı fonksiyonel testi gerçekleştirir.

Bu tek komut, uygulamanın dev sunucu kümesine tam olarak dağıtılmasını sağlar, böylece diğer geliştiricilerin hemen çalışabilmesi (testleri geçtiği varsayılarak) kullanılabilir. Geliştiricilerin yerel olarak çalıştığını doğruladığı için geliştirici dağıtımının başarısız olması olağandışıdır mvn clean install.

Anlık görüntü artefaktı (WAR) daha sonra diğer geliştiricilerle paylaşmak için Maven deposuna kopyalanır (standart Maven deploydavranışına göre).

Tamam, ama sadece geliştirme için bir anlık görüntü dağıttınız, ya test ve üretim?

Test ve (daha sonra) üretim sunucularına dağıtım, birisinin şüpheli çıktıları izlediğinden emin olmak için manuel olarak işlemeyi sevdiğimiz Maven bırakma işlemi ile gerçekleştirilir. Test kullanıcıları yalnızca serbest bırakılmış eserlerle çalışır, anlık görüntülerle çalışmaz.

Serbest bırakıldıktan sonra, WAR dosyasını test sunucusu kümesine SFTP yapmak için basit bir derleme betiği kullanılır, yine biri hiçbir şeyin yanlış gitmediğinden emin olmak için süreci izler.

Son olarak, tüm test kullanıcıları mutlu olduktan sonra, değişmeyen WAR dosyası yük devretme üretim sunucusu kümesine kadar SFTP'ye dönüştürülürken, birileri felaket durumunda yakın bir göz ve anında geri alma pozisyonunu korur.


0

Joel testimizden birini kontrol edebileceğimi düşündüm ...

Piton kullanarak otomatik olarak python bir yapı sunucusu yaptım .

Kod, komut satırından VSS ile senkronize edildi, borland make ile oluşturuldu (çoğu IDE, onları çağırıp çağırmasın sizin için make dosyaları oluşturur. Delphi, dosyaları dışarı pompalayıp onlara .BPG dosyalarını çağırırdı, şimdi ' MSBuild XML dosyaları yeniden ve MSBuild kullanabilirsiniz) ve hataları ben sadece eklemeye devam bir XML dosyasına konuldu.

Yani ... Sadece bir toplu iş dosyası yazın ve bunları yapın.

  1. Kodu Kaynak Denetiminden Senkronize Et
  2. Her şeyi derlemenizi engelleyeceğini bildiğiniz aptal şeyleri (projeler için ayrı yapılandırma dosyaları) silin.
  3. Herşeyi inşa et (herşeyi inşa ettim, kardeşimi yap).
  4. Hatalarınızı ve uyarılarınızı ve diğer şeylerinizi günlüğe kaydedin, ancak oluşturmayı durdurmayın. (Gerçekten zekiyseniz, dosyanın kırılmasına ve ona bir nastygram göndermesine neden olan dosyayı kontrol etmek için son kişinin adını çıkartabilirsiniz)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.