تمرين - دفع تغيير إلى الحزمة الخاصة بك

مكتمل

عند هذه النقطة، لديك مساران. أحدهما ينشر حزمة النماذج إلى Azure Artifacts، والآخر لتطبيق ويب Space Game . يشير تكوين البنية لتطبيق الويب إلى حزمة Models بحيث يمكنها الوصول إلى فئات النموذج.

هنا، ستتدرب على تحديث حزمة النماذج واستهلاك هذا التغيير من تطبيق الويب.

للقيام بذلك، ستبدأ بإضافة خاصية إلى إحدى فئات النموذج ثم رفع إصدار الحزمة. بعد ذلك، سترسل التغيير إلى GitHub بحيث يمكن للبنية الأساسية لبرنامج ربط العمليات التجارية إنشاء الحزمة ونشرها إلى Azure Artifacts.

ستقوم بعد ذلك بتحديث تطبيق الويب للإشارة إلى رقم الإصدار الأحدث من حزمة Models بحيث يمكنه استخدام الخاصية المضافة.

إنشاء فرع

لنبدأ بإنشاء فرع للاحتفاظ بعملنا. إنشاء فرع باسم add-game-style، والذي يستند إلى main الفرع.

عند هذه النقطة، لديك نسختان مفتوحتان من Visual Studio Code، واحدة لمشروع Tailspin.SpaceGame.Web.Models والأخرى لمشروع تطبيق ويب Space Game، Tailspin.SpaceGame.Web. هنا، ستعمل من نسخة مشروع Tailspin.SpaceGame.Web.Models .

  1. افتح terminal من Visual Studio Code.

  2. من المحطة الطرفية، لإنشاء فرع باسم add-game-style، قم بتشغيل الأمر التالي git checkout .

    git checkout -B add-game-style
    

إضافة خاصية إلى حزمة Models

أضف خاصية تسمى Scoreإلى إحدى فئات النموذج، والتي توفر نمط اللعبة (أو الصعوبة) التي ترتبط بها النتيجة.

هنا، ستعمل من نسخة Visual Studio Code لمشروع Tailspin.SpaceGame.Web.Models .

  1. من Visual Studio Code، افتح Tailspin.SpaceGame.Web.Models/Models/Score.cs. أضف الخاصية المميزة التالية إلى قائمة الخصائص الموجودة بالفعل.

    using System.Text.Json.Serialization;
    
    namespace TailSpin.SpaceGame.Web.Models
    {
        public class Score : Model
        {
            // The ID of the player profile associated with this score.
            [JsonPropertyName("profileId")]
            public string ProfileId { get; set; }
    
            // The score value.
            [JsonPropertyName("score")]
            public int HighScore { get; set; }
    
            // The game mode the score is associated with.
            [JsonPropertyName("gameMode")]
            public string GameMode { get; set; }
    
            // The game region (map) the score is associated with.
            [JsonPropertyName("gameRegion")]
            public string GameRegion { get; set; }
    
            // The game style (difficulty) the score is associated with.
            [JsonPropertyName("gameStyle")]
            public string GameStyle { get; set; }
        }
    }
    

    إشعار

    تقوم بإجراء تغيير على ملف في المشروع لتوضيح مكان رفع رقم الإصدار. ومع ذلك، لن نقوم بتحديث تطبيق الويب لاستخدام الخاصية الجديدة.

  2. احفظ الملف.

  3. للتحقق من عملك، قم بإنشاء المشروع:

    dotnet build --configuration Release
    

    في الممارسة العملية، قد تقوم بتنفيذ خطوات تحقق إضافية، مثل تشغيل الاختبارات أو اختبار الحزمة الجديدة باستخدام تطبيق يستخدمها.

إنشاء الحزمة ونشرها

الآن بعد أن أضفت الخاصية الجديدة إلى Score الفئة وتحققت من بناء المشروع بنجاح، يمكنك تحديث إصدار الحزمة. يمكنك بعد ذلك دفع التغيير إلى GitHub بحيث يمكن ل Azure Pipelines إنشاء الحزمة المحدثة ونشرها.

  1. افتح azure-pipelines.yml، وغير minorVersion من 0 إلى 1، واحفظ الملف.

    minorVersion: '1'
    

    هنا، قمنا برفع الإصدار من 1.0.0 إلى 1.1.0 لتوضيح التغيير. في الممارسة العملية، ستتبع نظام تعيين الإصدار لنوع الحزمة التي تعمل معها.

    على سبيل المثال، وفقاً لتعيين الإصدار الدلالي، دفع الإصدار الرئيسي إلى 1 (1.1.0) يخبر الآخرين أن الحزمة متوافقة مع الإصدارات السابقة مع التطبيقات التي تستخدم الإصدار1.0.0 من تلك الحزمة. قد يقوم أولئك الذين يستخدمون الحزمة بعد ذلك بتعديل تطبيقهم للاستفادة من الميزات الجديدة.

    توفر المشاريع الشائعة مفتوحة المصدر وثائق في شكل سجل تغيير يشرح التغييرات التي تم إجراؤها في كل إصدار وكيفية الترحيل من إصدار رئيسي إلى آخر.

  2. تنظيم التغييرات وتثبيتها ودفعها:

    git add .
    git commit -m "Add GameStyle property"
    git push origin add-game-style
    
  3. من Microsoft Azure Pipelines، انتقل إلى مشروع Tailspin.SpaceGame.Web.Models ، وشاهد تشغيل البناء.

  4. افتح علامة التبويب Artifacts ولاحظ الإصدار الجديد. لا تقلق; الإصدار القديم الخاص بك لا يزال موجودا لأي مشاريع لا تزال تشير إليه.

    A screenshot of the package in Azure Artifacts, showing version 1.1 of the package.

  5. كما فعلت سابقا، اكتب الإصدار الجديد للوحدة التالية.

الرجوع إلى الإصدار الجديد من حزمة Models

الآن، قم بتغيير مشروع Tailspin.SpaceGame.Web لاستخدام الإصدار الجديد من حزمة Tailspin.SpaceGame.Web.Models .

هنا، ستعمل من نسخة Visual Studio Code لمشروع تطبيق ويب Space Game ، Tailspin.SpaceGame.Web.

  1. من تعليمة Visual Studio البرمجية، افتح Tailspin.SpaceGame.Web.csproj، وقم بتغيير PackageReference إلى رقم الإصدار من حزمة Tailspin.SpaceGame.Web.Models التي أنشأتها في Azure Artifacts. ثم حفظ الملف.

    إليك مثال:

    <PackageReference Include="Tailspin.SpaceGame.Web.Models" Version="1.1.0-CI-20210528-202436" />
    

    إذا طلب منك Visual Studio Code استعادة الحزم، يمكنك تجاهل هذه الرسالة بأمان. للإيجاز، لن ننشئ تطبيق الويب محليا.

  2. من المحطة الطرفية، قم بالمرحلة، والتثبيت، وادفع التغييرات.

    git add .
    git commit -m "Bump Models package to 1.1.0"
    git push origin models-package
    
  3. من Azure Pipelines، انتقل إلى مشروع mslearn-tailspin-spacegame-web واطلع على تشغيل الإصدار.

    ترى من إخراج البنية أنه يحصل على أحدث تبعية، وينشئ التطبيق، وينشر البيانات الاصطناعية لتطبيق الويب.