2015-03-04 22 views
9

TeamCity'de bir Solution .sln dosyası oluşturması gereken iki msbuild Build Steps ile bir Yapılandırma Yapılandırması oluşturdum.TeamCity yapı yapılandırmasında yapı başına adım/p kullanmanın uygun yolu nedir?

Yapıyı çalıştırdığımda, hedefi "Oluştur" olarak tanımladım, her iki adım da standart yapılandırmayı açık bir şekilde yürütüyor ve her ikisini de iki kez Hata Ayıklama veya Sürüm Oluşturma özelliğini oluşturuyor.

Şimdi yapı adım ayarlarına gitti ve /p:Configuration=Release eklendi Release için ben /p:Configuration=Debug eklendi Debug için CommandLine argüman, buldum.

bu Bina TeamCity bir uyarı ile sonuçlanır:

MSBuild command line parameters contain "/property:" or "/p:". It is recommended to define System Property on Build Parameters instead. 

rağmen bir hata ayıklama ve bir serbest bırakma inşa olmuştur.

Bu iletiyi inceledik ve iki System Parameters: /p:Configuration=Debug ve /p:Configuration=Release oluşturduk. Şimdi komut satırımı hata ayıklamak için %system.DebugConfig% olarak değiştirir ve %system.ReleaseConfig% sürümüne yayımlamak için aynı hatayı alıyorum. Sadece o zaman bu sistem parametrelerinin her zaman otomatik olarak her zaman adım adım geçeceğini anladım.

Tamam, ancak komut satırında bulunan /p hakkında şikayette bulunan sistem parametrelerini kullanarak veya ekip şehri olmaksızın hata ayıklama yapılarak iki farklı oluşturma adımını nasıl tanımlayabilirim? hangi normalde -

Eğer ayrı yapı adımları bırakın ve bunun yerine ayrı kullanmaya istekli iseniz yerine oluşturur:

cevap

4

yeterli alternatifler vardır bunu (I Benimle birlikte ayı biliyorum) ama hiçbir yolu yoktur herhangi bir sorun olmamalıdır, şablonlar kullanın: build template oluşturun, bu durumda Configuration gibi yapılandırılabilir olması gereken tüm parametreleri ekleyin ve onlara uygun varsayılan değerleri verin. Ardından, istediğiniz her bir özellik kombinasyonu için bir yapılandırma yapılandırması oluşturun ve bu yapılandırmada parametreleri geçersiz kılın.

Başka bir seçenek: kendiniz yapın. Geçmişte birkaç CI arasında geçiş yaptım ve bir CI sisteminin özelliklerine ne kadar çok güvenirseniz, manuel olarak test etmeyi zorlaştırırsa, CI sisteminin web arayüzlerini taradığında ne kadar hantal olursa Doğru yapılandırma parametrelerini bulmak için veritabanlarını veya config dosyalarını ve daha fazla CI'ye geçişin daha fazla sakatlanmasına neden olur. Yani bir noktada ben sadece vazgeçti ve konuşmak için tek bir düğme ile her şeyi inşa edecek bir kaç msbuild 'master' komut yazdı, Joel Test hatırlıyorum, ama istediğim herhangi bir makinede, kendi herhangi bir CI'ye olan ihtiyaç. O zamandan beri bakmadığım bir rahatlama oldu ve CI konfigürasyonu artık asgari düzeyde tutuldu. davanıza Uygulanan:

<ItemGroup> 
    <Configurations Include="Debug;Release"/> 
</ItemGroup> 

<Target Name="Build"> 
    <MsBuild Projects="$(MyTargetProjectFile)" Targets="Build" 
      Properties="Configuration=%(Configurations.Identity)"/> 
</Target> 

Henüz başka bir seçenek: sadece TeamCity uyarısını görmezden aşağıdaki gibi bir msbuild dosyası ve hedef kurmak var çağırır ve gerçek proje dosyasına bir MyTargetProjectFile sistem parametre poiting sahiptir TC bir derleme adımı oluşturmak . Bana bu şekilde neden ısrar ettikleri asla açık değildi. Bu, mantıksız görünüyor ve bunun gibi sorulara yol açıyor:] Farklı özelliklere sahip farklı inşa adımlarına sahip olmak oldukça basit bir gereklilik gibi görünüyor, değil mi?/P kullanmamanız için herhangi bir msbuild adımımız olduğunu düşünmüyorum ve hepsi gayet iyi çalışıyor.

+0

İçgörü için teşekkürler.İşyerinde aslında bir derleme aracı (eğer yedeklenmedikçe) ölürse kurulum maliyetini önlemek için master msbuild dosyalarını yazarım. Onları geçerli bir duruma geri yapılandırmak her zaman bir ** 'de acıdır, bu yüzden gerçekten de kendi hedeflerimi yaratıyorum. İlk önce TeamCity'nin uyarılarını görmezden geleceğim ve ustalığı yaparken daha fazla '/ p' argümanına ihtiyacım olduğunu düşünüyorum. – Samuel