.NET Core Web Projesini Linux ile Derleme ve Paketleme (VSTS)
.NET Core Web Projesini Linux ile Derleme ve Paketleme (VSTS)
Kaynak kodlarını GitHub, Bitbucket vb. bir ortamda bulundurduğumuz bir .NET Core web uygulamasının, “Visual Studio Team Services (VSTS)” aracılığıyla Linux tabanlı bir işletim sistemi ile bulut ortamında otomatik veya istenildiği anda derlenip paketlenmesini anlatmaya çalışacağım.
İlk olarak VSTS ortamına kaynak kodlarımızı barındırdığımız sağlayıcı (GitHub, Bitbucket) tarafındaki hesabımızı tanıtmamız gerekiyor. Bu sayede VSTS’ in derleme, paketleme ve versiyonlama görevlerini yerine getirirken güncel kaynak kodlarına erişebilmesini sağlıyoruz.
BULUT TABANLI .NET CORE DERLEYİCİ
Kaynak kodlarımızı derleyecek olan bilgisayar (agent); VSTS’ in bulut ortamında “Hosted Linux Preview” ismi ile projemiz adına ayaklandırdığı – çalıştırdığı bir Linux dağıtımıdır.
Gerekli tanımlar yapıldıktan sonra VSTS Linux makinasında (agent) çalışacak olan sıralı görevler sayesinde projemizi derleyip dağıtıma hazır hale getirebiliriz. VSTS ortamında kullanılan tüm görev listeleriniVSTS/GitHub adresinden inceleyebilirsiniz.
SIRALI GÖREVLER
Görev 1 – .NET Core SDK Kurulumu
.NET Core Tool Installer” aracı ile projemizi geliştirdiğimiz .NET Core SDK versiyonunun, derlemeyi yapacak olan makinaya (agent) kurulumunu sağlıyoruz.
Örnek proje için birinci adımda aşağıdaki şekilde .NET Core SDK 2.0.0 versiyon yüklemesini yapıyoruz. “.NET Core Tool Installer” görev değişkenlerini uygun değerler ile belirliyoruz. (Version = 2.0.0)
Görev 2 – Derleme İçin Gerekli Harici Paketleri İndir
.NET Core web projesi ve bileşenlerinin (Class Library) ihtiyaç duyduğu harici paketlerin indirilmesi için bir komut satırı (Command Line) görevi ekliyoruz. Böylelikle .NET Core SDK ile birlikte gelen “dotnet restore” komutunu “$(Build.SourcesDirectory)” değişkeninde belirtilen dizinde çalıştırıp “NuGet” paket yöneticisi kullanılarak gerekli paketlerin – kütüphanelerin kaynak ortamlardan indirilmesini sağlıyoruz.
VSTS ortamında varsayılan olarak belirlenmiş ortam değişkenleri bulunmaktadır. Örneğin “$(Build.SourcesDirectory)” değişkeni, kodlarınızın derleme yapılacak bilgisayara (agent) indirildiği dizini ifade etmektedir. Tüm değişkenler içinBuild Variables adresini ziyaret edebilirsiniz.
Görev 3 – Derle
Bu adımda yine bir komut satırı görevi ile .NET Core SDK sı ile birlikte gelen “dotnet msbuild” komutu ve parametreleri ile aynı anda derleme ve paketleme işlemini yapabilen görevi çalıştırıyoruz.dotnet msbuild /t:Restore,Rebuild,Publish /p:OutputPath=bin/$(Build.DefinitionName) /p:Configuration=Release /p:Platform=x64
Böylelikle belirtilen çalışma dizininde yer alan .NET Core web projesinin (.csproj) “Release” konfigürasyonu ile x64 platform destekli derleme ve yayınlama paketini “bin/$(Build.DefinitionName)” dizinine çıkartmış oluyoruz.
Görev 4 – Arşivle
Bir önceki adımda tamamlanan görev ile oluşan uygulama dağıtım paketinin tekil dosyalar (dlls, css, js, configs) yerine daha derli toplu bir demet halinde hazırlanmasını isteyebiliriz. Böylelikle indirme, yükleme vb. işlemler için versiyon numarası ile birlikte arşivlenmiş (tar.gz, zip vb.) uygulama içeriğini saklayabiliriz. Bunun için VSTS ortamında yer alan dosya arşivleyici “Archive Files” görevini kullanabiliriz.
Bir önceki adımda çalıştırdığımız “dotnet msbuild” komutunda belirttiğimiz “Publish” seçeneği, çıktı dizinine (OutputPath) sonu “publish” şeklinde biten uygulama dağıtım paket dizinini bizim için oluşturmaktadır. Böylelikle “bin/$(Build.DefinitionName)publish” dizini arşivlemek isteyeceğimiz uygulama dağıtım paketini barındıracaktır. Belirlediğimiz arşiv ve sıkıştırma tiplerinin ardından “$(Build.DefinitionName)-$(Build.BuildId).tar.gz” tam ismi ile o anki derleme ile ilişkili uygulama dağıtım paketini oluşturabiliriz.
Görev 5 – Derli ve Arşivli Dağıtım Paketini Paylaş Bu son adım ile oluşturulan paketin ilişkili “Release” görevi tarafından kullanılabilmesi veya indirme bağlantısının oluşturulması için “Publish Build Artifacts” görevini kullanıyoruz.
Bu adımlar sorunsuz bir şekilde tamamlandığında projenizin Linux ortamında derlenmiş, dağıtıma hazır bir versiyonunu elde etmiş olursunuz. Kullandığınız “Release Management” aracını bu “Derleme Tanımı – Build Definition” ile ilişkilendirebilirsiniz.
Bir defaya mahsus hazırlanacağınız ve çaba sarf edeceğiniz bu adımları tamamladığınızda bulut ortamında sizden hiç bir kaynak tüketmeden kütüphanelerinizin, uygulamalarınızın derlenmiş ve paketlenmiş versiyonlarını her daim hazır bulunduran bir ortama kavuşmuş olacaksınız. VSTS in geniş görev kabiliyetleri ile Windows, Linux ve macOS ortamlarına ait araç ve gereçleri de kullanabiliyoruz.
DevOps süreçlerimize katkı sağlaması dileğiyle.