البرنامج التعليمي: تكوين بيئة Jenkins لتمكين CI/CD لتطبيق Java على Service Fabric

هذا البرنامج التعليمي هو الجزء الخامس من سلسلة. يوضح لك كيفية استخدام Jenkins لنشر ترقيات لتطبيقك. في هذا البرنامج التعليمي، يتم استخدام المكون الإضافي Jenkins على Service Fabric بالاشتراك مع مستودع GitHub الذي يستضيف تطبيق التصويت لنشر التطبيق في مجموعة.

في الجزء الخامس من السلسلة، ستتعلم كيفية:

  • نشر حاوية Jenkins على Service Fabric على جهازك
  • إعداد بيئة Jenkins للنشر في Service Fabric
  • ترقية تطبيقك

ستتعلم في سلسلة البرامج التعليمية هذه كيفية:

المتطلبات الأساسية

  • قم بتثبيت Git على الكمبيوتر المحلي من صفحة تنزيلات Git. لمزيد من المعلومات حول ‎Git، راجع وثائق Git.
  • لديهم معرفة عملية بـ Jenkins.
  • إنشاء حساب GitHub ومعرفة كيفية استخدام GitHub.
  • تثبيت Dockerعلى جهازك.

سحب ونشر صورة حاوية Jenkins على Service Fabric

يمكنك إعداد Jenkins إما داخل أو خارج مجموعة Service Fabric. توضح الإرشادات التالية كيفية إعداده خارج مجموعة باستخدام صورة Docker المقدمة. ومع ذلك، يمكن أيضًا استخدام بيئة بناء Jenkins مسبقة التكوين. تأتي صورة الحاوية التالية مثبتة مع المكون الإضافي Service Fabric وجاهزة للاستخدام مع Service Fabric على الفور.

ملاحظة

يسحب المثال التالي صورة حاوية عامة من Docker Hub. نوصي بالمصادقة باستخدام حساب Docker Hub (docker login) أولًا بدلًا من إجراء طلب سحب مجهول. لتحسين الموثوقية عند استخدام المحتوى العام، قم باستيراد الصورة وإدارتها في سجل حاويات Azure خاص. تعرف على المزيد عن العمل مع الصور العامة.

  1. سحب ونشر صورة حاوية Jenkins على : docker pull rapatchi/jenkins:v10Service Fabric. تأتي هذه الصورة مع البرنامج المساعد Jenkins على Service Fabric المثبت مسبقًا.

  2. قم بتشغيل صورة الحاوية مع الموقع حيث يتم تخزين شهادات Azure الخاصة بك على جهازك المحلي المثبت.

    docker run -itd -p 8080:8080 -v /service-fabric-java-quickstart/AzureCluster rapatchi/jenkins:v10
    
  3. احصل على معرف مثيل صورة الحاوية. يمكنك سرد كافة حاويات Docker مع الأمر docker ps –a

  4. استرداد كلمة المرور الخاصة بمثيل Jenkins بواسطة تشغيل الأمر التالي:

    docker exec [first-four-digits-of-container-ID] cat /var/jenkins_home/secrets/initialAdminPassword
    

    إذا كان معرف الحاوية 2d24a73b5964، فاستخدم 2d24.

    • تعتبر كلمة المرور هذه مطلوبة لتسجيل الدخول إلى لوحة معلومات Jenkins من المدخل، وهي http://<HOST-IP>:8080
    • بعد تسجيل الدخول للمرة الأولى، يمكنك إنشاء حساب مستخدم لك أو استخدام حساب المسؤول.
  5. إعداد GitHub للعمل مع Jenkins باستخدام الخطوات المذكورة في إنشاء مفتاح SSH جديد وإضافته إلى عامل SSH. نظرًا إلى أن الأوامر يتم تشغيلها من حاوية Docker، فاتبع الإرشادات الخاصة ببيئة Linux.

    • استخدم الإرشادات المقدمة من GitHub لإنشاء مفتاح SSH. بعد ذلك، أضف مفتاح SSH إلى حساب GitHub الذي يستضيف المستودع.

    • قم بتشغيل الأوامر المذكورة في الرابط السابق في غلاف Jenkins Docker (وليس على مضيفك).

    • لتسجيل الدخول إلى Jenkins shell من مضيفك، استخدم الأوامر التالية:

      docker exec -t -i [first-four-digits-of-container-ID] /bin/bash
      

      تأكد من أن المجموعة أو الجهاز الذي يتم استضافة صورة حاوية Jenkins به عنوان IP عام. إن وجود عنوان IP للوجه العام يمكّن مثيل Jenkins من تلقي إشعارات من GitHub.

قم بإنشاء وتكوين وظيفة Jenkins

  1. أولاً، إذا لم يكن لديك مستودع يمكنك استخدامه لاستضافة مشروع التصويت على GitHub، فقم بإنشاء واحد. ويُسمى مستودع dev_test لبقية هذا البرنامج التعليمي.

  2. إنشاء عنصر جديد على لوحة معلومات Jenkins في http://<HOST-IP>:8080.

  3. أدخل اسم عنصر (على سبيل المثال، وظيفتي). حدد مشروع حر النمط، وانقر فوق موافق.

  4. انتقل إلى صفحة المهمة، وانقر فوق تكوين.

    أ. في المقطع عام، حدد خانة الاختيار لمشروع GitHub، وحدد عنوان URL لمشروع GitHub. يستضيف عنوان URL هذا تطبيق Java على Service Fabric الذي تريد دمجه مع تكامل Jenkins المستمر، وتدفق النشر المستمر (CI/CD) (على سبيل المثال، https://github.com/testaccount/dev_test).

    ب. ضمن قسم إدارة التعليمات البرمجية للمصدر، حدد Git. حدد عنوان URL للمستودع الذي يستضيف تطبيق Java على Service Fabric الذي تريد تكامله مع تدفق Jenkins CI/CD (على سبيل المثال، https://github.com/testaccount/dev_test.git ). أيضًا، يمكنك تحديد الفرع المراد إنشاؤه هنا (على سبيل المثال، / رئيسي).

  5. تكوين GitHub الخاص بك (الذي يستضيف مستودع) بحيث تكون قادرة على التحدث إلى Jenkins. استخدم الخطوات التالية:

    أ. انتقل إلى صفحة مستودع GitHub. انتقل إلى الإعدادات>التكامل والخدمات.

    ب. حدد إضافة خدمة، اكتب Jenkins، وحدد المكون الإضافي لـ Jenkins-GitHub.

    ج. أدخل عنوان URL الخاص بك على إخطارات ويب Jenkins (افتراضيًا، ينبغي أن يكون http://<PublicIPorFQDN>:8081/github-webhook/ ). انقر فوق إضافة/تحديث الخدمة.

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

    تكوين Jenkins على Service Fabric

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

  7. ضمن قسم البناء، من القائمة المنسدلة إضافة خطوة بناء، حدد الخيار استدعاء نص Gradle. في الأداة التي تفتح القائمة المتقدمة، حدد المسار إلى نص بناء الجذر للتطبيق الخاص بك. يلتقط build.gradle من المسار المحدد ويعمل وفقًا لذلك.

    إجراءات إنشاء Jenkins على Service Fabric

  8. من القائمة المنسدلة إجراءات ما بعد الإنشاء، حدد نشر مشروع Service Fabric. هنا تحتاج إلى تقديم تفاصيل عن المجموعة حيث سيتم نشر تطبيق Jenkins المحول على Service Fabric. المسار إلى الشهادة هو المكان الذي تم فيه تركيب وحدة التخزين (/tmp/myCerts).

    يمكنك أيضًا تقديم تفاصيل إضافية تُستخدم لنشر التطبيق. انظر لقطة الشاشة التالية للحصول على مثال لتفاصيل التطبيق:

    مربع حوار إجراءات ما بعد الإنشاء مع خيارات نشر إضافية لمشروع Service Fabric

    ملاحظة

    يمكن أن تكون المجموعة هنا هي نفسها التي تستضيف تطبيق حاوية Jenkins، في حال كنت تستخدم Service Fabric لنشر صورة حاوية Jenkins.

  9. انقر فوق Save.

تحديث تطبيقك الحالي

  1. قم بتحديث عنوان HTML في ملف VotingApplication/VotingWebPkg/Code/wwwroot/index.html باستخدام نموذج التصويت على Service Fabric V2.

    <div ng-app="VotingApp" ng-controller="VotingAppController" ng-init="refresh()">
        <div class="container-fluid">
            <div class="row">
                <div class="col-xs-8 col-xs-offset-2 text-center">
                    <h2>Service Fabric Voting Sample V2</h2>
                </div>
            </div>
        </div>
    </div>
    
  2. تحديث إصدار نوع التطبيق و إصدار بيان الخدمة إلى 2.0.0 في الملف Voting/VotingApplication/ApplicationManifest.xml.

    <?xml version="1.0" encoding="utf-8" standalone="no"?>
    <ApplicationManifest xmlns="http://schemas.microsoft.com/2011/01/fabric" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" ApplicationTypeName="VotingApplicationType" ApplicationTypeVersion="2.0.0">
      <Description>Voting Application</Description>
      <ServiceManifestImport>
        <ServiceManifestRef ServiceManifestName="VotingWebPkg" ServiceManifestVersion="2.0.0"/>
      </ServiceManifestImport>
      <ServiceManifestImport>
            <ServiceManifestRef ServiceManifestName="VotingDataServicePkg" ServiceManifestVersion="1.0.0"/>
        </ServiceManifestImport>
        <DefaultServices>
          <Service Name="VotingWeb">
             <StatelessService InstanceCount="1" ServiceTypeName="VotingWebType">
                <SingletonPartition/>
             </StatelessService>
          </Service>
       <Service Name="VotingDataService">
                <StatefulService MinReplicaSetSize="3" ServiceTypeName="VotingDataServiceType" TargetReplicaSetSize="3">
                    <UniformInt64Partition HighKey="9223372036854775807" LowKey="-9223372036854775808" PartitionCount="1"/>
                </StatefulService>
            </Service>
        </DefaultServices>
    </ApplicationManifest>
    
  3. تحديث حقل الإصدار في بيان الخدمة وحقل الإصدار في علامة حزمة التعليمات البرمجية في ملف Voting/VotingApplication/VotingWebPkg/ServiceManifest.xml إلى 2.0.0.

    <CodePackage Name="Code" Version="2.0.0">
    <EntryPoint>
        <ExeHost>
        <Program>entryPoint.sh</Program>
        </ExeHost>
    </EntryPoint>
    </CodePackage>
    
  4. لتهيئة مهمة Jenkins التي تقوم بترقية التطبيق، ادفع التغييرات الجديدة إلى مستودع GitHub الخاص بك.

  5. في متصفح Service Fabric، انقر فوق القائمة المنسدلة التطبيقات. للاطلاع على حالة الترقية، انقر على علامة التبويب ترقيات قيد التقدم.

    الترقية قيد التقدم

  6. عند الوصول إلى http://<Host-IP>:8080يكون تطبيق Voting جاهز للعمل بكل طاقته.

    تطبيق التصويت المحلي

الخطوات التالية

في هذا البرنامج التعليمي، تعلمت كيفية:

  • نشر حاوية Jenkins على Service Fabric على جهازك
  • إعداد بيئة Jenkins للنشر في Service Fabric
  • ترقية تطبيقك