.NET Core Build — Continuous Integration (CI) ve Versiyon Yönetimi

TFS ve Agent Ayarları

Bir .NET Core projesini derlerken DotNet CLI, .NET Core SDK ve .NET Core Runtime üçlüsüne ihtyaç duyarız. NET Core’ un Cross-Platform desteği editor ve IDE bağımlılıklarınıda ortadan kaldırmayı hedeflemektedir. Böyelikle projeniz ile ilgili; derleme (build), paketleme (pack) ve dağıtim (deploy — publish) süreçlerini Command Line (komut satırı) ile gerçekleştirebilirsiniz.

dotnet build --configuration Release
dotnet msbuild /p:Configuration=Release
  1. Geliştirme ortamımızda kullandığımız dotnet versiyonunu (SDK, Runtime) TFS sunucusuna kurmamız gerekmektedir.
  2. Web Deploy 3.6 aracının kurulu olduğundan ve TFS sunucunuzda (Agent’in çalışacağı — TFS ile aynı sunucuda konumlandırabiliriz) komut satırından msdeploy.exe komutuyla çalıştığından emin olunuz.
  • set PATH=%PATH%;C:\Program Files\IIS\Microsoft Web Deploy V3\
  1. Tüm operasyonları gerçekleyecek olan Agent kurulumu için TFS sunucunuzdan Agent’ i indirmeniz gerekmektedir.

Build Adımları

Yukarıda belirtilen adımları tamamladığımızda Agent’ı TFS sunucumuzda Agent Queues sekmesinde Idle durumda görüyor olmamız gerekmektedir. Bundan sonrası bir Build Definition (Derleme Tanımı) ile devam etmektedir. (Project->Build->Create new build definition)

1. Adım: Temizlik ;-)

Obj ve Bin klasörleri sebebiyle oluşabilecek hataları önlemek amacıyla derleme işleminin yapıldığı kök dizinde yeni bir sayfa açalım. (Add Build Step -> Utility -> Delete Files) Bunun için:

2. Adım: dotnet msbuild (Build)

Kritik bir adım, parametreler ve gereksinimler kusursuz olmalı. (Add Build Step -> Utility -> Command Line)

msbuild /t:Restore,Rebuild,Publish /p:OutputPath=bin/$(Build.DefinitionName) /p:Configuration=Release /p:Platform=x64

3. Adim Temp

Geçici dosyalarınızı tutmayı planladığınız dizini gerekliyse 1. adımdaki yöntem ile temizleyebilirsiniz.

4. Adım: MSDeploy.exe

Oluşturduğumuz dağıtım paketini farklı sunucularda çalışan IIS (Internet Information Services — Web Server) sunucularına basit bir komutla güncelleme veya yükleme yapabilmek için:

-verb:sync -source:contentPath=%cd%\bin\$(Build.DefinitionName)publish\ -dest:package=$(buildFullPath)\$(Build.DefinitionName).zip -declareParam:name="IIS WebApplication Name",defaultValue="$(Build.DefinitionName)"

5. Adım: Dosya Kopyalama

Paketin sunucular tarafından okunabilen bir ağ dizinine (UNC Path) kopyalanması amacıyla

6. Adım: TFS Release Paketinin oluşturulması

Bu adımda derleme ve paket işlemi tamamlanmış olan bir dosyanın TFS ortamında daha sonra bu paketi kullanacak (ilişkilendirilecek) olan Release için hazır edilebilmesi amacıyla tüm öğeleri uygun dizine yerleştiriyoruz. (Build artifacts)

Release

Uygulama paketinin hangi sunuculara ve ne tip ön gereksinimler ile dağıtılacağını bu süreçte belirleyebiliriz. Bunun için ben ilgili sunucularda WinRM özelliğini tercih ediyorum. WinRM aracı sunucularda bağlantıda belirtilen PowerShell dosyası ile özelleştirildiğinde, canlı ortama güncel versiyonun veya paketin aktarım işlemine şu seçenekler ile başlayabiliriz.

  1. WinRM — IIS Web App Management
  2. PowerShell on Target Machines
-packagePath:$(releasePath)\$(relatedBuildName)\$(relatedBuildName).zip -siteName:$(relatedBuildName) -siteFullPath:$(physicalPath) -environmentName:$(Release.EnvironmentName)

BONUS: TFS CLI

Bu komut satırı aracını kullanarak birçok işlemi hızlıca gerçekleştirebiliyoruz. TFS REST API hizmetlerini kullanan bu araç ile özel çözümler geliştirebilirsiniz.

--

--

v1/coder/solution-architect/manager

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store