Projelerimizde belli durumlarda tekrarladığımız kodlarımız olur. Bu kodlarımızı tekrarlamak yerine bir paket haline getirerek tek bir yerden yönetmenin faydasını görüp hem de dilersek bir çok kullanıcı tarafından kullanılmasını sağlayabiliriz. Örn: nuget.org

Biz de nuget.org gibi bir endpoint üzerinden kendi paketlerimizi dilersek public, dilersek private olarak hizmete sunabiliriz. Bunun için Azure Artifact kullanacağız.

Nuget paket örneğimiz için daha önce anlattığım .net core automapper/mapster kütüphanelerini paket haline getirelim.

Buradan inceleyebilirsiniz.

Class Library Görünümü

Üç adet class library’den oluşan yeni bir solution açtık. Mapper için bir alt yapımız var, bundan türeyen “Automapper, Mapster” var.

Bunun için öncelikli olarak, microsoft email ile dev.azure.com üzerinden “AzureDevops” hesabımızı açalım.

Açtığımız repositorye kodlarımızı commitleyelim. Artık bundan sonra sırasıyla CI ve CD süreçlerimiz başlayacak.

İlk olarak kodlarımızı build etmemiz gerekiyor. Bunun için pipeline oluşturalım.

“Repos” olarak ben azure kullanıyorum o yüzden “Azure Repos Git” seçiyorum.
Github, Bitbucket üzerinde kodlarınızı depolayabilirsiniz. Azure DevOps sadece “Azure Repos Git” zorunluluğu istemiyor. “Use the class editor” seçerek devam edelim. Sonra ilgili depo alanımızı bularak branch check yapalım.

Proje ve branch seçimi

Benim repo adım “SCore” ve branch “master” seçerek devam ediyorum. Continue dedikten sonra “Empty job” seçerek devam ediyorum.

Önümüze çıkan ekranda öncelikle “Triggers” bölümüne gelerek “Enable continuous integration” bölümünü seçiyoruz. Böylece biz bir commit attığımız zaman bu pipeline direkt çalışacak ve projemizi build alacak.

Pipeline adımını nasıl yapacağız?
İlk olarak elde etmemiz gereken görüntü şöyle:

Kodlarımızı windows üzerinde derlemek istediğimiz “vs2017-win2016” makinesini seçiyoruz. Sonra sırayla “dotnet restore, dotnet build, dotnet pack ve publish artifact” joblarını uyguluyoruz.

1.Dotnet Restore

dotnet restore

Projemizi build ettiğimiz ilk olarak ne yapar? Hani Rebuild yaparız, paketleri indirip projemizi derlemeye ön hazırlık yaparız. Burada da nuget.org paketlerini kullandığımız projemiz için derleme hazırlığı yapıyoruz.

2.Dotnet Build

dotnet build

“Core.**/*.csproj” burada belirttiğimiz path benim projem, burada siz kendi projenizin yolunu yazmalısınız.
Build adımında aslında projemizi bir IDE’de build yaptığımız işlemin aynısını yapıyoruz.

3.Dotnet Pack

Dotnet Pack

Yine .Net Core komutu ile projemizi paketliyoruz.

4.Publish Artifact

Restore işlemi yaptık. Kodlarımızı build ettik, daha sonra paketleme işlemi yaptık. Artık kodlarımızı publish etmemiz gerekiyor. Publish komutu çalıştırdığımız bu aşama çıkan çıktıya bir artifact deniyor.
Şimdi elimizde bir build sonucunda oluşan artifact var. Bununla nuget paketlerimizi public/private hizmete sunmak için release sürecini oluşturacağız. Böylece Azure Artifactlerimizi oluşturmuş olacağız.

Release bölümünde “New Release Pipeline” dediğimizde yine “Empty Job” seçiyoruz.

“Artifacts” bölümünden en son build paketinin artifact dosyasını seçiyoruz. Artifactin “Continuous deployment trigger” alanını seçtiğimizde build sonrasında direkt olarak release almasını sağlayabiliriz.

Stage bölümüne 2 tane job ekleyeceğiz.

Release Nuget

Release için iki adet job eklememiz gerekiyor.
Use Nuget eklediğimizde her hangi bir değişiklik yapmamıza gerek yok.
2. olarak “NuGet push” ekleyerek artifact push yapmayı sağlayacağız.

Azure DevOps’dan artifact bölümünde bir tane sıfır feed açmayı unutmayın.
“Create Feed” ile yeni bir feed açıp ona bir ad verin. Bu verdiğim adı şimdi kullanacağız.

Nuget Push

Target feed olarak açtığımız feed’i seçiyoruz ve derlediğimizi paketleri bu ortama gönderiyoruz. “Allow duplicates to be skipped” burada önemli, yani değişmeyen versiyonlar release olmasın demek istiyoruz. Bu alanı işaretlemezsek eğer değişiklik yapmadığımız paketler release sürecinde patlayacaktır.

Mapper Package List

Release tamamlandığında paketleriniz “Artifact” bölümünde bu şekilde gözükecektir. Bu paketlerinize bağlanıp projenize indirmek için izlemeniz gereken yollarıda “Connect To Feed” bölümüden takip edebilirsiniz.

Yine görüşmek üzere..

Leave a Reply

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir