2010-10-01 16 views
43

iphone uygulamaları için otomatik bir gece yapım sunucusu kurmak ve ne işe yaradığı ve nelerin yapılmadığı konusunda tavsiyelerde bulunmak istiyorum.iphone uygulamaları için otomatik bir yapı sunucusu kurmak için en iyi yöntem?

Temel olarak, en azından her gece tüm birim testlerini çalıştıran ve dahili web sitemize yeni bir derleme yayınlayan bir şey.

Tüm geliştiriciler dizüstü bilgisayarları kullanır (ki bunlar gece boyunca kapalı olur), bu yüzden bunu yapmak için özel bir Mac Mini almayı düşünüyorum.

Standart Mac OS X veya sunucu sürümü almam gerektiğinden emin değilim.

En azından ilk denemede, sadece gerçek çalışma yapmak için crontab çalıştırılan basit bir kabuk betiği kullanmayı düşünüyorum. Gelecekte tam sürekli bir entegrasyon sunucusu (hudson vb) iyi olurdu. onlar oldukça kısa gibiler

Zaten, arama yoluyla birkaç makale buldum:

http://nachbaur.com/blog/how-to-automate-your-iphone-app-builds-with-hudson

http://blog.jeffreyfredrick.com/2008/11/27/continuous-integration-for-iphonexcode-projects/

ve ikincisiyse olsa da bu stackoverflow soru (bazı yararlı yazılım bilgi vardır) artık yaş:

Continuous Integration for Xcode projects?

Herhangi gu İnsanların bir inşa sunucusunu nasıl kurduklarına dair verebileceği ve potansiyel sorunların büyük bir memnuniyetle karşılanabileceği gibi.

Teşekkürler!

Joseph

+0

Mac OS X sunucusu, derleme konusunda özel bir şey eklemiyor. – Seth

+0

@shader Bu içeriği kaldırdığınız anlaşılıyor. – ThomasW

cevap

14

Hudson (veya çatal Jenkins) kurmak gerçekten zor değildir; dahili olarak kullanıyoruz. Biz sadece iphone yapıları onu çalıştırmak değil - aslında, iphone için sadece bir yalnız mac mini kurmak ve nispeten yeni bir ek var. Bir süredir diğer farklı platformlar için yarım düzine başka köle de vardı.

Ayarlamanın ne kadar kolay olduğunu anlamak için, Meet Hudson sayfasındaki "Test Sürüşü" bağlantısından ulaşabilirsiniz. (Beni bunun üzerinde satan şeylerden biri. Başlamak çok kolaydı, ama hala son birkaç yılda büyümemizi sağlayacak şekilde yapılandırılabilir, genişletilebilir ve güçlü. Gerçekten çok kederli bir el yığınının yerini aldı. yazar olmasına rağmen, dinlenmeyi görmeyi çok mutlu ettiğim komut dosyaları ve programlar.)

Hudson arka ucunda bir Mac OSX sunucusunda çalışıyoruz, ancak çalıştırılamamanın bir nedeni yok. hemen hemen her yerde (linux, windows, mac).

Yapılandırma için yapılandırmaya gelince, proje yapılandırmasında, çoğunlukla xcodebuild numaralı telefonu arayarak ve -project ve -configuration bağımsız değişkenlerini geçirerek yaklaşık 6 satırlık kabuk komut dosyası komut dosyasıdır.

Örnek: Henüz bir hizmet olarak çalışacak şekilde köle kurmadıysanız

cd ${WORKSPACE}/Engineering/ 

set -e 
set -v 

xcodebuild -project foo.xcodeproj -alltargets -configuration Distribution clean 
xcodebuild -project foo.xcodeproj -alltargets -configuration Release clean 
xcodebuild -project foo.xcodeproj -alltargets -configuration Debug clean 

xcodebuild -project foo.xcodeproj -alltargets -configuration Distribution 
xcodebuild -project foo.xcodeproj -alltargets -configuration Release 
xcodebuild -project foo.xcodeproj -alltargets -configuration Debug 

- Bu TODO listesindedir. Şimdilik, mini'yi yeniden başlattığımızda JNLP ile başlatıyoruz.

Deposu SVN'dir ve hudson yöneticisi bizim için https kimlik bilgisini hatırlamakla ilgilenir.

Email-ext eklentisini aktif olarak kullanıyoruz ve sistemi kullanan pek çok kişi olduğundan ve bazı yapıların iyi durumda olmadığından, bir zaman aşımı eklentisi ve denetim izi eklentisi kullanıyoruz. Warnings eklentisi ve Static Code Analysis plugins ile kısaca deneyler yaptık, daha fazla projede kullanılanları almamız gerekiyor (genellikle hatalar oluşturuyor, ancak bazı projelerde PC-Lint ve diğer araçları kullanıyoruz; burada izlenen çok güzel). Son olarak, tüm önemli Chuck Norris ve Emotional Hudson eklentileri.

Şu an için iPhone sürümlerinde birim testleri (utanç yok!) Çalışmıyor ve yalnızca arka arkaya inşa edilen "Archive the Artifacts" işlevini kullanacağız. Hudson web arayüzü üzerinden yetkili kullanıcılardan erişilebilir. Şüphesiz, ünite testlerinizi çerçevede yürütmeniz zor olmayacaktır.

< Bizim tek gerçek sorunları mac mini'nizdeki AFP ve SMB ile yapmak zorunda >

/fanboy - hiç Hudson ile ilgisi, daha sadece bizim iç ağ altyapısını. Ve mini benim zevklerim için biraz yavaştır - biz genellikle hızlı autobuild dönüşünün iyi bir şey olduğu teorisine oldukça beceriksiz bir şekilde köle inşa ederiz. Mini, bir sebepten dolayı bu nedenle bir SSD'ye hediye edilebilir.

+0

Değerli yan not: hudson'un kendi web arayüzünden ürettiği .zip dosyası _not_ submittable'tır! Sembol bilgisi korunmuyor. Uygulama deposu için son gönderim zip'nizi oluşturmak için Finder'ı kullanmanız gerekir - ya da bağlantıları ve izinleri korumak için doğru seçeneklere sahip derleme betiğinde nasıl bir zip yapılacağını anlamanız gerekir. – leander

+1

Hey leander, bunu kendim kurmaya başlıyorum. Aşağıdaki blog gönderisine girdim ve w yardımcı olup olmadığını merak ediyordum. symlink bilgisi korunmuyor: http://silent-code.blogspot.com/2009/07/iphone-app-distribution-made-easy-part_1466.html – nazbot

+0

@nazbot: harika, teşekkürler, bunu deneyeceğim. – leander

6

Bu iş parçacığının en son güncelleştirilmesinden bu yana bir süredir olduğunu fark ettim, ancak o zamandan beri yeni bir sürekli tümleştirme (CI) sunucusuna rastladım. Ya aslında Mac/IOS için yeni değil, ama entegre destek oluşturur yenidir :)

Onun http://www.jetbrains.com/teamcity/

mevcut JetBrains gelen TeamCity ürünü başarıyla Java projeleri oluşturmak için çalışmak istemcide kullanmak, Ancak, ürün yelpazemizin daha büyük bir parçası haline geldiğinden, IOS için bir kurulum da yapacağız.

Kurulumu oldukça kolaydır ve herhangi bir platformu çalıştırabilir, ancak buildagent bir Mac bilgisayarı çalıştırmalıdır.

Umut bu yardımcı olur :)

0

biri yeni seçenek Mac OS X 10.9 (Mavericks) ve OS X Server ile kombine Xcode 5'tir. OS X Server şimdi otomatik testler çalıştırmak için iyi bir Xcode sunucu bileşenine sahiptir.

O yapabilirsiniz:

  1. Oluştur (+ uyarıları denetlemek)
  2. (statik analiz yani tınlamak.) Analiz iOS simülatörü üzerinde
  3. Run testleri + USB
  4. ile ona bağlı tüm bağlı cihazları

Cihazlarda test yapmak için, jenkins/hudson'u basitlik ve kurulum kolaylığı açısından devasa bir marjla atıyor. Ancak Xcode sunucusu (Xcode 5.1'den itibaren) tamamen özelleştirilemez - eğer performans/bellek kullanımı/ne olursa olsun özel grafikler eklemek istiyorsanız, yapamazsınız - bu tür bir güç için, jenkins/Hudson çok daha iyi.

İlgili konular