نشر حاوية مخصصة إلى App Service باستخدام Azure Pipelines

يمكنك Azure DevOps من استضافة التعليمات البرمجية الخاصة بك وإنشاءها وتخطيطها واختبارها باستخدام مهام سير العمل المجانية. يتيح لك استخدام Azure Pipelines كأحد مهام سير العمل هذه نشر تطبيقك باستخدام CI/CD الذي يعمل مع أي نظام أساسي وسحابة. يتم تعريف البنية الأساسية لبرنامج ربط العمليات التجارية كملف YAML في الدليل الجذر لمستودعك.

في هذه المقالة، نستخدم Azure Pipelines لنشر تطبيق حاوية Windows إلى App Service من مستودع Git في Azure DevOps. يفترض أن لديك بالفعل تطبيق .NET مع dockerfile داعم في Azure DevOps.

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

إضافة اتصال خدمة

قبل إنشاء البنية الأساسية لبرنامج ربط العمليات التجارية الخاصة بك، يجب عليك أولا إنشاء اتصال الخدمة حيث سيطلب منك اختيار الاتصال والتحقق منه عند إنشاء القالب الخاص بك. يسمح لك اتصال الخدمة بالاتصال بالسجل الذي تختاره (ACR أو Docker Hub) عند استخدام قوالب المهام. عند إضافة اتصال خدمة جديد، اختر الخيار Docker Registry. يطلب منك النموذج التالي اختيار Docker Hub أو Azure Container Registry مع المعلومات المتعلقة. لمتابعة هذا البرنامج التعليمي، استخدم Azure Container Registry. يمكنك إنشاء اتصال خدمة جديد باتباع التوجيهات هنا.

تأمين أسرارك

نظرا لأننا نستخدم معلومات حساسة لا تريد أن يصل إليها الآخرون، فإننا نستخدم المتغيرات لحماية معلوماتنا. إنشاء متغير باتباع التوجيهات هنا.

لإضافة متغير، انقر فوق الزر المتغيرات بجوار الزر حفظ في الجزء العلوي الأيسر من طريقة عرض التحرير للبنية الأساسية لبرنامج ربط العمليات التجارية الخاصة بك. حدد الزر New Variable وأدخل معلوماتك. أضف المتغيرات أدناه مع أسرارك الخاصة المناسبة من كل مورد.

  • vmImageName: 'windows-latest'
  • imageRepository: 'your-image-repo-name'
  • dockerfilePath: '$(Build.SourcesDirectory)/path/to/Dockerfile'
  • dockerRegistryServiceConnection: "your-service-connection-number"

إنشاء تدفق جديد

بمجرد إنشاء المستودع الخاص بك باستخدام تطبيق .NET الخاص بك ودعم dockerfile، يمكنك إنشاء البنية الأساسية لبرنامج ربط العمليات التجارية الخاصة بك باتباع هذه الخطوات.

  1. انتقل إلى Pipelines على شريط القوائم الأيسر وانقر على الزر Create pipeline
  2. في الشاشة التالية، حدد Azure Repos Git كخيار مستودع وحدد المستودع حيث توجد التعليمات البرمجية الخاصة بك
  3. ضمن علامة التبويب تكوين، اختر الخيار Starter Pipeline
  4. ضمن علامة التبويب مراجعة التالية، انقر فوق الزر حفظ

إنشاء صورة ودفعها إلى سجل حاوية Azure

بعد إنشاء البنية الأساسية لبرنامج ربط العمليات التجارية وحفظها، ستحتاج إلى تحرير البنية الأساسية لبرنامج ربط العمليات التجارية لتشغيل خطوات إنشاء الحاوية، والدفع إلى سجل، ونشر الصورة إلى App Service. للبدء، انتقل إلى قائمة Pipelines ، واختر البنية الأساسية لبرنامج ربط العمليات التجارية التي قمت بإنشائها وانقر فوق الزر Edit .

أولا، تحتاج إلى إضافة مهمة docker حتى تتمكن من إنشاء الصورة. أضف التعليمات البرمجية التالية واستبدل Dockerfile: app/Dockerfile بالمسار إلى Dockerfile الخاص بك.

trigger:
 - main

 pool:
   vmImage: 'windows-latest' 

 variables:
   vmImageName: 'windows-latest'
   imageRepository: 'your-image-repo-name'
   dockerfilePath: '$(Build.SourcesDirectory)/path/to/Dockerfile'
   dockerRegistryServiceConnection: 'your-service-connection-number'

- stage: Build
  displayName: Build and push stage
  jobs:  
  - job: Build
    displayName: Build job
    pool:
      vmImage: $(vmImageName)
    steps:
    - task: Docker@2
      displayName: Build and push an image to container registry
      inputs:
        command: buildAndPush
        repository: $(imageRepository)
        dockerfile: $(dockerfilePath)
        containerRegistry: $(dockerRegistryServiceConnection)
        tags: |
          $(tag)

إضافة مهمة نشر App Service

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

- stage: Deploy
  displayName: Deploy to App Service
  jobs:
  - job: Deploy
    displayName: Deploy
    pool:
      vmImage: $(vmImageName)
    steps:

بعد ذلك، انتقل إلى علامة التبويب Show assistant في الزاوية العلوية اليسرى وابحث عن مهمة توزيع Azure App Service واملأ النموذج التالي:

  • نوع الاتصال: Azure Resource Manager
  • اشتراك Azure: your-subscription-name
  • App Service type: Web App for Containers (Windows)
  • App Service name: your-app-name
  • التسجيل أو مساحة الاسم: your-azure-container-registry-namespace
  • الصورة: your-azure-container-registry-image-name

بمجرد ملء هذه الأزرار، انقر فوق الزر إضافة لإضافة المهمة أدناه:

- task: AzureRmWebAppDeployment@4
  inputs:
    ConnectionType: 'AzureRM'
    azureSubscription: 'my-subscription-name'
    appType: 'webAppHyperVContainer'
    WebAppName: 'my-app-name'
    DockerNamespace: 'myregsitry.azurecr.io'
    DockerRepository: 'dotnetframework:12'

بعد إضافة المهمة، يكون المسار جاهزا للتشغيل. انقر فوق الزر Validate and save وقم بتشغيل البنية الأساسية لبرنامج ربط العمليات التجارية. تمر البنية الأساسية لبرنامج ربط العمليات التجارية بخطوات إنشاء ودفع صورة حاوية Windows إلى Azure Container Registry ونشر الصورة إلى App Service.

فيما يلي مثال على ملف yaml الكامل:

trigger:
 - main

 pool:
   vmImage: 'windows-latest' 

 variables:
   vmImageName: 'windows-latest'
   imageRepository: 'your-image-repo-name'
   dockerfilePath: '$(Build.SourcesDirectory)/path/to/Dockerfile'
   dockerRegistryServiceConnection: 'your-service-connection-number'

- stage: Build
  displayName: Build and push stage
  jobs:  
  - job: Build
    displayName: Build job
    pool:
      vmImage: $(vmImageName)
    steps:
    - task: Docker@2
      displayName: Build and push an image to container registry
      inputs:
        command: buildAndPush
        repository: $(imageRepository)
        dockerfile: $(dockerfilePath)
        containerRegistry: $(dockerRegistryServiceConnection)
        tags: |
          $(tag)

- stage: Deploy
  displayName: Deploy to App Service
  jobs:
  - job: Deploy
    displayName: Deploy
    pool:
      vmImage: $(vmImageName)
    steps:
    - task: AzureRmWebAppDeployment@4
		  inputs:
		    ConnectionType: 'AzureRM'
		    azureSubscription: 'my-subscription-name'
		    appType: 'webAppHyperVContainer'
		    WebAppName: 'my-app-name'
		    DockerNamespace: 'myregsitry.azurecr.io'
		    DockerRepository: 'dotnetframework:12'