إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
استخدم Azure Pipelines لنشر مشروع التعليمات البرمجية تلقائيا إلى تطبيق دالة في Azure. يتيح لك Azure Pipelines الإنشاء والاختبار والنشر باستخدام التكامل المستمر (CI) والتسليم المستمر (CD) باستخدام Azure DevOps.
بنيات YAML الأساسية لبرنامج ربط العمليات التجارية يتم تعريفها باستخدام ملف YAML في مستودعك. الخطوة هي أصغر كتلة بناء للبنية الأساسية لبرنامج ربط العمليات التجارية ويمكن أن تكون نصا أو مهمة (برنامج نصي معبأة مسبقا). تعرف على المفاهيم والمكونات الرئيسية التي تشكل البنية الأساسية لبرنامج ربط العمليات التجارية.
يمكنك استخدام المهمة AzureFunctionApp لنشر التعليمات البرمجية الخاصة بك. يوجد الآن نسختان من AzureFunctionApp، تمت مقارنتهما في هذا الجدول:
| مقارنة / إصدار | AzureFunctionApp@2 | AzureFunctionApp@1 |
|---|---|---|
| يدعم خطة الاستهلاك المرن | ✔ | ❌ |
| يتضمن دعم التحقق المحسن* | ✔ | ❌ |
| متى تستخدم... | موصى به لعمليات نشر التطبيقات الجديدة | يتم الحفاظ عليها لعمليات النشر القديمة |
* يجعل دعم التحقق المحسن من صحة المسارات أقل عرضة لفشل المسارات بسبب الأخطاء.
اختر إصدار المهمة في أعلى المقالة.
إشعار
قم بالترقية من AzureFunctionApp@1 إلى AzureFunctionApp@2 للوصول إلى الميزات الجديدة والدعم طويل الأمد.
المتطلبات الأساسية
مؤسسة Azure DevOps إذا لم يكن لديك مثل هذا الحساب، فيمكنك إنشاء واحد مجانًا. إذا كان فريقك لديه حساب بالفعل، فتأكد من أنك أنت المسؤول عن مشروع Azure DevOps الذي تريد استخدامه.
القدرة على تشغيل البنية الأساسية لبرنامج ربط العمليات التجارية على العوامل المستضافة من Microsoft. يمكنك إما شراء وظيفة موازية أو يمكنك طلب مستوى مجاني.
إذا كنت تخطط لاستخدام GitHub بدلا من Azure Repos، فأنت بحاجة أيضا إلى مستودع GitHub. إذا لم يكن لديك حساب GitHub، يمكنك إنشاء حساب مجانا.
تطبيق دالة موجود في Azure يحتوي على التعليمات البرمجية المصدر الخاصة به في مستودع مدعوم. إذا لم يكن لديك بعد مشروع تعليمة برمجية ل Azure Functions، يمكنك إنشاء مشروع عن طريق إكمال المقالة التالية الخاصة باللغة:
تذكر تحميل مشروع التعليمات البرمجية المحلية إلى مستودع GitHub أو Azure Repos بعد نشره إلى تطبيق الوظائف الخاص بك.
بناء تطبيقك
- سجل الدخول إلى مؤسسة Azure DevOps، وانتقل إلى مشروعك.
- في مشروعك، انتقل إلى صفحة Pipelines . ثم اختر الإجراء لإنشاء خط أنابيب جديد.
- اطلع على خطوات المعالج عن طريق تحديد GitHub أولا كموقع للتعليمات البرمجية المصدر.
- قد تتم إعادة توجيهك إلى GitHub لتسجيل الدخول. إذا كان الأمر كذلك، فأدخل بيانات اعتماد GitHub.
- عند ظهور قائمة المستودعات، حدد نموذج مستودع التطبيق.
- ستقوم Azure pipelines بتحليل المستودع الخاص بك، والتوصية بقالب. حدد حفظ وتشغيل، ثم حدد الالتزام مباشرة بالفرع الرئيسي، ثم اختر حفظ وتشغيل مرة أخرى.
- تم بدء تشغيل جديد. انتظر حتى تنتهي عملية التشغيل.
مثال على مسارات بناء YAML
يمكن استخدام البنيات الأساسية لبرنامج ربط العمليات التجارية المحددة اللغة التالية لإنشاء التطبيقات.
يمكنك استخدام النموذج التالي لإنشاء ملف YAML لإنشاء تطبيق .NET:
pool:
vmImage: 'windows-latest'
steps:
- task: UseDotNet@2
displayName: 'Install .NET 8.0 SDK'
inputs:
packageType: 'sdk'
version: '8.0.x'
installationPath: $(Agent.ToolsDirectory)/dotnet
- script: |
dotnet restore
dotnet build --configuration Release
- task: DotNetCoreCLI@2
displayName: 'dotnet publish'
inputs:
command: publish
arguments: '--configuration Release --output $(System.DefaultWorkingDirectory)/publish_output'
projects: 'csharp/*.csproj'
publishWebProjects: false
modifyOutputPath: false
zipAfterPublish: false
- task: ArchiveFiles@2
displayName: "Archive files"
inputs:
rootFolderOrFile: "$(System.DefaultWorkingDirectory)/publish_output"
includeRootFolder: false
archiveFile: "$(System.DefaultWorkingDirectory)/build$(Build.BuildId).zip"
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(System.DefaultWorkingDirectory)/build$(Build.BuildId).zip'
artifactName: 'drop'
- سجل الدخول إلى مؤسسة Azure DevOps، وانتقل إلى مشروعك.
- في مشروعك، انتقل إلى صفحة Pipelines . ثم حدد مسار معالجة جديد.
- حدد أحد هذه الخيارات ل أين توجد التعليمات البرمجية الخاصة بك؟:
- GitHub: قد تتم إعادة توجيهك إلى GitHub لتسجيل الدخول. إذا كان الأمر كذلك، فأدخل بيانات اعتماد GitHub. عندما يكون هذا الاتصال هو أول اتصال GitHub، يرشدك المعالج أيضا خلال عملية توصيل DevOps بحسابات GitHub الخاصة بك.
- Azure Repos Git: يمكنك على الفور اختيار مستودع في مشروع DevOps الحالي.
- عند ظهور قائمة المستودعات، حدد نموذج مستودع التطبيق.
- تقوم Azure Pipelines بتحليل المستودع الخاص بك وفي تكوين البنية الأساسية لبرنامج ربط العمليات التجارية الخاصة بك يوفر قائمة بالقوالب المحتملة. اختر قالب تطبيق الوظائف المناسب للغتك. إذا لم تتمكن من رؤية القالب الصحيح، فحدد إظهار المزيد.
- حدد حفظ وتشغيل، ثم حدد الالتزام مباشرة بالفرع الرئيسي، ثم اختر حفظ وتشغيل مرة أخرى.
- تم بدء تشغيل جديد. انتظر حتى تنتهي عملية التشغيل.
مثال على مسارات بناء YAML
يمكن استخدام البنيات الأساسية لبرنامج ربط العمليات التجارية المحددة اللغة التالية لإنشاء التطبيقات.
يمكنك استخدام النموذج التالي لإنشاء ملف YAML لإنشاء تطبيق .NET.
إذا رأيت أخطاء عند إنشاء تطبيقك، فتحقق من أن إصدار .NET الذي تستخدمه يطابق إصدار Azure Functions. لمزيد من المعلومات، راجع نظرة عامة على إصدارات وقت تشغيل Azure Functions.
pool:
vmImage: 'windows-latest'
steps:
- task: UseDotNet@2
displayName: 'Install .NET 8.0 SDK'
inputs:
packageType: 'sdk'
version: '8.0.x'
installationPath: $(Agent.ToolsDirectory)/dotnet
- script: |
dotnet restore
dotnet build --configuration Release
- task: DotNetCoreCLI@2
displayName: 'dotnet publish'
inputs:
command: publish
arguments: '--configuration Release --output $(System.DefaultWorkingDirectory)/publish_output'
projects: 'csharp/*.csproj'
publishWebProjects: false
modifyOutputPath: false
zipAfterPublish: false
- task: ArchiveFiles@2
displayName: "Archive files"
inputs:
rootFolderOrFile: "$(System.DefaultWorkingDirectory)/publish_output"
includeRootFolder: false
archiveFile: "$(System.DefaultWorkingDirectory)/build$(Build.BuildId).zip"
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(System.DefaultWorkingDirectory)/build$(Build.BuildId).zip'
artifactName: 'drop'
نشر تطبيقك
ستقوم بالنشر مع مهمة Azure Function App Deploy v2 . هذه المهمة تتطلب اتصال خدمة Azure كمدخل. يخزن اتصال خدمة Azure بيانات الاعتماد للاتصال من Azure Pipelines إلى Azure. يجب إنشاء اتصال يستخدم اتحاد هوية حمل العمل.
للنشر إلى Azure Functions، أضف هذا القصاصة البرمجية في نهاية ملفك azure-pipelines.yml ، اعتمادا على ما إذا كان تطبيقك يعمل على Linux أو Windows:
trigger:
- main
variables:
# Azure service connection established during pipeline creation
azureSubscription: <Name of your Azure subscription>
appName: <Name of the function app>
# Agent VM image name
vmImageName: 'windows-latest'
- task: AzureFunctionApp@2 # Add this at the end of your file
inputs:
azureSubscription: <Name of your Azure subscription>
appType: functionApp # this specifies a Windows-based function app
appName: $(appName)
package: $(System.DefaultWorkingDirectory)/build$(Build.BuildId).zip
deploymentMethod: 'auto' # 'auto' | 'zipDeploy' | 'runFromPackage'. Required. Deployment method. Default: auto.
#Uncomment the next lines to deploy to a deployment slot
#Note that deployment slots is not supported for Linux Dynamic SKU
#deployToSlotOrASE: true
#resourceGroupName: '<RESOURCE_GROUP>'
#slotName: '<SLOT_NAME>'
الافتراضي appType هو Windows (functionApp). يمكنك تحديد Linux عن طريق تعيين appType إلى functionAppLinux. يعمل تطبيق Flex Consumption على Linux، ويجب عليك تعيين كليهما appType: functionAppLinux و isFlexConsumption: true.
تفترض القصاصة البرمجية أن خطوات الإنشاء في ملف YAML الخاص بك تنتج أرشيف zip في مجلد $(System.ArtifactsDirectory) الموجود على وكيلك.
يمكنك النشر باستخدام مهمة Azure Function App Deploy . هذه المهمة تتطلب اتصال خدمة Azure كمدخل. يخزن اتصال خدمة Azure بيانات الاعتماد للاتصال من Azure Pipelines إلى Azure.
هام
النشر إلى تطبيق Flex Consumption غير مدعوم باستخدام @v1AzureFunctionApp المهمة.
للنشر إلى Azure Functions، أضف هذا القصاصة البرمجية في نهاية ملفك azure-pipelines.yml :
trigger:
- main
variables:
# Azure service connection established during pipeline creation
azureSubscription: <Name of your Azure subscription>
appName: <Name of the function app>
# Agent VM image name
vmImageName: 'ubuntu-latest'
- task: DownloadBuildArtifacts@1 # Add this at the end of your file
inputs:
buildType: 'current'
downloadType: 'single'
artifactName: 'drop'
itemPattern: '**/*.zip'
downloadPath: '$(System.ArtifactsDirectory)'
- task: AzureFunctionApp@1
inputs:
azureSubscription: $(azureSubscription)
appType: functionAppLinux # default is functionApp
appName: $(appName)
package: $(System.ArtifactsDirectory)/**/*.zip
يقوم هذا المقتطف بتعيين الزر appType إلى functionAppLinux، وهو أمر مطلوب عند النشر إلى تطبيق يعمل على Linux. الافتراضي appType هو Windows (functionApp).
يفترض المثال أن خطوات الإنشاء في ملف YAML الخاص بك تنتج الأرشيف المضغوط في المجلد $(System.ArtifactsDirectory) الموجود على الوكيل الخاص بك.
توزيع حاوية
نَصِيحة
نوصي باستخدام دعم Azure Functions في Azure Container Apps لاستضافة تطبيق الوظائف الخاص بك في حاوية Linux مخصصة. لمزيد من المعلومات، راجع نظرة عامة على Azure Functions على Azure Container Apps.
عند نشر تطبيق دالة في حاويات، تعتمد مهمة النشر التي تستخدمها على بيئة الاستضافة المحددة.
يمكنك استخدام مهمة توزيع Azure Container Apps (AzureContainerApps) لنشر صورة تطبيق دالة إلى مثيل Azure Container App المحسن لوظائف Azure.
تنشر هذه التعليمات البرمجية الصورة الأساسية لتطبيق دالة نموذج عملية معزول .NET 8:
trigger:
- main
pool:
vmImage: 'ubuntu-latest'
steps:
- task: AzureContainerApps@1
inputs:
azureSubscription: <Name of your Azure subscription>
imageToDeploy: 'mcr.microsoft.com/azure-functions/dotnet-isolated:4-dotnet-isolated8.0'
containerAppName: <Name of your container app>
resourceGroup: <Name of the resource group>
من الناحية المثالية، يمكنك إنشاء حاوية مخصصة خاصة بك في البنية الأساسية بدلا من استخدام صورة أساسية، كما هو موضح في هذا المثال. لمزيد من المعلومات، راجع التوزيع إلى Azure Container Apps من Azure Pipelines.
التوزيع إلى فتحة
هام
لا تدعم خطة الاستهلاك المرن الفتحات حاليا. لا تدعم تطبيقات Linux أيضا الفتحات عند التشغيل في خطة الاستهلاك ، وسيتم إيقاف دعم هذه التطبيقات في المستقبل.
trigger:
- main
variables:
# Azure service connection established during pipeline creation
azureSubscription: <Name of your Azure subscription>
appName: <Name of the function app>
# Agent VM image name
vmImageName: 'windows-latest'
- task: AzureFunctionApp@2 # Add this at the end of your file
inputs:
azureSubscription: <Name of your Azure subscription>
appType: functionApp # this specifies a Windows-based function app
appName: $(appName)
package: $(System.DefaultWorkingDirectory)/build$(Build.BuildId).zip
deploymentMethod: 'auto' # 'auto' | 'zipDeploy' | 'runFromPackage'. Required. Deployment method. Default: auto.
deployToSlotOrASE: true
resourceGroupName: '<RESOURCE_GROUP>'
slotName: '<SLOT_NAME>'
يمكنك تكوين تطبيق الوظائف لديك للحصول على فتحات متعددة. تسمح لك الفتحات بتوزيع تطبيقك بأمان واختباره قبل إتاحته لعملائك.
توضح القصاصة البرمجية YAML التالية كيفية التوزيع إلى فتحة التقسيم المرحلي، ثم التبديل إلى فتحة إنتاج:
- task: AzureFunctionApp@1
inputs:
azureSubscription: <Azure service connection>
appType: functionAppLinux
appName: <Name of the function app>
package: $(System.ArtifactsDirectory)/**/*.zip
deployToSlotOrASE: true
resourceGroupName: <Name of the resource group>
slotName: staging
- task: AzureAppServiceManage@0
inputs:
azureSubscription: <Azure service connection>
WebAppName: <name of the function app>
ResourceGroupName: <name of resource group>
SourceSlot: staging
SwapWithProduction: true
عند استخدام فتحات التوزيع، يمكنك أيضا إضافة المهمة التالية لإجراء مبادلة الفتحة كجزء من النشر.
- task: AzureAppServiceManage@0
inputs:
azureSubscription: <AZURE_SERVICE_CONNECTION>
WebAppName: <APP_NAME>
ResourceGroupName: <RESOURCE_GROUP>
SourceSlot: <SLOT_NAME>
SwapWithProduction: true
إنشاء البنية الأساسية لبرنامج ربط العمليات التجارية باستخدام Azure CLI
لإنشاء مسار بناء في Azure، استخدم az functionapp devops-pipeline create. يتم إنشاء مسار البناء لإنشاء وإصدار أي تغييرات في التعليمات البرمجية يتم إجراؤها في مستودعك. ينشئ الأمر ملف YAML جديدًا يحدد مسار البناء والإصدار ثم يلتزم به في مستودعك. تعتمد المتطلبات الأساسية لهذا الأمر على تعليمتك البرمجية.
إذا كانت عليمتك البرمجية في GitHub:
يجب أن يكون لديك أذونات الكتابة لاشتراكك.
يجب أن تكون مسؤول المشروع في Azure DevOps.
يجب أن يكون لديك أذونات لإنشاء رمز وصول شخصي GitHub (PAT) لديه أذونات كافية. لمزيد من المعلومات، راجع متطلبات إذن GitHub PAT.
يجب أن يكون لديك أذونات للالتزام بالفرع الرئيسي في مستودع GitHub حتى تتمكن من تثبيت ملف YAML المُنشأ تلقائيًا.
إذا كانت تعليمتك البرمجية في مستودعات Azure:
يجب أن يكون لديك أذونات الكتابة لاشتراكك.
يجب أن تكون مسؤول المشروع في Azure DevOps.
الخطوات التالية
- راجع نظرة عامة على وظائف Azure.
- راجع نظرة عامة على Azure DevOps.