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.

الإدخالات

azureSubscription - اشتراك Azure
string. مطلوب

يحدد اتصال اشتراك Azure Resource Manager للتوزيع.


appType - نوع التطبيق
string. مطلوب القيم المسموح بها: webApp (Web App على Windows)، webAppLinux (Web App على Linux).

يحدد نوع Azure Web App.


appName - اسم التطبيق
string. مطلوب

يحدد اسم خدمة تطبيقات Azure الموجودة. سيتم سرد خدمات التطبيقات التي تستند إلى نوع التطبيق المحدد فقط.


deployToSlotOrASE - التوزيع إلى Slot أو App Service Environment
boolean. ‏‏اختياري. استخدم عندما appType != "". القيمة الافتراضية: false.

تحديد خيار التوزيع إلى فتحة توزيع موجودة أو بيئة خدمة تطبيقات Azure.
لكلا الهدفين، تحتاج المهمة إلى اسم مجموعة موارد.
إذا كان هدف التوزيع عبارة عن فتحة، فإن الإعداد الافتراضي هو فتحة الإنتاج. يمكن أيضا توفير أي اسم فتحة موجود آخر.
إذا كان هدف التوزيع هو Azure App Service Environment، فاترك اسم الفتحة على أنه "إنتاج"، وحدد اسم مجموعة الموارد.


resourceGroupName - مجموعة الموارد
string. مطلوب عند deployToSlotOrASE = true.

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


slotName - فتحه
string. مطلوب عند deployToSlotOrASE = true. القيمة الافتراضية: production.

يحدد فتحة موجودة، باستثناء فتحة الإنتاج.


package - الحزمة أو المجلد
string. مطلوب القيمة الافتراضية: $(System.DefaultWorkingDirectory)/**/*.zip.

مسار الملف إلى الحزمة أو المجلد الذي يحتوي على محتوى App Service الذي تم إنشاؤه بواسطة MSBuild أو ملف مضغوط مضغوط أو ملف حرب. المتغيرات (إصدار البناء | ) وأحرف البدل مدعومة. على سبيل المثال، $(System.DefaultWorkingDirectory)/**/*.zip أو $(System.DefaultWorkingDirectory)/**/*.war.


customDeployFolder - مجلد التوزيع المخصص
string. ‏‏اختياري. استخدم عندما package EndsWith .war.

يحدد اسم المجلد المخصص الذي تريد النشر إليه.
إذا كان الحقل فارغا، يتم نشر الحزمة إلى <appname>.azurewebsites.net/<warpackagename>.
إذا تم إدخال ROOT، يتم نشر الحزمة إلى <appname>.azurewebsited.net.
في جميع الحالات الأخرى، يتم توزيعه إلى <appname>.azurewebsited.net/<customWarName>.


runtimeStack - مكدس وقت التشغيل
string. ‏‏اختياري. استخدم عندما appType = webAppLinux.

يوفر تطبيق الويب على Linux خيارين مختلفين لنشر التطبيق الخاص بك: نشر الصور المخصصة (تطبيق الويب للحاويات) ونشر التطبيق مع صورة النظام الأساسي المضمنة (تطبيق الويب على Linux). تتوفر هذه المعلمة فقط عند تحديد Linux Web App كنوع تطبيق في المهمة.


startUpCommand - أمر بدء التشغيل
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التي تم إنشاؤها .


appSettings - إعدادات التطبيق
string.

حدد إعدادات تطبيق الويب باستخدام بناء الجملة -key value (على سبيل المثال:-RequestTimeout 5000-Port 5000-WEBSITE_TIME_ZONE ). قم بإحاطة القيم التي تحتوي على مسافات في علامات اقتباس مزدوجة (على سبيل المثال: "Eastern Standard Time").


configurationStrings - إعدادات التكوين
string.

حدد إعدادات تكوين تطبيق الويب باستخدام بناء الجملة -key value (على سبيل المثال: -phpVersion 5.6-linuxFxVersion: node|6.11). قم بإحاطة القيم التي تحتوي على مسافات في علامات اقتباس مزدوجة.


deploymentMethod - أسلوب التوزيع
string. مطلوب عند appType != webAppLinux && appType != "" && package NotEndsWith .war && package NotEndsWith .jar. القيم المسموح بها: auto (الكشف التلقائي)، zipDeploy (توزيع Zip)، runFromPackage (تشغيل من الحزمة). القيمة الافتراضية: auto.

اختر طريقة التوزيع للتطبيق. القيم المقبولة هي auto و zipDeploy و runFromPackage.


خيارات التحكم بالمهمة

تحتوي جميع المهام على خيارات التحكم بالإضافة إلى مدخلات المهام الخاصة بها. لمزيد من المعلومات، راجع خيارات التحكم وخصائص المهمة الشائعة.

متغيرات الإخراج

تحدد هذه المهمة متغيرات الإخراج التالية، والتي يمكنك استهلاكها في خطوات انتقال البيانات من الخادم والوظائف والمراحل.

AppServiceApplicationUrl
عنوان URL للتطبيق لخدمة تطبيقات Azure المحددة.

الملاحظات

استخدم هذه المهمة لنشر تطبيقات الويب إلى Azure App Service.

أساليب التوزيع

تتوفر العديد من أساليب التوزيع في هذه المهمة. Auto هو الخيار الافتراضي.

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

استنادا إلى نوع Azure App Service وعامل Azure Pipelines، تختار المهمة تقنية توزيع مناسبة. تقنيات التوزيع المختلفة التي تستخدمها المهمة هي:

  • واجهات برمجة تطبيقات Kudu REST
  • نشر Zip
  • RunFromPackage

بشكل افتراضي، تحاول المهمة تحديد تقنية التوزيع المناسبة نظرا لحزمة الإدخال ونوع خدمة التطبيق ونظام تشغيل العامل.

  • عندما يكون نوع خدمة التطبيق هو Web App على Linux App، استخدم Zip Deploy
  • إذا تم توفير ملف War، فاستخدم War Deploy
  • إذا تم توفير ملف Jar، فاستخدم Run From Package
  • لجميع الآخرين، استخدم Run From Zip (عبر Zip Deploy)

على عامل غير Windows (لأي نوع خدمة تطبيق)، تعتمد المهمة على واجهات برمجة تطبيقات Kudu REST لنشر تطبيق الويب.

واجهات برمجة تطبيقات Kudu REST

تعمل واجهات برمجة تطبيقات Kudu REST على عوامل التشغيل التلقائي ل Windows أو Linux عندما يكون الهدف هو Web App على Windows أو Web App على Linux (المصدر المضمن) أو Function App. تستخدم المهمة Kudu لنسخ الملفات إلى Azure App Service.

نشر Zip

إنشاء حزمة توزيع .zip للحزمة أو المجلد المختار. ثم يتم نشر محتويات الملف إلى مجلد wwwroot لتطبيق الوظائف في Azure App Service. يقوم هذا الخيار بالكتابة فوق كافة المحتويات الموجودة في مجلد wwwroot. لمزيد من المعلومات، راجع توزيع Zip ل Azure Functions.

RunFromPackage

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

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

تستخدم المهمة كيان الخدمة في اتصال الخدمة للمصادقة مع Azure. إذا انتهت صلاحية كيان الخدمة أو لم يكن لديه أذونات لخدمة التطبيقات، تفشل المهمة مع هذا الخطأ. تحقق من صحة كيان الخدمة المستخدم وأنه موجود في تسجيل التطبيق. لمزيد من المعلومات، راجع استخدام التحكم في الوصول المستند إلى الدور لإدارة الوصول إلى موارد اشتراك 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 deploy غير مدعوم لنوع حزمة msBuild

تحتوي حزم الويب التي تم إنشاؤها عبر مهمة MSBuild (باستخدام الوسيطات الافتراضية) على بنية مجلد متداخلة يمكن نشرها بشكل صحيح فقط بواسطة Web Deploy. لا يمكن استخدام خيار النشر من النشر إلى الرمز البريدي لنشر هذه الحزم. لتحويل بنية التعبئة والتغليف، اتبع الخطوات التالية:

  1. في مهمة إنشاء الحل، قم بتغيير وسيطات MSBuild إلى /p:DeployOnBuild=true /p:DeployDefaultTarget=WebPublish /p:WebPublishMethod=FileSystem /p:DeleteExistingFiles=True /p:publishUrl="$(System.DefaultWorkingDirectory)\\WebAppContent":

    لقطة شاشة تعرض قيم حل البناء.

  2. إضافة مهمة أرشفة وتغيير القيم كما يلي:

    1. قم بتغيير المجلد الجذر أو الملف للأرشفة إلى $(System.DefaultWorkingDirectory)\\WebAppContent.

    2. قم بإلغاء تحديد خانة الاختيار اسم المجلد الجذر Prepend لأرشفة المسارات :

      لقطة شاشة تعرض قيم الأرشيف.

‏‫الأسئلة المتداولة

ما الفرق بين AzureWebApp المهام و AzureRmWebAppDeployment ؟

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

يمكن لمهمة Azure App Service Deploy (AzureRmWebAppDeployment) معالجة المزيد من السيناريوهات المخصصة، مثل:

ملاحظة

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

توزيع تطبيق الويب على Windows ناجح ولكن التطبيق لا يعمل

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

  • انقر فوق المهمة وانتقل إلى إنشاء معلمات web.config لتطبيقات Python Node.js وGo وJava.

    لقطة شاشة لمربع حوار إنشاء معلمات web.config.

  • انقر فوق الزر ... المزيد لتحرير المعلمات.

    لقطة شاشة لمربع الحوار المنسدلة.

  • حدد نوع التطبيق الخاص بك من القائمة المنسدلة.

  • انقر فوق OK. سيؤدي ذلك إلى ملء المعلمات web.config المطلوبة لإنشاء web.config.

لا يعمل نشر تطبيق الويب على App Service Environment (ASE)

  • تأكد من أن عامل إنشاء Azure DevOps موجود على نفس VNET (يمكن أن تكون الشبكة الفرعية مختلفة) مثل موازن التحميل الداخلي (ILB) ل ASE. سيمكن هذا العامل من سحب التعليمات البرمجية من Azure DevOps ونشرها في ASE.
  • إذا كنت تستخدم Azure DevOps، فلن يحتاج العامل إلى الوصول إليه من الإنترنت ولكنه يحتاج فقط إلى الوصول الصادر للاتصال بخدمة Azure DevOps.
  • إذا كنت تستخدم TFS/Azure DevOps Server تم توزيعه في شبكة ظاهرية، يمكن عزل العامل تماما.
  • يجب تكوين عامل البناء مع تكوين 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.104.1 أو أحدث
فئة المهمة نشر