Sign In

 

 

.NET Core Web Projesini Linux ile Derleme ve Paketleme (VSTS).NET Core Web Projesini Linux ile Derleme ve Paketleme (VSTS)4532018-04-17T12:04:00Z 17.4.2018 12:04:00Gencebay Demir<div class="ExternalClassE59F79323BB1428982C81B449F0FFC67"><p>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.</p><p> <img src="/blog/PublishingImages/Lists/Posts/AllPosts/vsts.jpg" alt="vsts.jpg" style="margin:5px;width:575px;height:324px;" /> <br> </p><p>İ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.</p><p> <img src="/blog/PublishingImages/Lists/Posts/AllPosts/GithubIntegration.png" alt="GithubIntegration.png" style="margin:5px;width:575px;height:219px;" /> <br> </p><p> <strong>BULUT TABANLI .NET CORE DERLEYİCİ</strong> </p><p>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.</p><p> <img src="/blog/PublishingImages/Lists/Posts/AllPosts/HostedLinuxPreview.png" alt="HostedLinuxPreview.png" style="margin:5px;width:575px;height:304px;" /> <br> </p><p>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 listelerini <a href="https://github.com/Microsoft/vsts-tasks/tree/master/Tasks" target="_blank" style="text-decoration:underline;"><span class="ms-rteForeColor-8" style="text-decoration:underline;">VSTS/GitHub</span></a> adresinden inceleyebilirsiniz.</p><p> <strong>SIRALI GÖREVLER​</strong></p><p> <strong> <em>Görev 1 - .NET Core SDK Kurulumu</em></strong></p><p>.NET Core Tool Installer" aracı ile projemizi geliştirdiğimiz .NET Core SDK versiyonunun, derlemeyi yapacak olan makinaya (agent) kurulumunu sağlıyoruz.</p> <img src="/blog/PublishingImages/Lists/Posts/AllPosts/NetCoreTooInstaller.png" alt="NetCoreTooInstaller.png" style="margin:5px;width:575px;height:278px;" /> <p></p><p>Ö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)</p><p> <img src="/blog/PublishingImages/Lists/Posts/AllPosts/Adim1.png" alt="Adim1.png" style="margin:5px;width:575px;height:372px;" /> <br> </p><p> <strong><em>Görev 2 - Derleme İçin Gerekli Harici Paketleri İndir</em></strong></p><p>.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.</p><p> <img src="/blog/PublishingImages/Lists/Posts/AllPosts/Adim2.png" alt="Adim2.png" style="margin:5px;width:575px;height:431px;" /> <br> </p><p>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çin <a href="https://docs.microsoft.com/en-us/vsts/build-release/concepts/definitions/build/variables?view=vsts&tabs=batch" target="_blank" style="text-decoration:underline;"> <span class="ms-rteForeColor-8" style="text-decoration:underline;">Build Variables</span></a> adresini ziyaret edebilirsiniz.</p><p> <strong> <em>Görev 3 - Derle</em></strong></p><p>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.​</p><pre class=" language-markup">​<code class=" language-markup">dotnet msbuild /t:Restore,Rebuild,Publish /p:OutputPath=bin/$(Build.DefinitionName) /p:Configuration=Release /p:Platform=x64</code></pre> ​​ <p> <img src="/blog/PublishingImages/Lists/Posts/AllPosts/Adim3.png" alt="Adim3.png" style="margin:5px;width:575px;height:242px;" /> <br> </p><p>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.</p><p> <strong> <em>Görev 4 - Arşivle</em></strong></p><p>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.</p><p> <img src="/blog/PublishingImages/Lists/Posts/AllPosts/Adim4.png" alt="Adim4.png" style="margin:5px;width:575px;height:326px;" /> <br> </p><p>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.</p><p> <strong> <em>Görev 5 - Derli ve Arşivli Dağıtım Paketini Paylaş</em></strong></p> 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. <p></p> <img src="/blog/PublishingImages/Lists/Posts/AllPosts/Adim5.png" alt="Adim5.png" style="margin:5px;width:575px;height:269px;" /> <p>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.</p><p>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.</p><p>DevOps süreçlerimize katkı sağlaması dileğiyle.​</p></div>dot-net-core-web-projesini-linux-ile-derleme-ve-paketleme-vstshttp://www.bilgeadam.com/blog/Lists/Photos/PostImages/Net-Core-and-Linux.jpgKaynak 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.bluePROYazılım

Yazara Soru Sor




SORU GÖNDER