Private NuGet Repository Oluşturmak
Nuget Paketlerimizi Nasıl Private Ortamda Tutup Kullanabiliriz ?
Giriş
Selamlar 👋
Bu makalede NuGet paketlerimizi private olarak nasıl yayınlayıp kullanabiliriz bundan bahsedeceğim. Asıl konumuza geçmeden NuGet nedir kısaca bahsetmek istiyorum.
NuGet, .NET ekosistemini paket yöneticisidir. C# ile geliştirilmiş uygulamalar yada kütüphaneler NuGet ile paket haline getirilip çeşitli repositoryler ile yayınlanabilir ve bu repositoryler arasında en çok kullanılan ve resmi platform nuget.org dur.
NuGet paketleri nuget.org üzerinde herkese açık bir şekilde tutulur. Örnek olarak .NET projelerinde kullandığımız Entity Framework’ü kullanmak için Nuget Package Manager aracılığı ile nuget.org üzerinden paketi projemize yükleyerek kullanabilmekteyiz.
Peki herhangi bir NuGet paketini herkese açık bir şekilde değilde private şekilde yayınlamak istersek ne yapmamız gerekir?
NuGet Paketlerini Private Repositoryde Nasıl Tutarız ?
NuGet paketlerini herkese açık bir şekilde yayınlamak yerine sadece belirli bir kitleye ya da kullanıcı grubu için yayınlamak isteyebiliriz.
Bu noktada paketleri nuget.org dışında başka bir kaynakta tutmamız gerekir.
Artifactory Azure Artifacts BaGet Cloudsmith Gitea Package Registry GitHub package registry GitLab Package Registry Yukarıda ki NuGet paketlerini public yada private olarak tutmayı sağlayan bazı servisleri görmektesiniz.
Makalemizde bu servisler arasından GitLab’i kullanacağız. Gitlab üzerinde NuGet paketleri Package Registry adında bir servis aracılığıyla yayınlanır. Yayınlanan NuGet paketlerini tüketmek için bazı yapılandırmalar yapmak gerekir.
Makalenin bu kısımına kadar olan kısmında gerekli olan bilgileri aktardıktan sonra örnek bir senaryo üzerinden NuGet paketlerimizi GitLab üzerinden yayınlamaya geçebiliriz.
NuGet Paketi Nasıl Oluşturulur?
İlk olarak yayınlayacağımız NuGet paketi için örnek bir C# class library projesi oluşturalım.
Oluşturduğumuz projede StringExtension adında bir static class içerisinde bazı custom string metodlarımız bulunuyor. Buradaki metodlarımızı başka bir projede kullanmak için projeyi NuGet paketi haline getirip kullanabiliriz. Bunun öncesinde projeyi NuGet paketi haline getirelim.
NuGet paketi oluşturmak için ilgili projeye sağ tıklayıp Pack seçeneğini seçebiliriz. Bunun yanında NuGet paketini terminalde dotnet CLI, Nuget CLI gibi CLI araçlarını kullanarakta oluşturabiliriz. Bu makalede dotnet CLI aracını kullanarak NuGet paketini oluşturacağız.
-
NuGet paketini oluşturmak için terminalde aşağıda ki komutu çalıştıralım.
1
dotnet pack -o ./NuGet
Komutu çalıştırdıktan sonra proje içerisindeki NuGet klasörüne göz atarak paketin oluşturulduğunu teyit edelim.
Örnek olarak C# class library projesi oluşturup devamında projenin NuGet paketini oluşturduk. Sonraki aşamada bu paketi GitLab Package Registry’e publish edelim.
NuGet Paketi Gitlab Package Registry’e Nasıl Publish Edilir?
Nuget paketini oluşturduktan sonra bu paketi Gitlab’e publish etmeden önce ilgili Repositorye ait Package Source’u Nuget CLI ile sistemimize eklememiz gerekiyor.
Bunun için aşağıdaki adımları uygulayalım.
- GitLab’de projenin repositorysinde Settings altında Repository seçeneğini seçelim.
İlgili alanları doldurduktan sonra Deploy Token’ını kullanabiliriz.
- Adımda oluşturduğumuz Deploy Token’ını kullanarak dotnet CLI ile NuGet source’unu sistemimize ekleyelim. Oluşturacağımız bu source’u NuGet paketlerini tüketmek ve yayınlamak için kullanacağız.
|
|
|
|
İlgili komutu çalıştırdıktan sonra yukarıdaki terminal çıktısında source’u sistemimize başarıyla eklemiş olduk.
Sonra ki adımda .nupkg uzantılı paketimizi ilgili source’a publish edelim. Bunun için aşağıdaki komutu kullanabiliriz.
|
|
|
|
Oluşturmuş olduğumuz NuGet paketinin başarılı bir şekilde publish edildiğini anlamak için GitLab üzerinden Package Registry servisini açalım. Burada publish ettiğimiz NuGet paketlerini listeleyebilir ve ayrıntılı bilgilerine ulaşabiliriz.
Bu aşamaya kadar olan kısımda NuGet paketinin oluşturulmasını ve GitLab’e publish etmesini açıklamaya çalıştım. Bundan sonraki başlıkta ise publish ettiğimiz NuGet paketini başka bir projede nasıl kullanabiliriz bundan bahsedeceğim.
Geliştirme Ortamına Private NuGet Sunucusu Nasıl Bağlanır?
Herhangi bir proje üzerinde çalıştığımızı ve oluşturmuş olduğumuz NuGet paketine ihtiyaç duyduğumuzu farzedelim. İlgili NuGet paketini kullanmak istediğimizde bunu ilgili private NuGet repositoryden ulaşmak için ilk olarak o repositorynin source’unu sistemimize eklememiz gerektiğinden bahsetmiştim. Eğer source sisteminize ekli değilse ilgili komut ile sisteminize eklemeniz gerekmektedir.
NuGet paketini projemize dahil etmek için NuGet Package Manager’ı açalım.
İlgili NuGet paketinin adını yazdığımızda private repository’de bulunan NuGet paketine ulaşmış olduk. NuGet paketini projemize ekledikten sonra paketimizin içerisinde ki StringExtension class’ı altındaki metodları aşağıda göründüğü gibi kullanabiliriz.
Kapanış
Bu makalenin de sonuna gelmiş bulunmaktayız. Siz de NuGet paketleriniz private bir ortamda tutmayı düşünüyorsanız GitLab gibi kaynakları kullanarak yapabilirsiniz. Faydalı olması dileğiyle…