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 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.

İlk olarak yayınlayacağımız NuGet paketi için örnek bir C# class library projesi oluşturalım.

/blog/private-nuget-repository-olusturmak/private-nuget-repository-olusturmak-oguz-can-genc-1.webp
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.

“dsa”

Ö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 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.

  1. GitLab’de projenin repositorysinde Settings altında Repository seçeneğini seçelim.
    “dsa”
    “dsa”
    “dsa”

İlgili alanları doldurduktan sonra Deploy Token’ını kullanabiliriz.

  1. 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.
    “dsa”
1
2
3
4
5
dotnet nuget
add source "https://gitlab.com/api/v4/projects/<project_id>/packages/nuget/index.json" `
--name <source_name> 
--username <GitLab Username & Deploy Token Name> 
--password <Personel Token & Deploy Token>
1
2
3
4
<your_project_id> --> Project Id 
<source_name> --> Source adı örneğin MyGitlabSource
<GitLab Username & Deploy Token Name> --> Gitlab Kullanıcı Adınız yada Deploy Id
<Personel Token & Deploy Token> --> Personel Access Tokenınız yada Deploy Tokenınız

&ldquo;dsa&rdquo;
İ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.

1
dotnet nuget push <package_file> --source <source_name>
1
2
package_file --> Paketinizin tam ismi örneğin MyPackage.1.0.0.nupkg
source_name --> Publish edilecek source -> MyGitlabSource

&ldquo;dsa&rdquo;

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.

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.

&ldquo;dsa&rdquo;

İ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.

&ldquo;dsa&rdquo;

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…