Github’taki Bir Projenin Github Packages ve Nuget’de Yayınlanması

Engincan Veske
SDTR
Published in
4 min readMay 29, 2021

Herkese Merhaba,

Bu yazımda oluşturmuş olduğumuz bir paketin (veya modülün) hem Github üzerinde hemde Nuget üzerinde nasıl yayınlayabileceğimizden (publish edebileceğimizden) bahsedeceğim.

Bir modül yazdığımızı varsayalım ve bu modülün sadece kendi organizasyonumuz içinde kullanılması gibi bir ihtiyacımız olduğunu düşünelim. Bu gibi bir durumda, oluşturmuş olduğumuz modülü Github Packages sisteminde yayınlayarak sadece ilgili access_token’a sahip kişiler tarafından kullanılmasını (veya yönetilmesini) garanti altına alabiliriz. Veya oluşturmuş olduğumuz paketin herkes tarafından kullanılmasını istiyorsak yine Github üzerinden veya Nuget üzerinden ilgili paketi yayınlayarak bunu sağlayabiliriz.

Öyleyse ilk senaryo ile yani Github üzerinde private bir NuGet paketi yayınlama ile işe koyulalım.

İlgili Paketin Github Packages’a Publish Edilmesi (Yayınlanması)

Geçen hafta SeoHelper adında private bir repo oluşturarak, Asp.NET Core uygulamalarında kullanılabilecek basit bir SEO paketi geliştirmiştim.

Basit bir şekilde ilgili tanımlamalara göre, uygulamalar için ilgili meta-tagları (open-graph ve twitter card tagları dahil) <head>...</head> tagları arasına ekleyen, ilgili tanımlamalara göre sitemap.xml ve robots.txt dosyalarını oluşturabildiğiniz basit bir paket.

İlgili geliştirmeden sonra ise testleri gerçekleştirmek için, yeni bir proje oluşturdum (razor-page projesi) ve daha sonra oluşturmuş olduğum projeye local referans vererek geliştirmiş olduğum paketin testlerini gerçekleştirdim. Bu işlemleri gerçekleştirirken, acaba ilgili paketi Github üzerinde private olarak tanımlayarak kullanabilir miyim sorusunu kendime sordum ve bu konu hakkında araştırma yapmaya başladım.

Okumuş olduğum birkaç makale sonrasında, gerçekleştirmem gereken adımları belirleyerek ilgili NuGet paketini Github üzerinden private olarak yayınlayabildim. (Ayrıca daha sonra ilgili repository’i public hale getirince, basit bir şekilde NuGet üzerinden ilgili paketi public halde yayınlayabildim.)

1 - İşe ilk olarak ilgili paketin tanımlamalarını yaparak başladım. Bunun için SeoHelper.csproj dosyasında bir <PropertyGroup> tanımlayarak ilgili paket bilgilerini aşağıdaki gibi tanımladım.

SeoHelper.csproj

2 - Daha sonra ise terminal üzerinden (SeoHelper.csproj dosyasının olduğu dizinde), dotnet pack --configuration Release komutunu çalıştırdım. Bu sayede proje build edilmiş ve NuGet paketi (.nupkg uzantılı) oluşturulmuş oldu.

bin/Release klasörüne gittiğimizide, SeoHelper.1.0.0.nupkg isminde bir dosyanın oluşmuş olduğunu görebiliriz. (Daha sonra bu dosyayı ilgili paketi public olarak NuGet üzerinde paylaşmak için kullanacağız.)

bin/Release klasörü

Yaratılan ilgili .nupkg uzantılı NuGet paketini, Github üzerinde yayınlamak için yapmamız gereken 2 adım kaldı. İlk olarak nuget.config dosyası oluşturmak, daha sonra ise Github üzerinden PAT (yani Personal Access Token) oluşturarak ilgili komutta yerine yazarak çalıştırmak.

3 - nuget.config dosyasını oluşturalım ve aşağıdaki gibi güncelleyelim.

nuget.config

Burada <github>…</github> tagleri arasına Github kullanıcı adımızı ve oluşturmuş olduğumuz Personal Access Token’ı girmemiz gerekiyor. (Username ve ClearTextPassword alanlarına)

4 - Daha sonra ise yapmamız gereken tek şey terminalde aşağıdaki komutu çalıştırmak.

dotnet nuget push “bin/Release/SeoHelper.1.0.0.nupkg” — -api-key YOUR_GITHUB_PAT --source “github”

Burada YOUR_GITHUB_PAT yerine Github üzerinden oluşturmuş olduğumuz Personal Access Token i yazarak komutu çalıştırmamız gerekiyor. Bu komutu inceleyecek olursak source olarak github’ı belirttiğimizi görebiliriz. nuget.config dosyasında tanımlamış olduğumuz Github bilgilerimiz (kullanıcı adı ve PAT) üzerinden ilgili işlemler bu sayede otomatik olarak sağlanıyor.

Bu işlemlerden sonra aşağıdakine benzer bir çıktı elde etmemiz gerekiyor.

Eğer repo’muzu açar ve Packages bölümüne bakacak olursak, ilgili paketi görebiliyor olmamız gerekiyor.

Paketin NuGet’te Yayınlanması (Publish Edilmesi)

İlgili paketin olgunlaşması ve herkesin kullanımına sunulması gibi bir durum ortaya çıktığında bunu kolay bir şekilde gerçekleştirebiliriz. Bunun için daha önce dotnet pack --configuration Release komutunu çalıştırarak bin/Release klasörü altında oluşturmuş olduğumuz SeoHelper.1.0.0.nupkg dosyasını, NuGet üzerinden upload etmemiz yeterli.

Bunun için NuGet adresine gitmemiz, giriş yapmamız ve “Upload Package” linkine tıklamamız gerekiyor.

NuGet — Upload Package

İlgili linke tıkladıktan sonra aşağıdakine benzer bir upload formu karşımıza çıkıyor. Burada SeoHelper.1.0.0.nupkg paketimizi form alanına yüklememiz ve ilgili paket tanımlamalarını (package descriptions) yapmamız gerekiyor.

NuGet — Package Upload Form

Burada paketi yükleme işleminden sonra, paketimiz doğrulanmak üzere beklemeye alınıyor ve ilgili doğrulama işlemi tamamlandıktan sonra ise artık ilgili paket NuGet üzerinden, herkesin kullanımına hazır hale geliyor.

NuGet — SeoHelper paketi

Yararlanılan Kaynaklar

--

--