إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
خدمات | Azure DevOps Server 2022
توضح هذه المقالة كيفية استخدام Azure Pipelines لإنشاء تطبيق الويب الخاص بك واختباره ونشره تلقائيا إلى Azure App Service. يمكنك إعداد مسار تكامل مستمر وتسليم مستمر (CI/CD) يتم تشغيله كلما قمت بإيداع تغيير التعليمات البرمجية إلى فرع معين من المستودع الخاص بك.
تتكون المسارات من المراحلوالوظائفوالخطوات. الخطوة هي أصغر لبنة إنشاء لبرنامج ربط العمليات التجارية ويمكن أن تكون برنامجا نصيا أو مهمة، وهي برنامج نصي معبأ مسبقا. لمزيد من المعلومات حول المفاهيم والمكونات الأساسية التي يتكون منها خط أنابيب Azure، راجع مفاهيم Azure Pipelines الرئيسية.
يمكنك استخدام مهمة Azure Web App في البنية الأساسية لبرنامج ربط العمليات التجارية للنشر إلى App Service. بالنسبة للسيناريوهات الأكثر تعقيدا، مثل استخدام معلمات XML في عمليات التوزيع، يمكنك استخدام مهمة نشر Azure App Service .
المتطلبات
تطبيق Azure App Service يعمل مع تعليمات برمجية مستضافة على GitHub أو Azure Repos. يمكنك استخدام أي من مقالات التشغيل السريع التالية لإنشاء نموذج تطبيق:
- ASP.NET Core: إنشاء تطبيق ويب ASP.NET Core في Azure
- ASP.NET: إنشاء تطبيق ويب ASP.NET Framework في Azure
- JavaScript: إنشاء تطبيق ويب Node.js في Azure App Service
- Java: إنشاء تطبيق Java في Azure App Service
- Python: إنشاء تطبيق Python في Azure App Service
مؤسسة Azure DevOps لديها القدرة على تشغيل المسارات على الوكلاء المستضافين من Microsoft. تحتاج إلى طلب طبقة مجانية من الوظائف المتوازية أو شراء وظائف متوازية. لمزيد من المعلومات، راجع تكوين الوظائف المتوازية والدفع لها.
مشروع تم إنشاؤه في مؤسسة Azure DevOps حيث لديك إذن لإنشاء المسارات واتصالات خدمة Azure وتفويضها. إنشاء مشروع في Azure DevOps.
هام
أثناء إجراءات GitHub، قد تتم مطالبتك بإنشاء اتصال خدمة GitHub أو إعادة توجيهك إلى GitHub لتسجيل الدخول، أو تثبيت تطبيق Azure Pipelines GitHub، أو تخويل Azure Pipelines، أو المصادقة على مؤسسات GitHub. اتبع التعليمات التي تظهر على الشاشة لإكمال العمليات اللازمة. لمزيد من المعلومات، راجع الوصول إلى مستودعات GitHub.
إنشاء خط أنابيب
أمثلة التعليمات البرمجية في هذا القسم مخصصة لتطبيق ويب ASP.NET Core. يمكنك تكييف الإرشادات لأطر العمل الأخرى. لمزيد من المعلومات حول دعم النظام البيئي لمسارات Azure، راجع أمثلة النظام البيئي لمسارات Azure.
حدد البنية الأساسية لبرنامج ربط العمليات التجارية عن طريق إنشاء ملف YAML azure-pipelines.yml في مستودع التعليمات البرمجية الخاص بك.
- في قائمة التنقل اليسرى لمشروع Azure DevOps، حدد التدفقات.
- في صفحة التدفقات ، حدد مسار جديد، أو إنشاء مسار إذا كان هذا المسار هو الأول في المشروع.
- في شاشة أين توجد التعليمات البرمجية الخاصة بك ، حدد موقع التعليمات البرمجية المصدر، إما Azure Repos Git أو GitHub. إذا لزم الأمر، قم بتسجيل الدخول إلى GitHub.
- في شاشة تحديد مستودع ، حدد مستودع التعليمات البرمجية الخاص بك.
- في شاشة تكوين التدفق ، حدد مسار المبتدئين.
أضف مهمة .NET Core (DotNetCoreCLI@2) إلى البنية الأساسية لبرنامج ربط العمليات التجارية، وقم بإنشاء تطبيقك ونشره.
- في شاشة مراجعة YAML لخط الأنابيب ، احذف كل التعليمات البرمجية بعد السطر
steps:. - حدد نهاية الملف، ثم حدد إظهار المساعد على اليمين.
- ضمن المهام، حدد .NET Core.
- في شاشة تكوين .NET Core ، ضمن اتصال Azure Resource Manager، حدد اشتراك Azure، ثم حدد تخويل لإنشاء اتصال الخدمة المطلوب.
- ضمن الأوامر، حدد نشر.
- تأكد من تحديد خانتي الاختيار نشر مشاريع ويبوالمشاريع المنشورة على Zip ، ثم حدد إضافة.
- تظهر المهمة في مسار YAML الخاص بك. راجع كود YAML لمعرفة ما يفعله. عندما تكون جاهزا، حدد حفظ وتشغيل، ثم حدد حفظ وتشغيل مرة أخرى.
- في شاشة ملخص الإنشاء، ضمن الوظائف، حدد الارتباط الإذن المطلوب . في شاشة عمليات الفحوص ، حدد تصريح، ثم حدد السماح مرة أخرى. يسمح منح الإذن هنا باستخدام اتصال الخدمة الذي قمت بالسماح به لجميع عمليات تشغيل هذا التدفق.
ينشر المسار ملف ZIP للتوزيع كأداة Azure لمهمة التوزيع لاستخدامها في الخطوة التالية.
إضافة مهمة النشر
بعد تشغيل المسار بنجاح، أضف مهمة النشر.
- في شاشة تشغيل التدفق، حدد أيقونة المزيد من الإجراءات في الجزء العلوي الأيمن، ثم حدد تحرير التدفق.
- حدد نهاية ملف YAML، وحدد إظهار المساعد إذا لم تظهر قائمة المهام .
- في قائمة المهام ، ابحث عن مهمة Azure Web App وحددها. بدلا من ذلك، يمكنك استخدام مهمة نشر Azure App Service .
- في شاشة تكوين Azure Web App، ضمن اشتراك Azure، حدد نفس اتصال الخدمة الذي قمت بإعداده للخطوة السابقة. لا تحتاج إلى إعادة تفويض هذا الاتصال.
- بالنسبة لنوع التطبيق، حدد Azure Web App على Linux أو Azure Web App على Windows، اعتمادا على التعليمات البرمجية الخاصة بك.
- بالنسبة إلى اسم التطبيق، حدد اسم تطبيق App Service أو أدخله.
- حدد إضافة.
- حدد التحقق من الصحة والحفظ، ثم حدد حفظ.
- حدد تشغيل، ثم حدد تشغيل مرة أخرى.
يجب أن يبدو مسار YAML الكامل مثل التعليمات البرمجية التالية:
trigger:
- <branch-specification>
pool:
vmImage: <agent-specification>
steps:
- task: DotNetCoreCLI@2
inputs:
azureSubscription: '<your-authorized-service-connection>'
command: 'publish'
publishWebProjects: true
- task: AzureWebApp@1
inputs:
azureSubscription: '<your-authorized-service-connection>'
appType: 'webApp'
appName: '<your-app-name>'
package: '$(System.DefaultWorkingDirectory)/**/*.zip'
deploymentMethod: 'auto'
-
azureSubscription: اسم اتصال الخدمة المعتمد باشتراك Azure الخاص بك. -
appName: اسم تطبيقك الحالي. -
packageمسار الملف إلى الحزمة أو المجلد الذي يحتوي على محتويات App Service.: يتم دعم أحرف البدل.
الأمثلة
تناقش الأقسام التالية إنشاء أنواع مختلفة من مسارات الإنشاء والإصدار.
النشر إلى تطبيق ظاهري
يتم نشر مهمة Azure Web App إلى التطبيق الجذر في تطبيق ويب Azure. يمكنك النشر إلى تطبيق ظاهري معين باستخدام VirtualApplication خاصية مهمة نشر Azure App Service .
- task: AzureRmWebAppDeployment@5
inputs:
VirtualApplication: '<name of virtual application>'
VirtualApplication هو اسم التطبيق الظاهري الذي تم تكوينه في مدخل Microsoft Azure. لمزيد من المعلومات، راجع تكوين تطبيق App Service في مدخل Microsoft Azure.
النشر في فتحة
يوضح المثال التالي كيفية النشر إلى فتحة التقسيم المرحلي، ثم التبديل إلى فتحة إنتاج:
- task: AzureWebApp@1
inputs:
azureSubscription: '<service-connection-name>'
appType: webAppLinux
appName: '<app-name>'
deployToSlotOrASE: true
resourceGroupName: '<name of resource group>'
slotName: staging
package: '$(Build.ArtifactStagingDirectory)/**/*.zip'
- task: AzureAppServiceManage@0
inputs:
azureSubscription: '<service-connection-name>'
WebAppName: '<app-name>'
ResourceGroupName: '<name of resource group>'
SourceSlot: staging
SwapWithProduction: true
-
azureSubscriptionاتصال خدمة Azure.: -
appTypeنوع التطبيق الاختياري مثلwebAppLinuxالنشر على تطبيق ويب على Linux.: -
appNameاسم تطبيقك الحالي.: -
deployToSlotOrASE:منطقيه. ما إذا كان سيتم النشر في فتحة توزيع موجودة أو بيئة App Service. -
resourceGroupNameاسم مجموعة الموارد المراد النشر فيها، مطلوب إذاdeployToSlotOrASEكان صحيحا.: -
slotNameاسم الفتحة المراد النشر فيها، مطلوب إذاdeployToSlotOrASEكان صحيحا.: الإعدادات الافتراضية لـproduction. -
packageمسار الملف إلى الحزمة أو المجلد الذي يحتوي على محتويات التطبيق.: يتم دعم أحرف البدل. -
SourceSlot: يتم إرسال الفتحة إلى الإنتاج عندماSwapWithProductionيكون صحيحا. -
SwapWithProduction:منطقيه. ما إذا كان سيتم تبديل حركة مرور فتحة المصدر بالإنتاج.
النشر في تطبيقات ويب متعددة
يمكنك استخدام المهام في ملف YAML لإعداد مسار عمليات التوزيع. باستخدام الوظائف، يمكنك التحكم في ترتيب النشر إلى تطبيقات ويب متعددة.
jobs:
- job: buildandtest
pool:
vmImage: ubuntu-latest
steps:
# publish an artifact called drop
- task: PublishPipelineArtifact@1
inputs:
targetPath: '$(Build.ArtifactStagingDirectory)'
artifactName: drop
# deploy to Azure Web App staging
- task: AzureWebApp@1
inputs:
azureSubscription: '<service-connection-name>'
appType: <app type>
appName: '<staging-app-name>'
deployToSlotOrASE: true
resourceGroupName: <group-name>
slotName: 'staging'
package: '$(Build.ArtifactStagingDirectory)/**/*.zip'
- job: deploy
dependsOn: buildandtest
condition: succeeded()
pool:
vmImage: ubuntu-latest
steps:
# download the artifact drop from the previous job
- task: DownloadPipelineArtifact@2
inputs:
source: 'current'
artifact: 'drop'
path: '$(Pipeline.Workspace)'
- task: AzureWebApp@1
inputs:
azureSubscription: '<service-connection-name>'
appType: <app type>
appName: '<production-app-name>'
resourceGroupName: <group-name>
package: '$(Pipeline.Workspace)/**/*.zip'
النشر المشروط
للنشر المشروط في YAML، استخدم إحدى الأساليب التالية:
- إضافة شرط إلى الخطوة.
- اعزل خطوات التوزيع في مهمة منفصلة، وأضف شرطا إلى تلك المهمة.
يوضح المثال التالي كيفية استخدام شروط الخطوة لنشر الإصدارات الناجحة فقط التي تنشأ من الفرع الرئيسي:
- task: AzureWebApp@1
condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main'))
inputs:
azureSubscription: '<service-connection-name>'
appName: '<app-name>'
لمزيد من المعلومات حول الشروط، راجع تحديد الشروط.
النشر باستخدام نشر الويب
يمكن نشر مهمة نشر Azure App Service إلى App Service باستخدام Web Deploy.
trigger:
- main
pool:
vmImage: windows-latest
variables:
buildConfiguration: 'Release'
steps:
- task: DotNetCoreCLI@2
inputs:
command: 'publish'
publishWebProjects: true
arguments: '--configuration $(buildConfiguration)'
zipAfterPublish: true
- task: AzureRmWebAppDeployment@5
inputs:
ConnectionType: 'AzureRM'
azureSubscription: '<service-connection-name>'
appType: 'webApp'
WebAppName: '<app-name>'
packageForLinux: '$(System.DefaultWorkingDirectory)/**/*.zip'
enableCustomDeployment: true
DeploymentType: 'webDeploy'
الأسئلة المتداولة
ما الفرق بين مهام AzureWebApp وAzureRmWebAppDeploy؟
مهمة Azure Web App هي أبسط طريقة للنشر إلى تطبيق ويب Azure. بشكل افتراضي، يمكنك نشر التطبيق الجذر في تطبيق ويب Azure.
يمكن لمهمة نشر Azure App Service التعامل مع المزيد من السيناريوهات المخصصة، مثل:
- النشر باستخدام Web Deploy، إذا كنت تستخدم عادة عملية نشر خدمات معلومات الإنترنت (IIS).
- النشر على التطبيقات الظاهرية.
- النشر إلى أنواع التطبيقات الأخرى، مثل تطبيقات الحاويات أو تطبيقات الوظائف أو WebJobs أو واجهة برمجة التطبيقات وتطبيقات الأجهزة المحمولة.
إشعار
تدعم مهمة تحويل الملفات المنفصلة أيضا تحويلات الملفات واستبدال المتغير لاستخدامها في مسارات Azure. يمكنك استخدام مهمة تحويل الملف لتطبيق تحويلات الملفات واستبدال المتغيرات على أي ملفات تكوين ومعلمات.
لماذا أحصل على الرسالة "تم توفير حزمة App Service أو مسار مجلد غير صالح"؟
في مسارات YAML، قد يكون هناك عدم تطابق بين مكان حفظ حزمة الويب المبنية والمكان الذي تبحث فيه مهمة النشر عنها. تلتقط مهمة AzureWebApp الافتراضية حزمة الويب للنشر منها $(System.DefaultWorkingDirectory)/**/*.zip. إذا تم إيداع حزمة الويب في مكان آخر، فقم بتعديل قيمة المعلمة package .
لماذا أحصل على الرسالة "النشر باستخدام خيارات webdeploy مدعومة فقط عند استخدام عامل Windows"؟
يحدث هذا الخطأ في مهمة AzureRmWebAppDeployment عند تكوين المهمة للنشر باستخدام Web Deploy، ولكن الوكيل الخاص بك لا يقوم بتشغيل Windows. تحقق من أن معلمة YAML vmImage الخاصة بك تحدد Windows.
pool:
vmImage: windows-latest
لماذا لا يعمل Web Deploy عند تعطيل المصادقة الأساسية؟
للحصول على معلومات حول استكشاف الأخطاء وإصلاحها حول الحصول على مصادقة معرف Microsoft Entra للعمل مع مهمة نشر Azure App Service ، راجع لا يمكنني نشر الويب إلى Azure App Service باستخدام مصادقة معرف Microsoft Entra من عامل Windows الخاص بي.