اگر از Azure DevOps برای ساخت و استقرار برنامه های اصلی دات نت خود استفاده می کنید، باید موارد زیر را در نظر بگیرید.
- Azure Pipelines اکنون از نوشتن هر دو مرحله ساخت و انتشار به عنوان کد پشتیبانی می کند. اکنون می توانید تعاریف خط لوله CI و CD خود را در یک تعریف خط لوله واحد ترکیب کنید که در همان مخزن کد برنامه زندگی می کند.
- ورود باینری را در MSBuild روشن کنید تا گزارشهای ساختاری جامعی را از فرآیند ساخت دریافت کنید. میتوانید این گزارشها را با استفاده از MSBuild Structured Log Viewer تجسم کنید تا فرآیند ساخت را با جزئیات بررسی کنید.
- Coverlet را اضافه کنید ، که یک چارچوب پوشش کد بین پلتفرمی برای جمعآوری دادههای پوشش کد، و تولید گزارشهای پوشش کد منظم با Report Generator است .
برای نشان دادن مفاهیمی که مورد بحث قرار گرفتیم، یک خط لوله یکپارچه CI/CD Azure ایجاد می کنیم که یک تابع Azure را برای Azure ایجاد و مستقر می کند. اجازه دهید ابتدا به طور خلاصه در مورد ابزارهایی که در بالا ذکر کردم صحبت کنیم.
MSBuild Binary Log و Viewer
برای بسیاری از ما، فرآیند MSBuild یک جعبه سیاه است که کد منبع را می جود و باینری های برنامه را بیرون می زند. برای رفع نگرانیهای مربوط به غیرشفاف بودن گزارشهای ساخت، MSBuild از نسخه 15.3 شروع به پشتیبانی از لاگ ساختاری کرد. Structured Logs یک ویژگی مکمل برای فایل و لاگرهای کنسول است که MSBuild مدتی است از آن پشتیبانی می کند. شما می توانید با تنظیم سوئیچ /bl و تعیین نام فایل log که build.binlog در دستور زیر
است ، لاگ باینری را در MSBuild فعال کنید .
$ msbuild.exe MySolution.sln /bl:build.binlog
فایل لاگ باینری که با اجرای دستور قبلی ایجاد شده است قابل خواندن توسط انسان نیست. ابزار MSBuild Structured Log Viewer به شما کمک میکند گزارشها را تجسم کنید و پیمایش در لاگها را آسان میکند.
سرپوش و گزارش مولد
Coverlet یک ابزار بین پلتفرمی است که در هسته دات نت نوشته شده است که پوشش تست های واحد را در پروژه های اصلی دات نت و دات نت می سنجد. ساده ترین راه برای استفاده از Coverlet این است که بسته Coverlet NuGet را در پروژه های آزمایشی خود قرار دهید و از MSBuild برای اجرای آزمایش ها استفاده کنید. برای انجام این دو عملیات می توانید از دستورات زیر استفاده کنید.
$ dotnet بسته coverlet.msbuild را اضافه کنید
$ dotnet test /p:CollectCoverage=true