CruiseControl.net’teki CCNetArtifactDirectory Sorununun Giderilmesi

Otomatik bir derleme sistemi kurmak zor olabilir, özellikle platforma özgü yapılandırmalarla uğraşırken. Geliştiricilerin karşılaştığı yaygın bir zorluk, CruiseControl.net ile MSBuild görevini entegre etmektir. Bu blog yazısı, CCNetArtifactDirectory‘yi etkili bir şekilde kullanmanın yollarını açıklamayı amaçlamaktadır, böylece derleme çıktılarınız gereksiz değişiklikler yapmadan düzgün bir şekilde yönetilir.

Sorunu Anlamak

CruiseControl.net’i ayarlarken MSBuild görev yapılandırması ile ilgili bir sorunla karşılaşmış olabilirsiniz. Buradaki ana soru şudur:

Derleme sürecimde hata oluşturmadan MSBuild içinde CCNetArtifactDirectory‘yi nasıl etkili bir şekilde kullanabilirim?

Karışıklık, CCNetArtifactDirectory‘nin otomatik olarak MSBuild’e geçmesi beklenmesine rağmen, birçok kullanıcının derleme argümanlarında bunu doğru bir şekilde referans verememesi nedeniyle ortaya çıkmaktadır. Görmekte olabileceğiniz yaygın bir hata mesajı şu şekildedir:

ThoughtWorks.CruiseControl.Core.Config.Preprocessor.EvaluationException: Bilinmeyen simge CCNetArtifactDirectory'ye referans

Bir çözüme dalalım.

Çözüm

CCNetArtifactDirectory Hakkında Endişelenmeyin

İyi haber şu ki, MSBuild komutlarınızda doğrudan CCNetArtifactDirectory‘yi belirtmeniz gerekmez. Varsayılan olarak, CruiseControl.net bu dizini MSBuild’e geçirir, bu da yapılandırmanızda belirtilen çalışma dizinine göre derleme çıktısını uygun konuma yerleştirir.

İşte bir örnek yapılandırma:

<executable>c:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe</executable>
<workingDirectory>C:\data\projects\FooSolution\</workingDirectory>
<projectFile>FooSolution.sln</projectFile>
<buildArgs>/noconsolelogger /p:Configuration=Debug</buildArgs>

Çıktı Konumu

Yukarıdaki yapılandırmayı kullanarak derlemelerinizin çıktısı şu konuma yönlendirilecektir:

C:\data\projects\FooSolution\[ProjeAdı]\bin\Debug

Bu, varlıkların doğru bir şekilde üretildiği anlamına gelir ve CCNetArtifactDirectory‘yi belirtmeniz konusunda endişelenmenize gerek yoktur.

Çıktı Konumunu Özelleştirmek

Ancak, çıktınızı farklı bir konuma yönlendirmek isterseniz, bunu CruiseControl.net yapılandırmanızın <publishers> bölümünde yapabilirsiniz.

İşte çıktı dizinini özelleştirmenin yolu:

<publishers>
  <xmllogger />
  <buildpublisher>
    <sourceDir>C:\data\projects\FooSolution\FooProject\bin\Debug</sourceDir>
    <publishDir>C:\published\FooSolution\</publishDir>
    <useLabelSubDirectory>false</useLabelSubDirectory>
  </buildpublisher>
</publishers>

Bu örnek yapılandırmada:

  • sourceDir: MSBuild’in varlıkları yayınlayacağı dizini belirtin.
  • publishDir: Derleme çıktılarınızı yayınlamak istediğiniz hedefi belirleyin.
  • useLabelSubDirectory: Bu seçenek, yayın yolunuza etiket dizinlerini dahil etmek veya hariç tutmak için değiştirilebilir.

Özet

CruiseControl.net’i MSBuild ile entegre etmek zor bir görev olmak zorunda değil. CCNetArtifactDirectory‘yi doğrudan referans almanız gerekmediğini bilerek, derleme sürecinizi etkili bir şekilde düzene sokabilirsiniz. Derleme çıktılarınızı yönlendirmeye ihtiyacınız olduğunda, sadece <publishers> bölümünü gerektiği gibi yapılandırmanız yeterlidir.

Bu çözümlere sahip olduğunuzda, otomatik derleme yapılandırmalarınızı sorunsuz bir şekilde yönetmek için daha iyi bir şekilde donanımlı olacaksınız.


Bu, CruiseControl.net’teki CCNetArtifactDirectory sorunları ile ilgili MSBuild kullanımı konusundaki incelememizi sonlandırıyor. Bu bilgiyi workflow’unuzu geliştirmek ve geliştirme deneyiminizi daha akıcı hale getirmek için kullanın!