AzureWebApp@1 - مهمة Azure Web App v1
تنشر هذه المهمة Azure Web App ل Linux أو Windows.
إعراب
# Azure Web App v1
# Deploy an Azure Web App for Linux or Windows.
- task: AzureWebApp@1
inputs:
azureSubscription: # string. Required. Azure subscription.
appType: # 'webApp' | 'webAppLinux'. Required. App type.
appName: # string. Required. App name.
#deployToSlotOrASE: false # boolean. Optional. Use when appType != "". Deploy to Slot or App Service Environment. Default: false.
#resourceGroupName: # string. Required when deployToSlotOrASE = true. Resource group.
#slotName: 'production' # string. Required when deployToSlotOrASE = true. Slot. Default: production.
package: '$(System.DefaultWorkingDirectory)/**/*.zip' # string. Required. Package or folder. Default: $(System.DefaultWorkingDirectory)/**/*.zip.
#customDeployFolder: # string. Optional. Use when package EndsWith .war. Custom Deploy Folder.
#runtimeStack: # string. Optional. Use when appType = webAppLinux. Runtime stack.
#startUpCommand: # string. Optional. Use when appType = webAppLinux. Startup command.
# Application and Configuration Settings
#customWebConfig: # string. Optional. Use when appType != webAppLinux && package NotEndsWith .war. Generate web.config parameters for Python, Node.js, Go and Java apps.
#appSettings: # string. App settings.
#configurationStrings: # string. Configuration settings.
# Additional Deployment Options
#deploymentMethod: 'auto' # 'auto' | 'zipDeploy' | 'runFromPackage'. Required when appType != webAppLinux && appType != "" && package NotEndsWith .war && package NotEndsWith .jar. Deployment method. Default: auto.
# Azure Web App v1
# Deploy an Azure Web App for Linux or Windows.
- task: AzureWebApp@1
inputs:
azureSubscription: # string. Required. Azure subscription.
appType: # 'webApp' | 'webAppLinux'. Required. App type.
appName: # string. Required. App name.
#deployToSlotOrASE: false # boolean. Optional. Use when appType != "". Deploy to Slot or App Service Environment. Default: false.
#resourceGroupName: # string. Required when deployToSlotOrASE = true. Resource group.
#slotName: 'production' # string. Required when deployToSlotOrASE = true. Slot. Default: production.
package: '$(System.DefaultWorkingDirectory)/**/*.zip' # string. Required. Package or folder. Default: $(System.DefaultWorkingDirectory)/**/*.zip.
#runtimeStack: # string. Optional. Use when appType = webAppLinux. Runtime stack.
#startUpCommand: # string. Optional. Use when appType = webAppLinux. Startup command.
# Application and Configuration Settings
#customWebConfig: # string. Optional. Use when appType != webAppLinux && package NotEndsWith .war. Generate web.config parameters for Python, Node.js, Go and Java apps.
#appSettings: # string. App settings.
#configurationStrings: # string. Configuration settings.
# Additional Deployment Options
#deploymentMethod: 'auto' # 'auto' | 'zipDeploy' | 'runFromPackage'. Required when appType != webAppLinux && appType != "" && package NotEndsWith .war && package NotEndsWith .jar. Deployment method. Default: auto.
المدخلات
نوع تطبيق
string
. مطلوب. القيم المسموح بها: webApp
(تطبيق الويب على Windows)، webAppLinux
(تطبيق الويب على Linux).
تحديد نوع Azure Web App.
اسم تطبيق
string
. مطلوب.
تحديد اسم خدمة تطبيقات Azure الموجودة. سيتم سرد خدمات التطبيق التي تستند إلى نوع التطبيق المحدد فقط.
deployToSlotOrASE
-
Deploy to Slot أو App Service Environment
boolean
. اختياري. استخدم عند appType != ""
. القيمة الافتراضية: false
.
تحديد خيار النشر إلى فتحة نشر موجودة أو بيئة خدمة تطبيقات Azure.
لكلا الهدفين، تحتاج المهمة إلى اسم مجموعة موارد.
إذا كان هدف التوزيع عبارة عن فتحة، فإن الإعداد الافتراضي هو فتحة الإنتاج. يمكن أيضا توفير أي اسم فتحة موجود آخر.
إذا كان هدف التوزيع هو Azure App Service Environment، فاترك اسم الفتحة على أنه "production"، وحدد اسم مجموعة الموارد.
مجموعة موارد
string
. مطلوب عند deployToSlotOrASE = true
.
اسم مجموعة الموارد مطلوب عندما يكون هدف التوزيع إما فتحة نشر أو بيئة خدمة تطبيقات Azure.
تحديد مجموعة موارد Azure التي تحتوي على Azure App Service المشار إليها أعلاه.
فتحة
string
. مطلوب عند deployToSlotOrASE = true
. القيمة الافتراضية: production
.
تحديد فتحة موجودة، باستثناء فتحة الإنتاج.
string
. مطلوب. القيمة الافتراضية: $(System.DefaultWorkingDirectory)/**/*.zip
.
مسار الملف إلى الحزمة أو المجلد الذي يحتوي على محتوى App Service الذي تم إنشاؤه بواسطة MSBuild أو ملف مضغوط أو ملف حرب. المتغيرات ( إنشاء | الإصدار) وأحرف البدل مدعومة. على سبيل المثال، $(System.DefaultWorkingDirectory)/**/*.zip
أو $(System.DefaultWorkingDirectory)/**/*.war
.
مجلد النشر المخصص
string
. اختياري. استخدم عند package EndsWith .war
.
يحدد اسم المجلد المخصص الذي تريد النشر إليه.
إذا كان الحقل فارغا، يتم نشر الحزمة إلى <appname>.azurewebsites.net/<warpackagename>
.
إذا تم إدخال ROOT، يتم نشر الحزمة على <appname>.azurewebsited.net
.
في جميع الحالات الأخرى، يتم نشره على <appname>.azurewebsited.net/<customWarName>
.
مكدس وقت التشغيل
string
. اختياري. استخدم عند appType = webAppLinux
.
يوفر تطبيق الويب على Linux خيارين مختلفين لنشر التطبيق الخاص بك: نشر الصور المخصصة (تطبيق ويب للحاويات) ونشر التطبيق مع صورة النظام الأساسي المضمنة (تطبيق الويب على Linux). تتوفر هذه المعلمة فقط عند تحديد Linux Web App كنوع تطبيق في المهمة.
أمر بدء تشغيل
string
. اختياري. استخدم عند appType = webAppLinux
.
تحديد أمر بدء التشغيل.
على سبيل المثال:
dotnet run
dotnet filename.dll.
customWebConfig
-
إنشاء معلمات web.config لتطبيقات Python Node.jsوGo وJava
string
. اختياري. استخدم عند appType != webAppLinux && package NotEndsWith .war
.
سيتم إنشاء web.config قياسي ونشره في Azure App Service إذا لم يكن التطبيق يحتوي على واحد. تختلف القيم في web.config استنادا إلى إطار عمل التطبيق، ويمكن تحريرها. على سبيل المثال، لتطبيق node.js، سيكون web.config ملف بدء تشغيل وقيم وحدة نمطية iis_node. ميزة التحرير هذه مخصصة فقط التي تم إنشاؤها web.config.
إعدادات تطبيق
string
.
حدد إعدادات تطبيق تطبيق الويب باستخدام بناء الجملة -key value
(على سبيل المثال: -Port 5000
-RequestTimeout 5000
-WEBSITE_TIME_ZONE
). إحاطة القيم التي تحتوي على مسافات في علامات اقتباس مزدوجة (على سبيل المثال: "Eastern Standard Time"
).
إعدادات تكوين
string
.
حدد إعدادات تكوين تطبيق الويب باستخدام -key value
بناء الجملة (على سبيل المثال: -phpVersion 5.6
-linuxFxVersion: node|6.11
). إحاطة القيم التي تحتوي على مسافات في علامات اقتباس مزدوجة.
أسلوب نشر
string
. مطلوب عند appType != webAppLinux && appType != "" && package NotEndsWith .war && package NotEndsWith .jar
. القيم المسموح بها: auto
(الكشف التلقائي)، zipDeploy
(توزيع Zip)، runFromPackage
(تشغيل من الحزمة). القيمة الافتراضية: auto
.
اختر أسلوب نشر للتطبيق. القيم المقبولة هي التلقائيzipDeploy runFromPackage.
خيارات التحكم بالمهمة
تحتوي جميع المهام على خيارات التحكم بالإضافة إلى مدخلات المهام الخاصة بها. لمزيد من المعلومات، راجع خيارات التحكم وخصائص المهمة الشائعة.
متغيرات الإخراج
تحدد هذه المهمة متغيرات الإخراج التالية، والتي يمكنك استهلاكها في خطوات انتقال البيانات من الخادم والمهام والمراحل.
AppServiceApplicationUrl
عنوان URL للتطبيق لخدمة تطبيقات Azure المحددة.
ملاحظات
استخدم هذه المهمة لنشر تطبيقات الويب إلى Azure App Service.
أساليب النشر
تتوفر العديد من أساليب النشر في هذه المهمة.
Auto
هو الخيار الافتراضي.
لتغيير خيار النشر المستند إلى الحزمة في مهمة المصمم، قم بتوسيع خيارات النشر الإضافية وتمكين حدد أسلوب النشر.
استنادا إلى نوع Azure App Service وعامل Azure Pipelines، تختار المهمة تقنية توزيع مناسبة. تقنيات النشر المختلفة التي تستخدمها المهمة هي:
- واجهات برمجة تطبيقات Kudu REST
- توزيع Zip
- RunFromPackage
بشكل افتراضي، تحاول المهمة تحديد تقنية التوزيع المناسبة نظرا لحزمة الإدخال ونوع خدمة التطبيق ونظام تشغيل العامل.
- عندما يكون نوع خدمة التطبيق هو تطبيق ويب على تطبيق Linux، استخدم Zip Deploy
- إذا تم توفير ملف War، فاستخدم
War Deploy - إذا تم توفير ملف Jar، فاستخدم Run From Package
- لجميع الآخرين، استخدم تشغيل من Zip (عبر توزيع Zip)
على عامل غير Windows (لأي نوع خدمة تطبيق)، تعتمد المهمة على واجهات برمجة تطبيقات Kudu REST لنشر تطبيق الويب.
واجهات برمجة تطبيقات Kudu REST
تعمل واجهات برمجة تطبيقات Kudu REST على عوامل التشغيل التلقائي ل Windows أو Linux عندما يكون الهدف تطبيق ويب على Windows أو Web App على Linux (مصدر مضمن) أو Function App. تستخدم المهمة Kudu لنسخ الملفات إلى Azure App Service.
توزيع Zip
إنشاء حزمة نشر .zip للحزمة أو المجلد المختار. ثم يتم نشر محتويات الملف إلى مجلد wwwroot لتطبيق الوظائف في Azure App Service. يقوم هذا الخيار بالكتابة فوق كافة المحتويات الموجودة في مجلد wwwroot. لمزيد من المعلومات، راجع توزيع Zip لوظائف Azure.
RunFromPackage
إنشاء حزمة النشر نفسها مثل نشر Zip. ومع ذلك، بدلا من نشر الملفات إلى المجلد wwwroot، يتم تحميل الحزمة بأكملها بواسطة وقت تشغيل Azure Functions. باستخدام هذا الخيار، تصبح الملفات الموجودة في مجلد wwwroot للقراءة فقط. لمزيد من المعلومات، راجع تشغيل وظائف Azure من ملف حزمة.
خطأ: تعذر إحضار رمز الوصول المميز ل Azure. تحقق مما إذا كان كيان الخدمة المستخدم صالحا ولم تنته صلاحيته.
تستخدم المهمة كيان الخدمة في اتصال الخدمة للمصادقة مع Azure. إذا انتهت صلاحية كيان الخدمة أو لم يكن لديه أذونات ل App Service، تفشل المهمة مع هذا الخطأ. تحقق من صحة كيان الخدمة المستخدم وأنه موجود في تسجيل التطبيق. لمزيد من المعلومات، راجع استخدام التحكم في الوصول المستند إلى الدور لإدارة الوصول إلى موارد اشتراك Azure. يحتوي منشور المدونة هذا أيضا على مزيد من المعلومات حول استخدام المصادقة الأساسية للخدمة.
خطأ SSL
إذا كنت ترغب في استخدام شهادة في App Service، يجب أن يتم توقيع الشهادة من قبل مرجع مصدق موثوق به. إذا كان تطبيق الويب الخاص بك يمنحك أخطاء التحقق من صحة الشهادة، فمن المحتمل أنك تستخدم شهادة موقعة ذاتيا. قم بتعيين متغير يسمى VSTS_ARM_REST_IGNORE_SSL_ERRORS
إلى القيمة true
في البنية الأساسية لبرنامج ربط العمليات التجارية للبناء أو الإصدار لحل الخطأ.
يتوقف الإصدار لفترة طويلة ثم يفشل
قد تكون هذه المشكلة نتيجة لعدم كفاية السعة في خطة App Service. لحل هذه المشكلة، يمكنك توسيع نطاق مثيل App Service لزيادة وحدة المعالجة المركزية وذاكرة الوصول العشوائي ومساحة القرص المتوفرة أو محاولة استخدام خطة App Service مختلفة.
5xx رموز الخطأ
إذا كنت ترى خطأ 5xx، تحقق من حالة خدمة Azure.
توقفت وظيفة Azure فجأة عن العمل
قد تتوقف Azure Functions فجأة عن العمل إذا مر أكثر من عام واحد منذ آخر نشر. إذا قمت بالنشر باستخدام "RunFromPackage" في "deploymentMethod"، يتم إنشاء SAS بتاريخ انتهاء صلاحية لمدة سنة واحدة وتعيينه كقيمة "WEBSITE_RUN_FROM_PACKAGE" في تكوين التطبيق. تستخدم Azure Functions SAS هذا للإشارة إلى ملف الحزمة لتنفيذ الدالة، لذلك إذا انتهت صلاحية SAS، فلن يتم تنفيذ الدالة. لحل هذه المشكلة، قم بالنشر مرة أخرى لإنشاء SAS بتاريخ انتهاء صلاحية لمدة سنة واحدة.
خطأ: لم يتم العثور على حزمة ذات نمط محدد
تحقق مما إذا كانت الحزمة المذكورة في المهمة منشورة كأداة في البنية أو مرحلة سابقة وتنزيلها في المهمة الحالية.
خطأ: خيار النشر باستخدام توزيع zip غير مدعوم لنوع حزمة msBuild
تحتوي حزم الويب التي تم إنشاؤها عبر مهمة MSBuild (مع الوسيطات الافتراضية) على بنية مجلد متداخلة يمكن نشرها بشكل صحيح فقط بواسطة Web Deploy. لا يمكن استخدام خيار النشر إلى الرمز البريدي لنشر هذه الحزم. لتحويل بنية التعبئة والتغليف، اتبع الخطوات التالية:
في مهمة إنشاء الحل، قم بتغيير وسائط
MSBuild إلى : إضافة مهمة أرشفة وتغيير القيم كما يلي:
قم بتغيير المجلد أو الملف الجذر لأرشفة إلى
$(System.DefaultWorkingDirectory)\\WebAppContent
.قم بإلغاء تحديد خانة الاختيار اسم المجلد الجذر Prepend لأرشفة المسارات:
الأسئلة المتداولة
ما الفرق بين المهام AzureWebApp
والمهام AzureRmWebAppDeployment
؟
مهمة
يمكن لمهمة Azure App Service Deploy (AzureRmWebAppDeployment
) معالجة المزيد من السيناريوهات المخصصة، مثل:
- تعديل إعدادات التكوين داخل حزم الويب وملفات معلمات XML.
- Deploy with Web Deploy، إذا كنت معتادا على عملية توزيع IIS.
- Deploy to virtual applications.
- النشر إلى أنواع التطبيقات الأخرى، مثل تطبيقات الحاوية أو تطبيقات الوظائف أو WebJobs أو تطبيقات API وتطبيقات الأجهزة المحمولة.
ملاحظه
يتم أيضا دعم تحويلات الملفات واستبدال المتغيرات بواسطة مهمة تحويل ملف
نشر تطبيق الويب على Windows ناجح ولكن التطبيق لا يعمل
قد يرجع ذلك إلى عدم وجود web.config في تطبيقك. يمكنك إما إضافة ملف web.config إلى المصدر أو إنشاء ملف تلقائي باستخدام إعدادات التطبيق والتكوين.
انقر فوق المهمة وانتقل إلى إنشاء معلمات web.config لتطبيقات Python Node.jsوGo وJava.
انقر فوق الزر المزيد
...
لتحرير المعلمات.حدد نوع التطبيق الخاص بك من القائمة المنسدلة.
انقر فوق موافق. سيؤدي ذلك إلى ملء المعلمات web.config المطلوبة لإنشاء web.config.
لا يعمل نشر تطبيق الويب على بيئة خدمة التطبيقات (ASE)
- تأكد من أن عامل بناء Azure DevOps موجود على نفس VNET (يمكن أن تكون الشبكة الفرعية مختلفة) مثل موازن التحميل الداخلي (ILB) ل ASE. سيمكن هذا العامل من سحب التعليمات البرمجية من Azure DevOps والنشر إلى ASE.
- إذا كنت تستخدم Azure DevOps، فلا يحتاج العامل إلى الوصول إليه من الإنترنت ولكنه يحتاج فقط إلى الوصول الصادر للاتصال بخدمة Azure DevOps.
- إذا كنت تستخدم خادم TFS/Azure DevOps الموزع في شبكة ظاهرية، يمكن عزل العامل تماما.
- يجب تكوين عامل الإنشاء مع تكوين DNS لتطبيق الويب الذي يحتاج إلى النشر إليه. لا تحتوي الموارد الخاصة في الشبكة الظاهرية على إدخالات في Azure DNS، لذلك يجب إضافة هذا إلى ملف المضيف على جهاز العامل.
- إذا تم استخدام شهادة موقعة ذاتيا لتكوين ASE، يجب تعيين خيار
-allowUntrusted
في مهمة التوزيع ل MSDeploy. يوصى أيضا بتعيينVSTS_ARM_REST_IGNORE_SSL_ERRORS
المتغير إلىtrue
. إذا تم استخدام شهادة من مرجع مصدق لتكوين ASE، يجب ألا يكون ذلك ضروريا.
كيف يجب تكوين اتصال الخدمة؟
تتطلب هذه المهمة اتصال خدمة Azure Resource Manager .
كيف يجب تكوين نشر مهمة الويب باستخدام Application Insights؟
عند النشر إلى App Service، إذا كان لديك Application Insights تكوينه وقمت بتمكين Remove additional files at destination
، فستحتاج أيضا إلى تمكين Exclude files from the App_Data folder
. يؤدي تمكين هذا الخيار إلى الحفاظ على ملحق Application Insights في حالة آمنة. هذه الخطوة مطلوبة لأن WebJob المستمر Application Insights مثبت في مجلد App_Data.
كيف يجب تكوين وكيلي إذا كان خلف وكيل أثناء النشر إلى App Service؟
إذا كان الوكيل المستضاف ذاتيا يتطلب وكيل ويب، يمكنك إبلاغ الوكيل عن الوكيل أثناء التكوين. يسمح القيام بذلك لعاملك بالاتصال ب Azure Pipelines أو Azure DevOps Server من خلال الوكيل. تعرف على المزيد حول تشغيل عامل مستضاف ذاتيا خلف وكيل ويب.
امثله
فيما يلي مثال على مقتطف YAML لنشر تطبيق ويب إلى Azure Web App Service التي تعمل على Windows.
variables:
azureSubscription: Contoso
# To ignore SSL error uncomment the below variable
# VSTS_ARM_REST_IGNORE_SSL_ERRORS: true
steps:
- task: AzureWebApp@1
displayName: Azure Web App Deploy
inputs:
azureSubscription: $(azureSubscription)
appName: samplewebapp
package: $(System.DefaultWorkingDirectory)/**/*.zip
لنشر Web App على Linux، أضف المعلمة appType
وقم بتعيينها إلى appType: webAppLinux
.
لتحديد أسلوب النشر ك Zip Deploy، أضف المعلمة deploymentMethod: zipDeploy
. قيمة أخرى مدعومة لهذه المعلمة هي runFromPackage
.
إذا لم يتم تحديدها، auto
هي القيمة الافتراضية.
المتطلبات
احتياج | وصف |
---|---|
أنواع البنية الأساسية لبرنامج ربط العمليات التجارية | YAML، الإصدار الكلاسيكي، الإصدار الكلاسيكي |
يعمل على | Agent, DeploymentGroup |
متطلبات |
اي |
قدرات |
لا تفي هذه المهمة بأي طلبات للمهام اللاحقة في الوظيفة. |
قيود الأمر |
أي |
متغيرات Settable | أي |
إصدار العامل | 2.209.0 أو أحدث |
فئة المهمة | نشر |
احتياج | وصف |
---|---|
أنواع البنية الأساسية لبرنامج ربط العمليات التجارية | YAML، الإصدار الكلاسيكي، الإصدار الكلاسيكي |
يعمل على | Agent, DeploymentGroup |
متطلبات |
اي |
قدرات |
لا تفي هذه المهمة بأي طلبات للمهام اللاحقة في الوظيفة. |
قيود الأمر |
أي |
متغيرات Settable | أي |
إصدار العامل | 2.104.1 أو أحدث |
فئة المهمة | نشر |