Nant Kurulum Aracı ile kurulum otomasyonu

17 Ağustos 2006 – 13:42

Birçoğumuz projelerimizi, çalışmalarımızı gerçekleştirdikten sonra derleme ve kurulum işlemlerini el ile gerçekleştirmeyi tercih ediyoruz. Bununla birlikte özellikle takım geliştirme ortamında veya büyük yazılım projelerinde böyle bir yaklaşım karmaşaya yol açar. Takım geliştirme ortamında yazılımın derlenmesi, sürüm ve değişim kontrolü, test edilmesi ve kurulumu süreçlerini kontrol edebilmek için bazı araçlara gereksinim vardır. Bunun kadar önemli bir diğer problem de bu görevlerin bütünleşik olarak çalıştırılabilmesi ve otomatik olarak gerçekleştirilebilmesidir. Bu yazımızda, yazılım mühendisliğinin bu önemli süreci için kullanabileceğimiz NAnt kurulum aracını inceleyeceğiz.
NAnt kurulum aracı, Java geliştiricilerin yaygın olarak kullandıkları Ant aracının. NET sürümüdür. .NET ortamındaki bütün diller için kullanılabilir. NAnt ile çeşitli kurulum hedefleri tanımlayıp bu hedefler için görevler belirtebilirsiniz. Uygulamanın son sürümünü http://nant.sourceforge.net/ adresinden indirip kurduktan sonra kullanmaya başlayabiliriz. Yazımızda basit bir .NET konsol uygulaması için kurulum gerçekleştireceğiz.
Örnek uygulama tahmin edebileceğiniz şekilde bir “Hello World” uygulaması. Uygulamanın kodu aşağıdaki gibidir:
public class HelloNant
{
static void Main()
{
System.Console.WriteLine("Hello from Nant!
");
}
}
Bu uygulamanın kurulumunu gerçekleştirmek için yapmamız gereken ilk şey bir kurulum dosyası hazırlamaktır. Bu dosya XML formatında ve .build uzantılı bir dosyadır. Örnek uygulamamız için hazırladığım .build dosyası aşağıdaki gibidir:
<project name="Hello Nant" xmlns="http://nant.sf.net/release/0.85-rc3/nant.xsd" basedir=".">
<target name="build">
<csc target="exe" output="HelloNant.exe">
<sources>
<include name="HelloNant.cs" />
</sources>
</csc>
</target>
</project>
Dosyanın detaylarına geçmeden önce örnek uygulamanın kurulumunun nasıl yapılacağından bahsetmek istiyorum. Kurulumu gerçekleştirmek için Nant kurulum dizinini içerisindeki /bin klasöründeki nant.exe aracını Path ortam değişkenine eklemek gerekmektedir. Daha sonra komut satırından
Nant –buildfile:hello.build
komutu ile kurulumu gerçekleştirebilirsiniz.

 
a
 

.build dosyasına göz atacak olursak, dosyanın bir proje tanımladığını görürüz. Proje elemanın altındaki target yani hedef elemanları farklı kurulum görevlerini gerçekleştirebilmemizi sağlamaktadır. Şöyle ki, makinemizde bugünlerde olduğu gibi .NET 1.1 ve .NET 2.0 ortamları yüklü ise uygulamamızı bu farklı hedeflerden birisini kullanabilecek şekilde kurabiliriz.
Her bir target bir takım task yani görev elemanlarını barındırır. NAnt veya genel olarak Ant kurulum aracının esas gücü de bu görev elemanlarında yatar. Örneğimizde <csc> görevini kullanarak csc derleyicisini çalıştırdık. Bu görevleri kullanarak uygulamanızı test edebilir, derlemeden önce eski derlenmiş dosyaları temizlemek isteyebilir, CVS aracını kullanarak en son sürüme ait kodları derleyebilir ve bunun gibi birçok görevi gerçekleştirebilirsiniz. Bu görevleri örnek üzerinde inceleyelim.
Uygulamalarımız her zaman yukarıdaki örnekte olduğu kadar kolay olmaz. Örneğin uygulamamızı debug edebilmek için debug sembollerini de ekleyerek debug seçeneği ile derlemek isteyebiliriz. Bunun için var olan “build” hedefimize ilave olarak “debug” hedefi ekleyelim.
<project name="Hello Nant" xmlns="http://nant.sf.net/release/0.85-rc3/nant.xsd" basedir=".">
<target name="build">
<csc target="exe" output="HelloNant.exe">
<sources>
<include name="HelloNant.cs" />
</sources>
</csc>
</target>
<target name="debug">
<mkdir dir="debug" failonerror="true" />
<csc debug="true" output="debug/HelloNantDBG.exe" target="exe">
<sources>
<include name="HelloNant.cs" />
</sources>
</csc>
</target>
</project>
Kurulumu debug hedefi için gerçekleştirmek istediğimizde

Nant debug –buildfile:hello.build

Komutunu kullanarak hedefimizi debug olarak belirtebiliriz. Debug hedefinde bu defa <mkdir> görevini de kullandık. Bu görevi dizin yaratma işlemlerinde kullanabiliriz. <mkdir> elemanının failonerror niteliği, hata oluşması durumunda görevin durdurulup durdurulmayacağını belirtir.

 

 
a
 

Derlemeden önce derlenmiş eski dosyaları silmek için <delete> görevini kullanabiliriz. Aşağıda, örneğimiz için “clean” hedefi tanımlanmaktadır.
<target name="clean">
<delete file="debug/HelloNantDBG.exe" />
<delete file="debug/HelloNantDBG.pdb" />
</target>
“clean” hedefini tanımladıktan sonra bu hedefi diğer hedeflerle ilişkilendirebiliriz. Hedefleri birbirine bağımlı kılmak için <target> elemanının depends niteliğini kullanırız. Örneğin, debug hedefini clean görevine bağımlı hale getirelim
<target name="debug" depends="clean">

 
a
 

Son olarak kurulum işlemi esnasında farklı bir uygulama çalıştırmanız gerektiğinde <exec> görevini kullanabilirsiniz. Örneğin:
<target name="run" depends="debug">
<exec program="debug/HelloNantDBG.exe" />
</target>
Daha sonra,
Nant run –buildfile:hello.build
Komutu ile uygulamayı çalıştırabiliriz. Burada dikkatinizi çekmek istediğim yer görevlerin birbirine bağımlılıkları. Yani biz run hedefini belirterek kurulum yapmak istediğimizde NAnt önce clean hedefini gerçekleştirecek, sonra debug hedefini gerçekleştirecek ondan sonra run hedefini gerçekleştirecektir. Birbirine bağımlı olmayan hedefleri gerçekleştirmek istediğinizde

 
a
 

Nant build run –buildfile:hello.build
Komutu gibi hedefleri listeleyerek kurulumu gerçekleştirebilirsiniz.

 
a
 

Yazılım projelerinde en sık ihmal edilen ama en büyük sıkıntılara yol açan kurulum işlemini otomatik olarak gerçekleştirmek iyi bir yazılım mühendisliği pratiğidir. Bir sonraki yazımda NAnt aracını NUnit test framework ile kullanarak kurulum ve test otomasyonunun nasıl gerçekleştirilebileceğinizi göstermeye çalışacağım. Sorularınız için e-mail gönderebilirsiniz. Tekrar görüşmek üzere…

Ekrem AKSOY

Bookmark and Share
  1. One Response to “Nant Kurulum Aracı ile kurulum otomasyonu”

  2. işime yarayacak sagolasın

    By otomasyon on Mar 9, 2009

Post a Comment

Subscribe without commenting