SORU
14 Temmuz 2009, Salı


Nasıl otomatik artan C olabilirim# CI platform üzerinden derleme sürümü (Hudson)?

Ben ve Grubum derleme sürüm numaraları artan en korkunç ve sık sık 1.0.0.0 sürümleriyle derlemeler gemi. Belli ki, bu baş ağrısı bir sürü neden olur.

Geliyoruz çok daha iyi uygulamalarımız ile bizim CI platform ve istiyorum bunu ayarlamak için otomatik artış değerleri içinde assemblyinfo.cs dosya sürümleri bizim derlemeleri otomatik güncelleme ile kod değişiklikleri bu derleme.

Ben daha önceden Kur (önce bulduk Hudson) bir şekilde artış değeri üzerinden ya da msbuild veya komut satırı (hatırlamıyorum), ama Hudson, güncelleme SVN Depo ve tetikleyici BAŞKA bir yapı. Hudson anketler her saat SVN gibi yavaş sonsuz bir döngüye neden olur.

Olur Hudson artış olması, sürüm numarası kötü bir fikir? Bunu yapmak için alternatif bir yol ne olabilir?

İdeal olarak, bir çözüm için kriterler mı olacaktı:

  • Kademeli bir yapı önce assemblyinfo.cs yapı numarası
  • Sadece artışlarla değişen derlemeleri yapı numarası. Bu Hudson projeyi öyle bir klasör mendil her zaman mümkün olmayabilir
  • Taahhüt değişti assemblyınfo.kod deposu (şu anda VisualSVN) cs
  • Hudson yeni bir tetikleyici neden olmaz yapı değişiklikleri tarar bir dahaki sefere

Bu çalışma dışarı kafamı, elimden kolayca bir çözüm için en çok bu toplu iş dosyaları / komutları, ama benim fikirler neden Hudson için tetikleyici bir yeni yapı bir dahaki sefere tarar. Birisi benim için her şey, sadece doğru yönde beni işaret ediyor, belki bir teknik Hudson belli SVN görmezlikten gelmesine iptalleri, vb için aramıyorum.

Şimdiye kadar bulduğum her şey bir makale sürümü otomatik olarak artan sayı nasıl anlatıyor, hiçbir şey dikkate sonsuz bir döngü içine bükülmüş olabilir CI bir platform alır.

CEVAP
18 AĞUSTOS 2010, ÇARŞAMBA


İşte yaptığım şey, AssemblyFileVersion özniteliği damgalama için.

Assemblyınfo gelen AssemblyFileVersion kaldırıldı.cs

Yeni, boş bir dosya AssemblyFileİnfo adlı bir eklenti.proje için cs.

Hudson http://msbuildtasks.tigris.org/ MSBuild topluluk görevleri makine inşa yükleyin.

Proje (csproj), sadece bir msbuild dosyası bu dosya, ve sonra aşağıdakini ekleyin.

Bir yere sürümünü belirten <PropertyGroup> olacak. Yani örneğin okur değiştirin

 <Major>1</Major>
 <Minor>0</Minor>
 <!--Hudson sets BUILD_NUMBER and SVN_REVISION -->
 <Build>$(BUILD_NUMBER)</Build>
 <Revision>$(SVN_REVISION)</Revision>

Hudson proje hudson (subversion getirilen varsayarak) üzerine inşa edilmiştir zaman orada görüşürüz o env değişkenleri sağlar.

Projenin alt kısmında Dosya Ekle

 <Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets" Condition="Exists('$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets')" />
  <Target Name="BeforeBuild" Condition="Exists('$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets')">
    <Message Text="Version: $(Major).$(Minor).$(Build).$(Revision)" />
    <AssemblyInfo CodeLanguage="CS" OutputFile="AssemblyFileInfo.cs" AssemblyFileVersion="$(Major).$(Minor).$(Build).$(Revision)" AssemblyConfiguration="$(Configuration)" Condition="$(Revision) != '' " />
  </Target>

Bu MSBuildCommunityTasks bu AssemblyFileVersion üretmek için kullanır.bir AssemblyFileVersion eklemek için cs projeyi inşa etmeden önce bağlıyor. Eğer isterseniz sürümünün tüm özellikleri herhangi bir/bunu yapabilirsin.

Sonuç, bir hudson inşa sorun olduğunda, oluşturulan derleme 1.0 AssemblyFileVersion alır.HUDSON_BUİLD_NR.6'ci inşa anlamına gelir SVN_REVİSİON örneğin 1.0.6.2632 , # hudson, subversion revizyon 2632 den ama.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ASUS North America

    ASUS North A

    12 AĞUSTOS 2008
  • Evan Coury

    Evan Coury

    29 NİSAN 2007
  • Thehalopianoplayer

    Thehalopiano

    4 ŞUBAT 2011