أتمتة نشر التطبيقات في Azure Spring Apps

إشعار

يعد Azure Spring Apps هو الاسم الجديد لخدمة Azure Spring Cloud. رغم أن الخدمة تحمل اسماً جديداً، سترى الاسم القديم في بعض الأماكن لفترة من الوقت بينما نعمل على تحديث الأصول مثل لقطات الشاشة، ومقاطع الفيديو، والرسوم التخطيطية.

تنطبق هذه المقالة على: ✔️ Basic/Standard ✔️ Enterprise

توضح لك هذه المقالة كيفية استخدام مهمة Azure Spring Apps لـAzure Pipelines لتوزيع التطبيقات.

تتيح لك أدوات التكامل المستمر والتسليم المستمر توزيع التحديثات بسرعة على التطبيقات الحالية بأقل جهد ومخاطر. يساعدك Azure DevOps على تنظيم هذه الوظائف الرئيسية والتحكم فيها.

يصف الفيديو التالي التنفيذ التلقائي الشامل باستخدام أدوات من اختيارك، بما في ذلك Azure Pipelines.


إنشاء اتصال خدمة Azure Resource Manager

أولاً، قم بإنشاء اتصال خدمة Azure Resource Manager بمشروع Azure DevOps. للحصول على إرشادات، راجع الاتصال بـMicrosoft Azure. تأكد من تحديد نفس الاشتراك الذي تستخدمه لمثيل خدمة تطبيقات Azure Spring.

إنشاء التطبيقات وتوزيعها

يمكنك الآن بناء وتوزيع مشاريعك باستخدام سلسلة من المهام. يحدد قالب Azure Pipelines التالي المتغيرات ومهمة a .NET Core لإنشاء التطبيق ومهمة Azure Spring Apps لتوزيع التطبيق.

variables:
  workingDirectory: './steeltoe-sample'
  planetMainEntry: 'Microsoft.Azure.SpringCloud.Sample.PlanetWeatherProvider.dll'
  solarMainEntry: 'Microsoft.Azure.SpringCloud.Sample.SolarSystemWeather.dll'
  planetAppName: 'planet-weather-provider'
  solarAppName: 'solar-system-weather'
  serviceName: '<your service name>'

steps:
# Restore, build, publish and package the zipped planet app
- task: DotNetCoreCLI@2
  inputs:
    command: 'publish'
    publishWebProjects: false
    arguments: '--configuration Release'
    zipAfterPublish: false
    modifyOutputPath: false
    workingDirectory: $(workingDirectory)

# Deploy the planet app
- task: AzureSpringCloud@0
  inputs:
    azureSubscription: '<Service Connection Name>'
    Action: 'Deploy'
    AzureSpringCloud: $(serviceName)
    AppName: 'testapp'
    DeploymentType: 'Artifacts'
    UseStagingDeployment: false
    DeploymentName: 'default'
    Package: $(workingDirectory)/src/$(planetAppName)/publish-deploy-planet.zip
    RuntimeVersion: 'NetCore_31'
    DotNetCoreMainEntryPath: $(planetMainEntry)

# Deploy the solar app
- task: AzureSpringCloud@0
  inputs:
    azureSubscription: '<Service Connection Name>'
    Action: 'Deploy'
    AzureSpringCloud: $(serviceName)
    AppName: 'testapp'
    DeploymentType: 'Artifacts'
    UseStagingDeployment: false
    DeploymentName: 'default'
    Package: $(workingDirectory)/src/$(solarAppName)/publish-deploy-solar.zip
    RuntimeVersion: 'NetCore_31'
    DotNetCoreMainEntryPath: $(solarMainEntry)

إعداد مثيل Azure Spring Apps ومشروع Azure DevOps

أولاً، استخدم الخطوات التالية لإعداد مثيل Azure Spring Apps الحالي للاستخدام مع Azure DevOps.

  1. انتقل إلى مثيل Azure Spring Apps، ثم أنشئ تطبيقاً جديداً.
  2. انتقل إلى مدخل Microsoft Azure DevOps، ثم أنشئ مشروعاً جديداً ضمن مؤسستك التي اخترتها. إذا لم يكن لديك مؤسسة Azure DevOps، يمكنك إنشاء حساب مجاناً.
  3. حدد Repos، ثم قم باستيراد التعليمة البرمجية للعرض التوضيحي Spring Boot إلى المستودع.

إنشاء اتصال خدمة Azure Resource Manager

بعد ذلك، أنشئ اتصال خدمة Azure Resource Manager بمشروع Azure DevOps. للحصول على إرشادات، راجع الاتصال بـMicrosoft Azure. تأكد من تحديد نفس الاشتراك الذي تستخدمه لمثيل خدمة تطبيقات Azure Spring.

إنشاء التطبيقات وتوزيعها

يمكنك الآن بناء وتوزيع مشاريعك باستخدام سلسلة من المهام. تعرض لك الأقسام التالية خيارات متنوعة لتوزيع تطبيقك باستخدام Azure DevOps.

التوزيع باستخدام البنية الأساسية

التوزيع باستخدام البنية الأساسية، اتبع الخطوات التالية:

  1. حدد Pipelines، ثم أنشئ خط تدفق جديداً باستخدام قالب Maven.

  2. قم بتحرير ملف azure-pipelines.yml لتعيين الحقل mavenPomFile إلى 'complete / pom.xml'.

  3. حدد Show assistant على الجانب الأيمن، ثم حدد قالب Azure Spring Apps.

  4. حدد اتصال الخدمة الذي أنشأته لـAzure Subscription الخاص بك، ثم حدد مثيل تطبيقات Azure Spring ومثيل التطبيق.

  5. عطِّل Use Staging Deployment.

  6. عيّن الحزمة أو المجلد على complete/target/spring-boot-complete-0.0.1-SNAPSHOT.jar.

  7. حدد Add لإضافة هذه المهمة إلى البنية الأساسية الخاصة بك.

    يجب أن تتطابق إعدادات البنية الأساسية مع الصورة التالية.

    لقطة شاشة ل Azure DevOps تعرض إعدادات البنية الأساسية لبرنامج ربط العمليات التجارية الجديدة.

    يمكنك أيضاً إنشاء وتوزيع مشاريعك باستخدام قالب البنية الأساسية التالي. يحدد هذا المثال أولاً مهمة Maven لإنشاء التطبيق، تليها مهمة ثانية وهي توزيع ملف JAR باستخدام مهمة Azure Spring Apps لـAzure Pipelines.

    steps:
    - task: Maven@3
      inputs:
        mavenPomFile: 'complete/pom.xml'
    - task: AzureSpringCloud@0
      inputs:
        azureSubscription: '<your service connection name>'
        Action: 'Deploy'
        AzureSpringCloud: <your Azure Spring Apps service>
        AppName: <app-name>
        DeploymentType: 'Artifacts'
        UseStagingDeployment: false
        DeploymentName: 'default'
        Package: ./target/your-result-jar.jar
    
  8. حدد Save وrun، ثم انتظر حتى تنتهي المهمة.

عمليات النشر الزرقاء والأخضر

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

تحرير ملف البنية الأساسية

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

steps:
- task: Maven@3
  inputs:
    mavenPomFile: 'pom.xml'
- task: AzureSpringCloud@0
  inputs:
    azureSubscription: '<your service connection name>'
    Action: 'Deploy'
    AzureSpringCloud: <your Azure Spring Apps service>
    AppName: <app-name>
    DeploymentType: 'Artifacts'
    UseStagingDeployment: true
    Package: ./target/your-result-jar.jar
- task: AzureSpringCloud@0
  inputs:
    azureSubscription: '<your service connection name>'
    Action: 'Set Production'
    AzureSpringCloud: <your Azure Spring Apps service>
    AppName: <app-name>
    UseStagingDeployment: true

استخدام قسم الإصدارات

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

  1. حدد Pipelines وأنشئ مساراً جديداً لبناء وتوزيع البيانات الاصطناعية.

    1. حدد Azure Repos Git لموقع التعليمة البرمجية الخاص بك.
    2. حدد المستودع حيث توجد التعليمة البرمجية الخاصة بك.
    3. حدد القالب Maven وقم بتعديل الملف لتعيين الحقل mavenPomFile إلى complete/pom.xml.
    4. حدد Show assistant على الجانب الأيمن وحدد قالب Publish build artifacts.
    5. عيّن Path to publish على complete/target/spring-boot-complete-0.0.1-SNAPSHOT.jar.
    6. حدد حفظ وتشغيل.
  2. حدد Releases، ثم Create release.

  3. أضف بنية أساسية جديدة، وحدد Empty job لإنشاء وظيفة.

  4. ضمن Stages حدد السطر 1 job, 0 task

    لقطة شاشة ل Azure DevOps تعرض علامة التبويب Pipelines مع تمييز ارتباط المهمة 1، 0.

    1. حدد + لإضافة مهمة إلى الوظيفة.
    2. ابحث عن قالب Azure Spring Apps، ثم حدد Add لإضافة المهمة إلى الوظيفة.
    3. حدد Azure Spring Apps Deploy: لتحرير المهمة.
    4. املأ هذه المهمة بمعلومات تطبيقك، ثم قم بتعطيل Use Staging Deployment.
    5. قم بتمكين إنشاء توزيع مرحلي جديد إذا لم يكن موجوداً، ثم أدخل اسماً في Deployment.
    6. حدد Save لحفظ هذه المهمة.
    7. حدد موافق.
  5. حدد Pipeline، ثم حدد Add an artifact.

    1. ضمن Source (build pipeline) حدد البنية الأساسية المُنشأة مسبقاً.
    2. حدد Add، ثم Save.
  6. حدد 1 job, 1 task ضمن Stages.

  7. انتقل إلى مهمة Azure Spring Apps Deploy في Stage 1، ثم حدد علامة الحذف بجوار Package or folder.

  8. حدد spring-boot-complete-0.0.1-SNAPSHOT.jar في مربع الحوار، ثم حدد OK.

    لقطة شاشة ل Azure DevOps تعرض مربع الحوار تحديد ملف أو مجلد.

  9. حدد + لإضافة مهمة Azure Spring Apps أخرى إلى الوظيفة.

  10. غيّر الإجراء إلى Set Production Deployment.

  11. حدد Save، ثم Create release لبدء التوزيع تلقائياً.

للتحقق من حالة الإصدار الحالية لتطبيقك، حدد View release. بعد الانتهاء من هذه المهمة، قم بزيارة مدخل Microsoft Azure للتحقق من حالة التطبيق الخاص بك.

التوزيع من المصدر

للتوزيع مباشرة إلى Azure دون خطوة إنشاء منفصلة، استخدم قالب البنية الأساسية التالي.

- task: AzureSpringCloud@0
  inputs:
    azureSubscription: '<your service connection name>'
    Action: 'Deploy'
    AzureSpringCloud: <your Azure Spring Apps service>
    AppName: <app-name>
    DeploymentType: 'Artifacts'
    UseStagingDeployment: false
    DeploymentName: 'default'
    Package: $(Build.SourcesDirectory)

النشر من صورة مخصصة

للنشر مباشرة من صورة حاوية موجودة، استخدم قالب المسار التالي.

- task: AzureSpringCloud@0
  inputs:
    azureSubscription: '<your service connection name>'
    Action: 'Deploy'
    AzureSpringCloud: '<your Azure Spring Apps service>'
    AppName: '<app-name>'
    DeploymentType: 'CustomContainer'
    UseStagingDeployment: false
    DeploymentName: 'default'
    ContainerRegistry: 'docker.io'  # or your Azure Container Registry, e.g: 'contoso.azurecr.io'
    RegistryUsername: '$(username)'
    RegistryPassword: '$(password)'
    ContainerImage: '<your image tag>'

نشر منشئ وتحديده (خطة المؤسسة فقط)

إذا كنت تستخدم خطة Azure Spring Apps Enterprise، يمكنك أيضا تحديد المنشئ الذي يجب استخدامه لنشر الإجراءات باستخدام builder الخيار، كما هو موضح في المثال التالي. لمزيد من المعلومات، راجع استخدام خدمة بناء Tanzu.

- task: AzureSpringCloud@0
  inputs:
    azureSubscription: '<your-service-connection-name>'
    Action: 'Deploy'
    AzureSpringCloud: '<your-Azure-Spring-Apps-service-instance-name>'
    AppName: '<app-name>'
    UseStagingDeployment: false
    DeploymentName: 'default'
    Package: './target/your-result-jar.jar'
    Builder: '<your-Tanzu-Build-Service-Builder-resource>'

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