چطور انتشار یک پکیج nuget را اتوماتیک کنیم؟
نیوگت در واقع پکیج منیجر برای داتنت است. چطوری پکیجهای نیوگت خودمون (چه عمومی و چه خصوصی) رو به صورت اتوماتیک منتشر کنیم؟
nuget (با تلفظ نیوگت) در واقع package manager برای .NET است. در این پست درباره انتشار اتوماتیک کتابخانههای اپنسورس در قالب پکیج nuget با کمک سرویس AppVeyor صحبت میکنیم.
گام اول: دریافت کلید API
برای انتشار اتوماتیک پکیجها در سایت nuget ابتدا باید یک کلید API دریافت کنید. برای این کار بعد از ثبتنام و ورود به بخش API Keys بروید و یک کلید ایجاد کنید. توجه کنید که مقدار کلید را پس از ایجاد حتماً کپی کنید چون دوباره به شما نمایش داده نمیشود و اگر آن را در اختیار نداشته باشید مجبورید یا یک کلید تازه بسازید یا کلید موجود را regenerate کنید.
گام دوم: تنظیم build اتوماتیک
سرویس AppVeyor خدمات build رایگان برای پروژههای اپنسورس دارد. بعد از ثبتنام و ورود، ابتدا AppVeyor را به مخزن کدتان متصل کنید. با این کار در واقع هر وقت push جدیدی بر روی مخزن انجام بدهید، پروسه build اتوماتیک و انتشار پکیج شروع به کار میکند و نسخه جدید را به صورت اتوماتیک build و در سایت nuget.org منتشر میکند.
برای build و انتشار اتوماتیک ۲ تنظیم را باید انجام دهید.
اول. از بخش build گزینه Pacakge Nuget projects را علامت بزنید. همچنین در صورتی که پروژه شما خودش از پکیجهای nuget دیگری تشکیل شده پیش از build، دستور nuget restore
را مطابق تصویر زیر اضافه کنید.
نکته. در ساختار جدید فایلهای .csproj
امکان مشخص کردن اطلاعات پکیج مثل نام و نام ایجاد کننده و تصویر آیکن و آدرس مخزن و لایسنس پکیج وجود دارد اما اگر از ساختار قدیمیتر استفاده میکنید، باید فایل nuspec
به پروژه اضافه کنید.
دوم. در بخش deploy گزینه nuget را انتخاب کنید و سپس API Key که در گام اول دریافت کردید را در این قسمت وارد کنید.
بعد از اعمال ۲ تنظیم بالا، از منو، گزینه Export YAML را انتخاب و فایل appveyor.yml
را دانلود و به root پروژه خودتان اضافه کنید.
تمام شد! از این بعد هر بار push جدیدی داشته باشید، نسخه جدید روی nuget.org منتشر خواهد شد.
نکات تکمیلی
حتماً به این نکته توجه کنید که نسخه پکیج را در هر push تغییر دهید، چون امکان انتشار چندباره یک پکیج با یک نسخه خاص نیست. در نسخهبندی هم میتوانید از نسخه بندی معنایی استفاده کنید.
در این پست درباره سرویس رایگان AppVeyor صحبت کردیم. این سرویس برای پروژههای اپن سورس رایگان است. اگر به دنبال build اتوماتیک برای مخزن private کد خود هستید و یا نمیخواهید پکیج شما به صورت عمومی در nuget.org در دسترس باشد، میتوانید از امکانات Azure DevOps استفاده کنید که بخش تنظیم build و انتشار خودکار آن متفاوت است. البته AppVeyor هم به شما اجازه انتشار در nuget server اختصاصی خودتان را میدهد اما همچنان استفاده از build رایگان فقط برای پروژههای اپنسورس در دسترس است.