Contiuous Integration Türkçe’de mot-a-mot anlamı “sürekli entegrasyon“‘dur. Peki ne işe yarar ? CI her checkin(TFS’de) veya commit(Git’te)’te projenizi alıp derler(build), test eder, döküman oluşturur ve yayınlar(deploy). Bu sayede olası hataların tespiti hızlı olur ve sürekli güncel bir dökümantasyon oluşur. CI için çeşitli araçlar vardır, bunlardan bazıları;Teamcity, Jenkins, Myget, Appveyor…
Teamcity’nin kurulumuna gelecek olursak, resimlerle anlatmaya çalışacağım…
https://www.jetbrains.com/teamcity adresine giriyoruz ve “Get TeamCity X.X Now” a tıklıyoruz. İnen dosyayı çalıştırıyoruz.
Standart yükleme işlemleri “Next”
Lisans sözleşmesini okudum ve kabul ediyorum “I Agree”
TeamCity’nin kurulacağı dosya dizini
Build için gerekli “Build Agent” ve sistem için gerekli “Server”ı seçiyoruz.
TeamCity’nin veri yolunu seçiyoruz (Değiştirmenize gerek yok)
Yükleniyor…
TeamCity’nin çalışacağı portu seçiyoruz(boş olan bir portu verebilirsiniz.)
ServerUrl: TeamCity’nin paneline gireceğimiz yol.
workDir: Build Agent’ın dosyaları indirip derlediği klasör
Teamcity’e izin veriyoruz.
Build Agent’ın özellikleri buraya kaydettim diye uyarı geliyor.
Ben burda SYSTEM hesabı altında çalıştırdım dedim ama siz başka hesapla da başlatabilirsiniz.
Aynı şekilde Agent için de yukardaki geçerli.
Agent ve TeamCity Server’ı başlatıyoruz.
Kurulum bitti, TeamCity’i açma zamanı.
Başlamadan önce C:\ProgramData\JetBrains\TeamCity içinde mi gözden geçirin ve devam edin(proceed)
Bu aşamada TeamCity kurulumlarını yapıyor ve sizden TeamCity verilerini tutmak için bir veritabanı seçmenizi isteyecek. Ben MS SQL’i seçtim. Bunun TeamCity için JDBC driver’a ihtiyaç duyuyor. http://www.microsoft.com/en-us/download/details.aspx?id=11774 adresinden hemen “Download”a tıklıyoruz.
sqldbc_x.x.xxxx.xx_enu.exe yi seçip “Next” diyoruz
İnen dosyası “Unzip”e tıklayıp çıkarıyoruz.
Bize lazım olan dosyayı”sqljdbc4″ kopyalıyoruz
C:\Programdata\JetBrains\TeamCity\lib\jdbc yoluna kopyalıyoruz.
Ek not: Eğer TCP/IP durumunuz “disabled” ise onu “enable” yapmanız gerekiyor. TeamCity’nin MS SQL’e bağlanabilmesi için gerekli.
Ek not 2: SQL Server’ı yeniden başlatıyoruz.
“Refresh JBDC drivers” dediğimiz artık “Loaded MS SQL Server JDBC driver version x.x” demesi gerekiyor. SQL’e “sa” şifresi atamadıysanız “windows authentication” ile de girebilirsiniz ama güvenlik için şifre vermenizde yarar var. Veritabanımıza bir isim veriyoruz “Database name” (Veritabanını MSSQL’e girip elle eklemeniz gerekiyor). sonra devam “proceed”.
TeamCity lisans sözleşmesi.
Bir tane yönetici hesabı oluşturuyoruz
ve TeamCity panelimiz 🙂
“Create project from URL” e tıklıyoruz. Ve visualstudio.com’da bir proje açıyoruz.
Visualstudio.com hesabınıza girip “Create project”e tıklayıp ben örnek bir proje oluşturuyorum. (TFS ile)
“Open with VS to connect” e tıklayıp hızlıca projemizi açabiliriz.
Chrome uyarı fırlatacak “Launch App.” e tıklayın.
VisualStudio.com hesabınızla giriş yapın.
Artık TeamcityExample projemize bağlandık. Ama bir de Map ayarı yapmamız lazım. Ben TFS ana dizini ile “C:\ExampleSpace” i eşledim. Siz de istediğiniz bir yolu verebilirsiniz.
Solutions kısmından “New” e tıklayın.
Bir tane Web Application oluşturalım. Ben ismini “TeamcityExample” olarak verdim.
Unit test içeren basit bir MVC projesi seçtim.
Oluşan projemi checkin yaptım.
Proje dosyalarım VisualStudio.com’da
Teamcity’den visualstudio.com’a bağlanmak için alternatif giriş yöntemini aktif ediyoruz.
“enable alternate credentials” tıklayınca aşağıdaki ekran gelecek. Bir tane kullanıcı adı ve şifre belirleyelim.
Visual studio hesabımızdaki projemizin yolunu gireceğiz ve yukarda tanımladığımız kullanıcı adı ve şifreyi gireceğiz. ve devam “proceed”
Projemize ve Build ayarlarına isim veriyoruz. ve devam “proceed”
Verilen proje bağlantısından 2 dosya derinliğine kadar “solution” dosyasını yani “.sln” ile biten dosya bulabilirse otomatik build step’ini oluşturuyor. Yoksa kendimiz yapmamız gerekiyor. “Use selected” diyoruz. Sonra sağ üstten “run” a tıklıyoruz.
Build başarıyla geçti.
Not: Proje büyüdükçe yüklenmesi gereken referanslar gerekiyor ve build hata veriyor. Bu yüzden Nuget’i aktif etmemiz gerekiyor.
Nuget sayfasından “NuGet Server is enable” yapıyoruz.
NuGet.exe tabına geldip “Fetch NuGet” diyoruz.
NuGet’in son sürümünü seçip “Add” diyoruz.
Build adımlarımız. “Add build step” e tıklıyoruz.
“Runner type”tan “Nuget Installer” ı seçiyoruz. “Path To Solution File”dan “.sln” dosyamızı seçiyoruz.
“NuGet Installer” adımını en yukarı alıyoruz ki ilk önce referanslar yüklensin.
Tekrar “Add build step” dedikten sonra “MsTest” tipinde bir “Runner” oluşturuyoruz. “List assembly files” a test edeceğimiz projelerin yollarını yazıyoruz. Yıldızlı(*) ifade “herhangi” bir anlama geliyor. Ayrıca bakarsınız.
Tekrar “Add build step” dedikten sonra “MSBuild” ekliyoruz. “Build file path”‘den “publish” yapacağımız projeyi seçiyoruz. “Targets” kısmında projeyi önce temizliyoruz “Clean”, sonra derliyoruz “Build”, sonra yayınlıyoruz “Publish”. “Command line parameters” a ise
/t:Package
/p:_PackageTempDir=”C:\ExampleSpace\TeamcityExamplePublish”
/p:Configuration=”Debug”
/p:AutoParameterizationWebConfigConnectionStrings=False
yazıyoruz. Burda “C:\ExampleSpace\TeamcityExamplePublish” dosyasına “Debug” build ayarı ile derlenen proje “ConnectionString”i otomatik parametre almadan yayınlanır. Yani IIS’te açtığınız bir sitenin adresini (TeamCity ile aynı sunucuda olduğunu varsayıyorum) rahatlıkla yazıp yayınlayabilirsiniz.
“Build” adımlarımızın son hali
Run dedikten sonra derlenen, testlerden geçen ve yayınlanan sitemiz.
Yayınlanması için verdiğimiz dosya yoluna projenin eklendiğini görüyoruz.