تخطيط مسار إصدار باستخدام Azure Pipelines

مكتمل

في هذا القسم، ستتابع مع أندي ومارا أثناء تخطيطهما لمسار CD أساسي يعمل على Azure Pipelines.

عند الانتهاء من ذلك، سيعرضونها على بقية الفريق. سيكون المسار بمثابة POC الذي سيحسنونه ويوسعونه في أثناء تعلمهم المزيد والحصول على ملاحظات من تيم وأميتا.

ما هي أجزاء البنية الأساسية لبرنامج ربط العمليات التجارية للقرص المضغوط؟

يحتوي مسار CD الأساسي على مشغل لبدء العملية ومرحلة واحدة على الأقل أو مرحلة التوزيع. تتكون المرحلة من الوظائف. الوظيفة هي سلسلة من الخطوات التي تحدد كيفية إنشاء التطبيق الخاص بك أو اختباره أو توزيعه.

Diagram that shows a hand-drawn illustration of an artifact moving to a deployment environment.

أندي: لدينا بالفعل البيانات الاصطناعية لتحديث الإصدار. إنه ملف .zip الذي يقوم خط أنابيب البناء الحالي بإنشائه. ولكن كيف يمكننا توزيعها في بيئة مباشرة؟

ما هي مرحلة البنية الأساسية لبرنامج ربط العمليات التجارية؟

المرحلة هي جزء من البنية الأساسية لبرنامج ربط العمليات التجارية التي يمكن تشغيلها بشكل مستقل ويتم تشغيلها بواسطة آليات مختلفة. قد تكون الآلية هي نجاح المرحلة السابقة أو جدول زمني أو حتى مشغل يدوي. ستتعرف على المزيد حول هذه الآليات في الوحدة النمطية التالية.

مارا: يمكن أن يكون لدينا مرحلة تبني التطبيق ومرحلة أخرى تقوم بتشغيل الاختبارات.

Diagram that shows a hand-drawn illustration of a deployment pipeline that contains two stages, Build and Deploy.

مارا: لقد حددنا بالفعل المهام لمرحلة البناء في البنية الأساسية لبرنامج ربط العمليات التجارية لدينا. يمكن أن تكون مرحلة التوزيع لدينا متشابهة، بما في ذلك المهام التي تنشر البنية في بيئة.

السؤال هو، أين يجب أن ننشر البيانات الاصطناعية؟

ما هي البيئة؟

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

باتباع هذا المثال، قد تكون بيئة الإنتاج الخاصة بك:

  • جهاز فعلي أو جهاز ظاهري (VM).
  • بيئة حاوية، مثل Kubernetes.
  • خدمة مدارة، مثل Azure App Service.
  • بيئة بلا خادم، مثل Azure Functions.

يتم نشر البيانات الاصطناعية في بيئة. تسهل Azure Pipelines النشر إلى أي نوع من البيئة تقريبا، سواء كان محليا أو في السحابة.

في Azure Pipelines، مصطلح البيئة له معنى ثان. هنا، البيئة هي تمثيل مجرد لبيئة النشر الخاصة بك، مثل مجموعة Kubernetes أو مثيل App Service أو جهاز ظاهري.

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

إحدى الطرق لتعريف بيئة Azure Pipelines هي مع ملف YAML. يتضمن ملف YAML قسم environment، يحدد بيئة Azure Pipelines حيث ستقوم بتوزيع منتجك الفعلي.

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

أندي: على مستوى عال، ما نوع البيئة التي نريدها؟ هل نريد النشر محليا أم على السحابة؟

مارا: يمكننا أن نطلب من تيم إنشاء جهاز ظاهري لنا في المختبر، ولكنه ينفد دائما من الأجهزة. سيكون إعداد POC بأنفسنا سريعا وسهلا إذا استخدمنا السحابة.

أندي: أوافق؛ ولكن هناك العديد من خيارات السحابة التي يجب مراعاتها، ويمكننا استخدام Azure Pipelines للنشر في أي منها. ما الذي يجب أن نحاول؟

مارا: تستخدم الفرق التي تطور ألعابنا Azure لاستضافة بعض أنظمتها الخلفية. لقد قاموا بإعداده بسرعة ويبدو أنهم يحبونه. أعتقد أنه يجب علينا الالتزام ب Azure للسحابة الخاصة بنا.

أندي: حسنا، هذا منطقي! ولكن يوفر Azure العديد من خيارات الحوسبة. ما الذي يجب أن نختاره؟

يسرد أندي هذه الخيارات على لوح المعلومات:

  • الأجهزة الظاهرية
  • الحاويات
  • Azure App Service
  • الحوسبة بدون خادم

إشعار

ستجد المزيد من المعلومات حول كل خيار من خيارات الحوسبة هذه في نهاية هذه الوحدة النمطية.

مارا: أعرف أن الحاويات والحوسبة بلا خادم شائعة الآن. مقارنة بالأجهزة الظاهرية، كلاهما خفيف الوزن من حيث الموارد. كما أنه من السهل استبدالها وتوسيع نطاقها. كلاهما مثير للاهتمام، لكنني متوتر بشأن تعلم اثنين من التقنيات الجديدة في نفس الوقت. أفضل التركيز فقط على بناء البنية الأساسية لبرنامج ربط العمليات التجارية.

أندي: أنا معك. هذا يترك الأجهزة الظاهرية أو App Service. أعتقد أن الأجهزة الظاهرية ستكون خيارا أفضل إذا كنا ننقل تطبيق خط العمل - أحد التطبيقات التي تتطلب وصولا كاملا إلى بيئة معينة - إلى السحابة. نحن لا نفعل أي شيء بهذه الأهمية.

مارا: هذا يترك App Service، والذي سيكون خياري. تم تصميمه للعمل مع Azure DevOps، ويأتي مع مزايا. إنها بيئة النظام الأساسي كخدمة (PaaS) لتطبيقات الويب، لذلك ستزيل الكثير من العبء عنا. لن نقلق بشأن البنية الأساسية. كما أنه يأتي مع ميزات الأمان ويتيح لنا إجراء موازنة التحميل والتحجيم التلقائي.

أندي: تبدو App Service كما نحتاج. لنستخدم App Service. نحن ننشئ إثباتا للمفهوم على أي حال. يمكننا دائما تغيير خيار الحساب إذا أردنا تجربة شيء آخر لاحقا.

كيف تنفذ Azure Pipelines خطوات التوزيع؟

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

أندي: لدينا بيانات اصطناعية للبناء، ونعرف أننا سنبني وننشر على مراحل من البنية الأساسية لبرنامج ربط العمليات التجارية. لقد حددنا أيضا البيئة المستهدفة لنشرنا. هذه خدمة التطبيقات. سؤالي الآن هو، كيف تتم مصادقة Azure Pipelines مع App Service؟ أعلم أن هذا سيكون أحد مخاوف تيم نحن بحاجة إلى التأكد من أن العملية آمنة.

بعد القليل من البحث، يأتي أندي ومارا بالخطوات العامة التي تسمح ل Azure Pipelines بالنشر في App Service:

  1. حدد بيئة النشر الهدف في تكوين البنية الأساسية لبرنامج ربط العمليات التجارية.
  2. توفير طريقة ل Azure Pipelines لمصادقة الوصول إلى تلك البيئة.
  3. استخدم مهام Azure Pipelines لنشر البيانات الاصطناعية للبناء في تلك البيئة.

مارا: وفقا لأبحاثنا، نحتاج إلى إنشاء اتصال خدمة لتحديد البيئة المستهدفة ومصادقة الوصول إليها. بعد تحديد اتصال الخدمة، سيكون متوفرا لجميع مهامنا لاستخدامها. ثم نحتاج إلى استخدام المهام المضمنة DownloadPipelineArtifact لتنزيل البيانات الاصطناعية للبناء إلى عامل البنية الأساسية لبرنامج ربط العمليات التجارية وAzureWebApp لنشر تطبيقنا على Azure App Service.

ما هي الوظائف والاستراتيجيات؟

تحدد البنية الأساسية لبرنامج ربط العمليات التجارية للبناء الحالي عامل بناء ومتغيرات البنية الأساسية لبرنامج ربط العمليات التجارية والمهام اللازمة لإنشاء برنامجك.

يحتوي جزء التوزيع من البنية الأساسية لبرنامج ربط العمليات التجارية على نفس العناصر. يحدد تكوين النشر الخاص بك عادة وظيفة واحدة أو أكثر وبيئة البنية الأساسية لبرنامج ربط العمليات التجارية والاستراتيجيات. لقد تعرفت على بيئات البنية الأساسية لبرنامج ربط العمليات التجارية في وقت سابق.

فيما يلي مثال على التكوين الذي ستقوم بتشغيله لاحقا في هذه الوحدة النمطية. ينشر هذا التكوين موقع Space Game على Azure App Service.

- stage: 'DeployDev'
  displayName: 'Deploy to dev environment'
  dependsOn: Build
  jobs:
  - deployment: Deploy
    pool:
      vmImage: 'ubuntu-20.04'
    environment: dev
    variables:
    - group: 'Release Pipeline'
    strategy:
      runOnce:
        deploy:
          steps:
          - download: current
            artifact: drop
          - task: AzureWebApp@1
            displayName: 'Azure App Service Deploy: website'
            inputs:
              azureSubscription: 'Resource Manager - Tailspin - Space Game'
              appName: '$(WebAppName)'
              package: '$(Pipeline.Workspace)/drop/$(buildConfiguration)/*.zip'

الوظائف

المهمة هي سلسلة من الخطوات - أو المهام - التي يتم تشغيلها بشكل تسلسلي كوحدة. كل مرحلة مسار لها مهمة واحدة بشكل افتراضي، حتى عندما لا تستخدم job هذه المرحلة الكلمة الأساسية.

يمكن تشغيل الوظيفة في تجمع عامل أو على حاوية أو مباشرة على خادم Azure DevOps. يتم تشغيل مثال المهمة الموضحة هنا على عامل Ubuntu مستضاف من Microsoft.

يمكنك تحديد الشروط التي يتم بموجبها تشغيل كل وظيفة. لا تحدد الوظيفة المثال الموضحة هنا أي شروط. بشكل افتراضي، يتم تشغيل الوظيفة إذا لم تعتمد على أي وظيفة أخرى، أو إذا انتهت جميع الوظائف التي تعتمد عليها بنجاح.

يمكنك أيضا تشغيل المهام بالتوازي أو بالتتابع. باستخدام البنية الأساسية لبرنامج ربط العمليات التجارية الحالية كمثال، يمكنك استخدام وظائف متوازية لإنشاء برنامجك على عوامل Windows وLinux وmacOS في وقت واحد.

مهمة التوزيع هي نوع خاص من المهام التي تلعب دورا مهما في مراحل التوزيع الخاصة بك. تسجل مهام التوزيع حالة عمليات التوزيع في Azure Pipelines، ما يوفر لك سجل تدقيق. تساعدك مهام النشر أيضا على تحديد استراتيجية التوزيع الخاصة بك، والتي سنقوم بها قريبا.

الاستراتيجيات

تحدد الاستراتيجية كيفية طرح التطبيق الخاص بك. ستتعرف على المزيد حول استراتيجيات مثل الأزرق والأخضر والكناري في وحدة مستقبلية. في الوقت الحالي، ستستخدم استراتيجية runOnce لتنزيل حزمة Space Game من البنية الأساسية لبرنامج ربط العمليات التجارية ونشرها في Azure App Service.

كيف تتصل Azure Pipelines ب Azure؟

لنشر تطبيقك إلى مورد Azure، مثل جهاز ظاهري أو App Service، تحتاج إلى اتصال خدمة. يوفر اتصال الخدمة الوصول الآمن إلى اشتراك Azure باستخدام أحد أسلوبين:

  • المصادقة الأساسية للخدمة
  • الهويات المُدارة لموارد Azure

يمكنك معرفة المزيد حول نماذج الأمان هذه في نهاية هذه الوحدة النمطية، ولكن باختصار:

  • كيان الخدمة هو هوية لها دور محدود يمكنها الوصول إلى موارد Azure. فكر في كيان الخدمة كحساب خدمة يمكنه القيام بمهام تلقائية نيابة عنك.
  • الهويات المدارة لموارد Azure هي ميزة من ميزات معرف Microsoft Entra الذي يبسط عملية العمل مع أساسيات الخدمة. نظرا لوجود الهويات المدارة على مستأجر Microsoft Entra، يمكن للبنية الأساسية ل Azure مصادقة الخدمة تلقائيا وإدارة الحساب نيابة عنك.

الهويات المدارة تبسط عملية العمل مع كيانات الخدمة؛ ولكن في هذه الوحدة النمطية، سنستخدم المصادقة الأساسية للخدمة لأن اتصال الخدمة يمكنه اكتشاف موارد Azure تلقائيا وتعيين الأدوار الأساسية للخدمة المناسبة لك.

الخطة

أندي ومارا جاهزان للبدء. سيقومون ب:

  • بناء على تكوين البنية الأساسية لبرنامج ربط العمليات التجارية Azure الموجودة الخاصة بهم.
  • تعريف مرحلة بناء تنشئ البيانات الاصطناعية.
  • تعريف مرحلة التوزيع التي تنشر البيانات الاصطناعية إلى App Service.

Diagram that shows a hand-drawn illustration of a deployment pipeline that contains two stages. The deployment stage deploys the artifact to App Service.

أندي: هل هذا الرسم صحيح؟ نستخدم Azure Pipelines للنشر في Azure App Service . للقيام بذلك، نأخذ البيانات الاصطناعية للبناء كمدخل لمرحلة التوزيع . المهام في مرحلة النشر قم بتنزيل البيانات الاصطناعية واستخدم اتصال خدمة لنشر البيانات الاصطناعية إلى App Service .

مارا: هذا حول يلخص الأمر. لنبدأ.

‏‫اختبر معلوماتك

1.

لديك فكرة رائعة لتطبيق ويب جديد. لديك تعليمة برمجية للعمل على الكمبيوتر المحمول، ولكنك تريد ملاحظات من فريقك قبل المتابعة. ما هي أسرع طريقة لنشر تطبيقك على Azure حتى تتمكن من مشاركته مع فريقك؟

2.

للتوزيع في Azure App Service، ما هي الموارد التي تحتاجها Azure Pipelines؟

3.

أي من العبارات التالية تصف العلاقة بين المهام والمراحل والمهام؟