چطور انتشار یک پکیج nuget را اتوماتیک کنیم؟

نیوگت در واقع پکیج منیجر برای دات‌نت است. چطوری پکیج‌های نیوگت خودمون (چه عمومی و چه خصوصی) رو به صورت اتوماتیک منتشر کنیم؟

nuget (با تلفظ نیوگت) در واقع package manager برای .NET است. در این پست درباره انتشار اتوماتیک کتابخانه‌های اپن‌سورس در قالب پکیج nuget با کمک سرویس AppVeyor صحبت می‌کنیم.

گام اول: دریافت کلید API

برای انتشار اتوماتیک پکیج‌ها در سایت nuget ابتدا باید یک کلید API دریافت کنید. برای این کار بعد از ثبت‌نام و ورود به بخش API Keys بروید و یک کلید ایجاد کنید. توجه کنید که مقدار کلید را پس از ایجاد حتماً کپی کنید چون دوباره به شما نمایش داده نمی‌شود و اگر آن را در اختیار نداشته باشید مجبورید یا یک کلید تازه بسازید یا کلید موجود را regenerate کنید.

کلید ایجاد شده از این بخش را در سرویس‌های build اتوماتیک می‌توانید استفاده کنید

گام دوم: تنظیم build اتوماتیک

سرویس AppVeyor خدمات build رایگان برای پروژه‌های اپن‌سورس دارد. بعد از ثبت‌نام و ورود، ابتدا AppVeyor را به مخزن کدتان متصل کنید. با این کار در واقع هر وقت push جدیدی بر روی مخزن انجام بدهید، پروسه build اتوماتیک و انتشار پکیج شروع به کار می‌کند و نسخه جدید را به صورت اتوماتیک build و در سایت nuget.org منتشر می‌کند.

برای build و انتشار اتوماتیک ۲ تنظیم را باید انجام دهید.

اول. از بخش build گزینه Pacakge Nuget projects را علامت بزنید. همچنین در صورتی که پروژه شما خودش از پکیج‌های nuget دیگری تشکیل شده پیش از build، دستور nuget restore را مطابق تصویر زیر اضافه کنید.

تنظیمات بخش build

نکته. در ساختار جدید فایل‌های .csproj امکان مشخص کردن اطلاعات پکیج مثل نام و نام ایجاد کننده و تصویر آیکن و آدرس مخزن و لایسنس پکیج وجود دارد اما اگر از ساختار قدیمی‌تر استفاده می‌کنید، باید فایل nuspec به پروژه اضافه کنید.

دوم. در بخش deploy گزینه nuget را انتخاب کنید و سپس API Key که در گام اول دریافت کردید را در این قسمت وارد کنید.

تنظیمات بخش deploy

بعد از اعمال ۲ تنظیم بالا، از منو، گزینه Export YAML را انتخاب و فایل appveyor.yml را دانلود و به root پروژه خودتان اضافه کنید.

تمام شد! از این بعد هر بار push جدیدی داشته باشید، نسخه جدید روی nuget.org منتشر خواهد شد.

نکات تکمیلی

حتماً  به این نکته توجه کنید که نسخه پکیج را در هر push تغییر دهید، چون امکان انتشار چندباره یک پکیج با یک نسخه خاص نیست. در نسخه‌بندی هم می‌توانید از نسخه بندی معنایی استفاده کنید.

در این پست درباره سرویس رایگان AppVeyor صحبت کردیم. این سرویس برای پروژه‌های اپن سورس رایگان است. اگر به دنبال build اتوماتیک برای مخزن private کد خود هستید و یا نمی‌خواهید پکیج شما به صورت عمومی در nuget.org در دسترس باشد، می‌توانید از امکانات Azure DevOps استفاده کنید که بخش تنظیم build و انتشار خودکار آن متفاوت است. البته AppVeyor هم به شما اجازه انتشار در nuget server اختصاصی خودتان را می‌دهد اما همچنان استفاده از build رایگان فقط برای پروژه‌های اپن‌سورس در دسترس است.