AzureFunctionApp@2 - مهمة Azure Functions Deploy v2

تحديث تطبيق دالة باستخدام تطبيقات الويب المستندة إلى .NET وPython وJavaScript وPowerShell وJava.

بناء الجملة

# Azure Functions Deploy v2
# Update a function app with .NET, Python, JavaScript, PowerShell, Java based web applications.
- task: AzureFunctionApp@2
  inputs:
    connectedServiceNameARM: # string. Alias: azureSubscription. Required. Azure Resource Manager connection. 
    appType: # 'functionApp' | 'functionAppLinux'. Required. App type. 
    appName: # string. Required. Azure Functions 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: # 'DOTNET|6.0' | 'DOTNET-ISOLATED|6.0' | 'DOTNET-ISOLATED|7.0' | 'DOTNET-ISOLATED|8.0' | 'JAVA|8' | 'JAVA|11' | 'JAVA|17' | 'JAVA|21' | 'NODE|14' | 'NODE|16' | 'NODE|18' | 'NODE|20' | 'PYTHON|3.8' | 'PYTHON|3.9' | 'PYTHON|3.10' | 'PYTHON|3.11'. Optional. Use when appType = functionAppLinux. Runtime stack. 
  # Application and Configuration Settings
    #appSettings: # string. App settings. 
  # Additional Deployment Options
    #deploymentMethod: 'auto' # 'auto' | 'zipDeploy' | 'runFromPackage'. Required when appType != "" && package NotEndsWith .war && Package NotEndsWith .jar. Deployment method. Default: auto.
# Azure Functions Deploy v2
# Update a function app with .NET, Python, JavaScript, PowerShell, Java based web applications.
- task: AzureFunctionApp@2
  inputs:
    connectedServiceNameARM: # string. Alias: azureSubscription. Required. Azure Resource Manager connection. 
    appType: # 'functionApp' | 'functionAppLinux'. Required. App type. 
    appName: # string. Required. Azure Functions 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: # 'DOTNET|2.2' | 'DOTNET|3.1' | 'DOTNET|6.0' | 'DOTNET-ISOLATED|7.0' | 'JAVA|8' | 'JAVA|11' | 'NODE|8' | 'NODE|10' | 'NODE|12' | 'NODE|14' | 'NODE|16' | 'NODE|18' | 'PYTHON|3.6' | 'PYTHON|3.7' | 'PYTHON|3.8' | 'PYTHON|3.9' | 'PYTHON|3.10'. Optional. Use when appType = functionAppLinux. Runtime stack. 
  # Application and Configuration Settings
    #appSettings: # string. App settings. 
  # Additional Deployment Options
    #deploymentMethod: 'auto' # 'auto' | 'zipDeploy' | 'runFromPackage'. Required when appType != "" && package NotEndsWith .war && Package NotEndsWith .jar. Deployment method. Default: auto.

الإدخالات

connectedServiceNameARM - اتصال Azure Resource Manager
الاسم المستعار للإدخل: azureSubscription. string. مطلوب

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


appType - نوع التطبيق
string. مطلوب القيم المسموح بها: functionApp (تطبيق الوظائف على Windows)، functionAppLinux (تطبيق الوظائف على Linux).

حدد نوع Azure Function App للتوزيع.


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

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


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

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

إذا كان هدف التوزيع عبارة عن فتحة، فسيتم تعيينه افتراضيا على فتحة الإنتاج . يمكن أيضا توفير أي اسم فتحة موجود آخر.

إذا كان هدف التوزيع هو Azure App Service Environment، فاترك اسم الفتحة كتشغيل وحدد اسم مجموعة الموارد.


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

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

إدخال مجموعة موارد Azure التي تحتوي على Azure App Service المحددة أعلاه أو تحديدها.


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

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


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

أدخل أو حدد فتحة موجودة بخلاف فتحة الإنتاج.


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

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


runtimeStack - مكدس وقت التشغيل
string. ‏‏اختياري. استخدم عندما appType = functionAppLinux. القيم المسموح بها: DOTNET|6.0و DOTNET-ISOLATED|6.0و DOTNET-ISOLATED|7.0و DOTNET-ISOLATED|8.0و JAVA|8و و JAVA|11و JAVA|17و JAVA|21و NODE|14و و NODE|16و NODE|18وPYTHON|3.10PYTHON|3.11NODE|20PYTHON|3.8PYTHON|3.9.

حدد إطار العمل وإصدار تطبيق الوظائف الذي سيتم تشغيله. يمكنك استخدام أي من إصدارات وقت التشغيل المدعومة. يتم إهمال القيم القديمة مثل DOCKER|microsoft/azure-functions-* . يتم سرد قيم جديدة في القائمة المنسدلة في مساعد المهام. إذا كان هناك إصدار أحدث من إطار عمل متوفر في إصدارات وقت التشغيل المدعومة ، يمكنك تحديده حتى إذا لم يكن في القائمة.


runtimeStack - مكدس وقت التشغيل
string. ‏‏اختياري. استخدم عندما appType = functionAppLinux. القيم المسموح بها: DOTNET|2.2 (DOTNET|2.2 (functionapp v2))، DOTNET|3.1 (DOTNET|3.1 (functionapp v3))، DOTNET|6.0 (DOTNET|6.0 (functionapp v4))، DOTNET-ISOLATED|7.0 (DOTNET-ISOLATED|7.0 (functionapp v4))، JAVA|8 (JAVA|8 (functionapp v2/v3/v4))، JAVA|11 (JAVA|11 (JAVA|11 functionapp v3/v4))، NODE|8 (NODE|8 (functionapp v2))، NODE|10 (NODE|10 (functionapp v2/v3))، NODE|12 (NODE|12 (functionapp v3))، NODE|14 (NODE|14 (functionapp v3/v4))، NODE|16 (NODE|16 (functionapp v4))، NODE|18 (NODE|18 (functionapp v4))، PYTHON|3.6 (PYTHON|3.6 (functionapp v2/v3))، PYTHON|3.7 (PYTHON|3.7 (functionapp v2/v3/v4))، PYTHON|3.8 (PYTHON|3.78 (functionapp v3/v4))، PYTHON|3.9 (PYTHON|3.9 (functionapp v3/v4))، PYTHON|3.10 (PYTHON|3.10 (functionapp v3/v4)).

حدد إطار العمل وإصدار تطبيق الوظائف الذي سيتم تشغيله. يمكنك استخدام أي من إصدارات وقت التشغيل المدعومة. يتم إهمال القيم القديمة مثل DOCKER|microsoft/azure-functions-* . يتم سرد قيم جديدة في القائمة المنسدلة في مساعد المهام. إذا كان هناك إصدار أحدث من إطار عمل متوفر في إصدارات وقت التشغيل المدعومة ، يمكنك تحديده حتى إذا لم يكن في القائمة.


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

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


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

يحدد أسلوب التوزيع للتطبيق. لا تدعم تطبيقات Linux Consumption هذا التكوين.


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

اختيار طريقة التوزيع للتطبيق. لا تدعم تطبيقات استهلاك Linux هذا التكوين.s


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

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

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

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

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

الملاحظات

يتم استخدام مهمة Azure Function Deployment لتحديث Azure Functions لنشر Functions إلى Azure. تعمل المهمة على وكلاء Azure Pipelines عبر النظام الأساسي الذين يقومون بتشغيل Windows أو Linux أو Mac وتستخدم تقنيات التوزيع الأساسية ل RunFromPackage و Zip Deploy و Kudu REST APIs.

تعمل المهمة مع اللغات المدعومة من Azure Functions.

المتطلبات المسبقة للمهمة

يجب إعداد المتطلبات المسبقة التالية في الجهاز (الأجهزة) الهدف حتى تعمل المهمة بشكل صحيح.

Azure Function

يتم استخدام المهمة لتوزيع مشروع Azure Functions إلى دالة Azure موجودة. يجب أن يكون تطبيق Azure Function موجودا قبل تشغيل المهمة. يمكن إنشاء Azure Function App من مدخل Microsoft Azure. بدلا من ذلك، يمكن استخدام مهمة Azure PowerShell لتشغيل البرامج النصية AzureRM PowerShell لتوفير وتكوين تطبيق Azure Function.

يمكن استخدام المهمة لتوزيع Azure Functions (Windows/Linux).

اشتراك Azure

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

الإنشاء نقطة نهاية خدمة ARM واستخدم نوع نقطة نهاية Azure Resource Manager. لمزيد من التفاصيل، اتبع الخطوات المدرجة في الارتباط هنا.

لا تعمل المهمة مع نقطة نهاية خدمة Azure Classic ولن تسرد هذه الاتصالات في المعلمات في المهمة.

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

تتوفر عدة طرق نشر في هذه المهمة.

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

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

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

  • إذا تم توفير برنامج نصي لما بعد التوزيع، فاستخدم Zip Deploy.
  • إذا كان نوع App Service هو Web App على Linux، فاستخدم Zip Deploy.
  • إذا تم توفير ملف .war، فاستخدم War Deploy.
  • إذا تم توفير ملف .jar، فاستخدم Run-From-Zip.
  • بالنسبة لجميع المهام الأخرى، استخدم Run From Package (عبر Zip Deploy).

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

Kudu REST API

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

نشر Zip

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

تشغيل من الحزمة

يقوم Run From Package بإنشاء حزمة التوزيع نفسها مثل Zip Deploy. بدلا من نشر الملفات إلى مجلد wwwroot، يقوم وقت تشغيل الوظائف بتحميل الحزمة بأكملها. عند استخدام هذا الخيار، تصبح الملفات الموجودة في مجلد 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 Function فجأة عن العمل

قد تتوقف Azure Functions فجأة عن العمل إذا مرت أكثر من سنة واحدة منذ التوزيع الأخير. إذا قمت بالتوزيع باستخدام "RunFromPackage" في "deploymentMethod"، يتم إنشاء SAS بتاريخ انتهاء صلاحية لمدة سنة واحدة وتعيينه كقيمة "WEBSITE_RUN_FROM_PACKAGE" في تكوين التطبيق. تستخدم Azure Functions SAS هذا للإشارة إلى ملف الحزمة لتنفيذ الدالة، لذلك إذا انتهت صلاحية SAS، فلن يتم تنفيذ الدالة. لحل هذه المشكلة، قم بالنشر مرة أخرى لإنشاء SAS بتاريخ انتهاء صلاحية لمدة عام واحد.

خطأ: لم يتم العثور على حزمة بنمط محدد

تحقق مما إذا كانت الحزمة المذكورة في المهمة منشورة كقطعة اصطناعية في البنية أو مرحلة سابقة وتم تنزيلها في الوظيفة الحالية.

خطأ: خيار النشر باستخدام التوزيع المضغوط غير مدعوم لنوع حزمة 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 لأرشفة المسارات :

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

ينجح نشر تطبيق الوظائف على Windows ولكن التطبيق لا يعمل

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

  1. حدد المهمة وانتقل إلى إنشاء معلمات web.config لتطبيقات Python Node.js وGo وJava:

    لقطة شاشة تعرض قسم إنشاء معلمات web.config.

  2. حدد الزر المزيد (...) ضمن إنشاء معلمات web.config لتطبيقات Python Node.js وGo وJava لتحرير المعلمات:

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

  3. حدد نوع التطبيق الخاص بك في قائمة إطار عمل التطبيق .

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

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

كيف يجب تكوين اتصال الخدمة الخاص بي؟

تتطلب هذه المهمة اتصال خدمة 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 من خلال الوكيل. تعرف على المزيد حول تشغيل عامل مستضاف ذاتيا خلف وكيل ويب.

لا يمكنني النشر إلى App Service Environment داخلي باستخدام اتصال خدمة Azure Resource Manager وعامل مستضاف من Microsoft

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

أمثلة

فيما يلي عينة من مقتطف YAML الذي ينشر وظائف Azure على Windows:


variables:
  azureSubscription: Contoso
  # To ignore SSL error, uncomment the below variable
  # VSTS_ARM_REST_IGNORE_SSL_ERRORS: true

steps:
- task: AzureFunctionApp@2
  displayName: Azure Function App Deploy
  inputs:
    azureSubscription: $(azureSubscription)
    appName: samplefunctionapp
    appType: functionApp
    package: $(System.DefaultWorkingDirectory)/**/*.zip

لنشر دالة على Linux، أضف المعلمة appType وقم بتعيينها إلى appType: functionAppLinux. إذا لم تحدد قيمة، functionApp فهذا هو القيمة الافتراضية.

لتحديد طريقة النشر بشكل صريح على أنها Zip Deploy، أضف المعلمة deploymentMethod: zipDeploy. قيمة أخرى مدعومة لهذه المعلمة هي runFromPackage. إذا لم تحدد قيمة، auto فهذا هو القيمة الافتراضية.

للحصول على معاينة توضح كيفية إنشاء مسار CI/CD، راجع إنشاء Java ونشرها في Azure Functions.

المتطلبات

المتطلبات الوصف
أنواع البنية الأساسية لبرنامج ربط العمليات التجارية YAML، الإصدار الكلاسيكي، الإصدار الكلاسيكي
يعمل على Agent, DeploymentGroup
المطالب بلا
القدرات لا تفي هذه المهمة بأي طلبات للمهام اللاحقة في الوظيفة.
قيود الأوامر أي
متغيرات Settable أي
إصدار الوكيل 2.104.1 أو أحدث
فئة المهمة نشر