التكامل والتسليم المستمرين لمساحة عمل Azure Synapse Analytics

التكامل المستمر (CI) هو عملية أتمتة إنشاء الكود واختباره في كل مرة يقوم فيها أحد أعضاءِ الفريق بإجراء تغييرات على التحكم في الإصدار. التسليم المستمر (CD) هو عملية إنشاءِ واختبار وتكوين ونشر من بيئات اختبار أو تشغيل مرحلي متعددة إلى بيئة إنتاج.

في مساحة عمل Azure Synapse، ينقل التكامل المستمر والتسليم المستمر جميع الكيانات من بيئة واحدة (تطوير، اختبار، إنتاج) إلى بيئة أخرى. ترقية مساحة العمل الخاصة بك إلى مساحة عمل أخرى هي عملية تتألف من جزأين. أولًا، استخدم قالب Azure Resource Manager (قالب Azure Resource Manager) لإنشاء موارد مساحة العمل أو تحديثها (التجمعات ومساحة العمل). بعد ذلك، قم بترحيلِ البيانات الاصطناعية مثل البرامج النصية ودفاتر ملاحظات لغة الاستعلامات المركبة وتعريفات مهام Spark والبنيات الأساسية ومجموعات البيانات والبيانات الاصطناعية الأخرى باستخدام أدوات Synapse Workspace Deployment في Azure DevOps أو على GitHub.

تعد هذه المقالة مخططًا تفصيليًا لكيفية استخدام مسار إصدار Azure DevOps وإجراءات GitHub لأتمتة نشر مساحة عمل Azure Synapse إلى بيئات متعددة.

المتطلبات الأساسية

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

Azure DevOps

GitHub

  • إنشاء مستودعِ GitHub يحتوي على البيانات الاصطناعية لمساحة عمل Azure Synapse وقالب مساحة العمل.
  • تأكد من إنشاء مشغل مستضاف ذاتيًا أو استخدام مشغل مستضاف على GitHub.

معرِّف Microsoft Entra

  • إذا كنت تستخدم كيان خدمة، في معرف Microsoft Entra، فبادر بإنشاء كيان خدمة لاستخدامه للنشر.
  • في حال كنت تستخدم هوية مدارة، فمكّن الهوية المدارة المعينة من قبل النظام على الجهاز الظاهري في Azure كعامل أو مشغل، ثم أضفها إلى Azure Synapse Studio كمسؤول Synapse.
  • استخدم دور مسؤول Microsoft Entra لإكمال هذه الإجراءات.

Azure Synapse Analytics

إشعار

بإمكانك أتمتة هذه المتطلبات الأساسية ونشرها باستخدام نفس المسار أو قالب Azure Resource Manager أو واجهة سطر الأوامر من Azure، لكن هذه العمليات غير موصوفة في هذه المقالة.

  • يجب تكوين مساحة العمل «المصدر» المستخدمة للتطوير مع مستودع Git في Azure Synapse Studio. لمزيدٍ من المعلومات، راجع التحكم في المصدر في Synapse Studio.

  • إعداد مساحة عمل فارغة للنشرِ إلى:

    1. أنشئ مساحة عمل Azure Synapse جديدة.
    2. امنح كيان الخدمة الأذونات التالية لمساحة عمل Synapse الجديدة:
      • Microsoft.Synapse/workspaces/integrationruntimes/write
      • Microsoft.Synapse/workspaces/operationResults/read
      • Microsoft.Synapse/workspaces/read
    3. لا تقم بتكوين اتصال مستودع Git في مساحة العملِ.
    4. في مساحة عملِ Azure Synapse، انتقل إلى Studio>Manage>Access Control. 4. في مساحة عمل Azure Synapse، انتقل إلى Studio > Manage > Access Control. تعيين "Synapse Artifact Publisher" إلى كيان الخدمة. إذا كانت البنية الأساسية لبرنامج ربط العمليات التجارية للتوزيع ستحتاج إلى نشر نقاط النهاية الخاصة المدارة، فعين "Synapse مسؤول istrator" بدلا من ذلك.
    5. عند استخدام الخدمات المرتبطة التي يتم تخزين معلومات الاتصال الخاصة بها في Azure Key Vault، من المستحسن الاحتفاظ بالمخازن الرئيسية المنفصلة لبيئات مختلفة. يمكنك أيضًا تكوين مستويات أذونات منفصلة لكل مخزن رئيسي. على سبيل المثال، قد لا ترغب في أن يكون لدى أعضاء الفريق أذونات إلى البيانات السرية للتشغيل. إذا اتبعت هذا النهج، نوصيك بالاحتفاظ بنفس أسماء البيانات السرية عبر جميع المراحل. إذا كنت تحتفظ بنفس أسماء البيانات السرية، فلن تحتاج إلى وضع معلمات لكل سلسلة اتصال عبر بيئات التكامل المستمر/التسليم المستمر (CI/CD) لأن الشيء الوحيد الذي يتغير هو اسم المخزن الرئيسي، وهو معلمة منفصلة.

المتطلبات الأساسية الأخرى

  • لا يتم إنشاء تجمعات Spark وأوقات تشغيل التكامل المستضافة ذاتيًا في مهمة نشر مساحة العمل. في حال كانت لديك خدمة مرتبطة تستخدم وقت تشغيل تكامل مستضاف ذاتيًا، ففقم بإنشاء وقت التشغيل يدويًا في مساحة العمل الجديدة.
  • في حال كانت العناصر الموجودة في مساحة عمل التطوير مرفقة بتجمعات معينة، فتأكد من إنشاء أو تحديد معلمات لنفس الأسماء للتجمعات في مساحة العمل الهدف في ملف المعلمة.
  • في حال تم إيقاف تجمعات لغة الاستعلامات المركبة المتوفرة مؤقتا عند محاولة النشر، فقد يفشل النشر.

لمزيدٍ من المعلومات، راجع التكامل المستمر والتسليم المستمر في Azure Synapse Analytics الجزء 4 - مسار الإصدار.

إعداد مسار للإصدار في Azure DevOps

في هذا القسم، ستتعلم طريقة نشر مساحة عمل Azure Synapse في Azure DevOps.

  1. في Azure DevOps، افتح المشروع الذي قمت بإنشائه للإصدار.

  2. في القائمة اليسرى، حدد Pipelines>Releases.

    Screenshot that shows selecting Pipelines and then Releases on the Azure DevOps menu.

  3. حدد New pipeline. في حال كان لديك مسارات موجودة، فحدد New>New release pipeline.

  4. حدد قالب المهمة الفارغة.

    Screenshot that shows selecting the Empty job template.

  5. في ⁧⁩Stage name⁧⁩، أدخل اسم البيئة الخاصة بك.

  6. حدد Add artifact، ثم حدد مستودع Git الذي تم تكوينه باستخدام Azure Synapse Studio في بيئة التطويرِ الخاصة بك. حدد مستودع Git الذي تُدير فيه مجموعاتك وقالب Azure Resource Manager لمساحة العمل. في حال كنت تستخدم GitHub كمصدر، قم بإنشاء اتصال خدمة لحساب GitHub الخاص بك وسحب المستودعات. لمزيد من المعلومات، راجع اتصالات الخدمة.

    Screenshot that shows selecting GitHub to add a publish branch for a new artifact.

  7. حدد فرع قالب Azure Resource Manager للمورد. بالنسبة للإصدار الافتراضي، حدد الأحدث من الفرع الافتراضي.

    Screenshot that shows setting the resource ARM template branch.

  8. بالنسبة إلى البيانات الاصطناعية Default branch، حدد المستودع publish branch أو الفروع الأخرى غير المنشورة التي تتضمن بيانات Synapse الاصطناعية. بشكل افتراضي، يكون فرع النشر هو ⁧workspace_publish⁩. بالنسبة للإصدار الافتراضي، حدد الأحدث من الفرع الافتراضي.

    Screenshot that shows setting the artifacts branch.

إعداد مهمة مرحلة لقالب Azure Resource Manager لإنشاء مورد وتحديثه

في حال كان لديك قالب Azure Resource Manager ينشر موردًا، مثل مساحة عمل Azure Synapse أو تجمع Spark ولغة الاستعلامات المركبة أو مخزن مفاتيح، فقم بإضافة مهمة توزيع Azure Resource Manager لإنشاء تلك الموارد أو تحديثها:

  1. في طريقة عرض المرحلة، حدد عرض مهام المرحلة.

    Screenshot that shows setting the stage view.

  2. أنشئ مهمة جديدة. ابحث عن ARM Template Deployment، ثم حدد Add.

  3. في علامة تبويب النشر Tasks، حدد الاشتراك ومجموعة الموارد والموقع لمساحة العمل. وفر بيانات الاعتماد إذا لزم الأمر.

  4. بانسبة إلى ⁧⁩Action⁧⁩، حدد ⁧⁩Create or update resource group⁧⁩.

  5. بالنسبة إلى Template، حدّد زر علامة الحذف (...). انتقل إلى قالب Azure Resource Manager لمساحة العمل.

  6. بالنسبة إلى Template parameters، حدد ... لاختيار ملف المعلمات.

    Screenshot that shows the: workspace and pools deploy.

  7. بالنسبة إلى Override template parameters، حدد ...، ثم أدخل قيم المعلمات التي تريد استخدامها لمساحة العمل.

  8. بالنسبة إلى Deployment mode، حدد Incremental.

  9. (اختياري) أضِف Azure PowerShell لمنح وتحديث تعيين دور مساحة العمل. في حال كنت تستخدم مسار إصدار لإنشاء مساحة عمل Azure Synapse، تتم إضافة كيان خدمة المسار كمسؤول مساحة العمل الافتراضي. يمكنك تشغيل PowerShell لمنح حسابات أخرى حق الوصول إلى مساحة العمل.

    Screenshot that demonstrates running a PowerShell script to grant permissions.

تحذير

في وضع النشر الكامل، تُحذف الموارد الموجودة في مجموعة الموارد غير المحددة في قالب Azure Resource Manager الجديد. لمزيد من المعلومات، راجع أوضاع توزيع إدارة موارد Azure.

إعداد مهمة مرحلة لنشر البيانات الاصطناعية لـ Azure Synapse

استخدم ملحق نشر مساحة عمل Synapse لنشرِ عناصر أخرى في مساحة عمل Azure Synapse. تتضمن العناصر التي يمكنك نشرها مجموعات البيانات والبرامج النصية للغة الاستعلامات المركبة ودفاتر الملاحظات وتعريفات مهام spark ووقت تشغيل التكامل وتدفق البيانات وبيانات الاعتماد والبيانات الاصطناعية الأخرى في مساحة العمل.

تثبيت ملحق التوزيعِ وإضافته

  1. ابحث عن الملحقِ واحصل عليه من Visual Studio Marketplace.

    Screenshot that shows the Synapse workspace deployment extension as it appears in Visual Studio Marketplace.

  2. حدد مؤسسة Azure DevOps التي تريد تثبيت الملحقِ فيها.

    Screenshot that shows selecting an organization in which to install the Synapse workspace deployment extension.

  3. تأكد من منح كيان خدمة البنية الأساسية لبرنامج ربط العمليات التجارية Azure DevOps إذن الاشتراك وتعيينه مسؤولَ مساحة عمل Synapse لمساحة العمل.

  4. لإنشاء مهمة جديدة، ابحث عن Synapse workspace deployment، ثم حدد Add.

    Screenshot that shows searching for Synapse workspace deployment to create a task.

تكوين مهمة النشر

تدعم مهمة النشر 3 أنواع من العمليات، التحقق من الصحة فحسب، والنشر، والتحقق من الصحة والنشر.

إشعار

ملحق توزيع مساحة العمل هذا غير متوافق مع الإصدارات السابقة. يرجى التأكد من تثبيت الإصدار الأخير واستخدامه. يمكنك قراءة ملاحظة الإصدار في نظرة عامة في Azure DevOps وأحدث إصدار في إجراء GitHub.

التحقق من الصحة هو التحقق من صحة البيانات الاصطناعية Synapse في فرع غير منشور باستخدام المهمة وإنشاء قالب مساحة العمل وملف قالب المعلمة. تعمل عملية التحققِ من الصحة فحسب في مسار YAML. يكون نموذج ملف YAML على النحو التالي:

   pool:
     vmImage: ubuntu-latest

   resources:
     repositories:
     - repository: <repository name>
       type: git
       name: <name>
       ref: <user/collaboration branch>

   steps:
     - checkout: <name>
     - task: Synapse workspace deployment@2
       continueOnError: true    
       inputs:
         operation: 'validate'
         ArtifactsFolder: '$(System.DefaultWorkingDirectory)/ArtifactFolder'
         TargetWorkspaceName: '<target workspace name>'    

يمكن استخدام التحقق من الصحة والنشر لنشرِ مساحة العمل مباشرة من فرع غير نشر مع مجلد جذر البيانات الاصطناعية.

إشعار

تحتاج مهمة النشر إلى تنزيل ملفات JS للتبعية من نقطة النهاية هذه web.azuresynapse.net عند تحديد نوع العملية ك Validate أو Validate and deploy. يرجى التأكد من السماح web.azuresynapse.net نقطة النهاية إذا تم تمكين نهج الشبكة على الجهاز الظاهري.

تعمل عملية التحقق من الصحة والنشر في كل من البنية الأساسية لبرنامج ربط العمليات التجارية الكلاسيكية وYAML. يكون نموذج ملف YAML على النحو التالي:

   pool:
     vmImage: ubuntu-latest

   resources:
     repositories:
     - repository: <repository name>
       type: git
       name: <name>
       ref: <user/collaboration branch>

   steps:
     - checkout: <name>
     - task: Synapse workspace deployment@2
       continueOnError: true    
       inputs:
         operation: 'validateDeploy'
         ArtifactsFolder: '$(System.DefaultWorkingDirectory)/ArtifactFolder'
         TargetWorkspaceName: 'target workspace name'
         azureSubscription: 'target Azure resource manager connection name'
         ResourceGroupName: 'target workspace resource group'
         DeleteArtifactsNotInTemplate: true
         OverrideArmParameters: >
           -key1 value1
           -key2 value2

نشر تشمل مدخلات نشر العملية قالب مساحة عمل Synapse وقالب المعلمة، والذي يمكن إنشاؤه بعد النشر في فرع نشر مساحة العمل أو بعد التحقق من الصحة. وهو نفس الإصدارِ 1.x.

بإمكانك اختيار أنواع العمليات استنادًا إلى حالة الاستخدام. الجزء التالي هو مثال على النشر.

  1. في المهمة، حدد نوع العملية كـ Deploy.

    Screenshot that shows the selection of operation deploy.

  2. في المهمة، بجوار Template، حدد ... لاختيارِ ملف القالب.

  3. بالنسبة إلى Template parameters، حدد ... لاختيارِ ملف المعلمات.

  4. حدد اتصالاً ومجموعة موارد واسمًا لمساحة العمل.

  5. بجوار Override template parameters، حدد ... . أدخل قيم المعلمات التي تريد استخدامها لمساحة العملِ، بما في ذلك سلاسل الاتصال ومفاتيح الحساب المستخدمة في الخدمات المرتبطة. لمزيد من المعلومات، راجع التكامل المستمر والتسليم المستمر في Azure Synapse Analytics.

    Screenshot that shows setting up the Synapse deployment task for the workspace.

  6. يتم دعم نشر نقطة النهاية الخاصة المدارة فحسب في الإصدار 2.x. يرجى التأكد من تحديد الإصدار الصحيح والتحقق من نشر نقاط النهاية الخاصة المدارة في القالب.

    Screenshot that shows selecting version 2.x to deploy private endpoints with synapse deployment task.

  7. لإدارة المشغلات، يمكنك استخدام تبديل المشغل لإيقاف المشغلات قبل النشر. كما يمكنك إضافة مهمة لإعادة تشغيل المشغلات بعد مهمة النشر.

    Screenshot that shows managing triggers before and after deployment.

هام

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

إنشاء إصدار للنشرِ

بعد حفظ جميع التغييرات، يمكنك تحديد Create release لإنشاء إصدار يدوي. لمعرفة كيفية أتمتة إنشاء الإصدارِ، راجع مشغلات إصدار Azure DevOps.

Screenshot that shows the New release pipeline pane, with Create release highlighted.

إعداد إصدارٍ في GitHub Actions

في هذا القسم، ستتعلم كيفية إنشاء مهام سير عمل GitHub باستخدام إجراءات GitHub لنشرِ مساحة عمل Azure Synapse.

بإمكانك استخدام GitHub Actions لقالب Azure Resource Manager لأتمتة نشر قالب Azure Resource Manager إلى Azure لمساحة العمل وتجمعات الحوسبة.

ملف سير العمل

تعريف سير عمل GitHub Actions بواسطة ملف YAML (.yml) في المسار /.github/workflows/ في المستودع الخاص بك. ويتضمن هذا التعريف الخطوات والمعلمات المختلفة التي تشكل سير العمل.

يتكون ملف .yml من قسمين:

المقطع المهام
المصادقة 1. تحديد مدير الخدمة.
2. إنشاء سر GitHub.
نشر نشر البيانات الاصطناعية الخاصة بمساحة العمل.

أسرار تكوين GitHub Actions

أسرار GitHub Actions هي متغيرات البيئة المشفرة. بإمكان أي شخص لديه إذن المتعاون لهذا المستودع استخدام هذه الأسرار للتفاعل مع الإجراءات في المستودع.

  1. في مستودع GitHub، حدد علامة التبويب Settings، ثم حدد Secrets>New repository secret.

    Screenshot that shows the GitHub elements to select to create a new repository secret.

  2. إضافة سر جديد لمعرف العميل، وإضافة سر عميل جديد إذا كنت تستخدم كيان الخدمة للنشر. بإمكانك أيضا اختيار حفظ معرف الاشتراك ومعرف المستأجر كأسرار.

إضافة سير العمل

في مستودع GitHub الخاص بك، انتقل إلى Actions.

  1. حدد Set up your workflow yourself.

  2. احذف كل شيء بعد القسم on: في ملف سير العمل. على سبيل المثال، سير العمل المتبقي قد يبدو مثل هذا المثال التالي:

    name: CI
    
    on:
    push:
        branches: [ master ]
    pull_request:
        branches: [ master ]
    
  3. أعد تسمية سير العمل الخاص بك. في علامة التبويب Marketplace، ابحث عن إجراء نشر مساحة عمل Synapse، ثم أضف الإجراء.

    Screenshot that shows searching for the Synapse workspace deployment task on the Marketplace tab.

  4. قم بتعيين القيم المطلوبة وقالب مساحة العمل:

    name: workspace deployment
    
    on:
        push:
            branches: [ publish_branch ]
    jobs:
        release:
            # You also can use the self-hosted runners.
            runs-on: windows-latest
            steps:
            # Checks out your repository under $GITHUB_WORKSPACE, so your job can access it.
            - uses: actions/checkout@v2
            - uses: azure/synapse-workspace-deployment@release-1.0
            with:
              TargetWorkspaceName: 'target workspace name'
              TemplateFile: './path of the TemplateForWorkspace.json'
              ParametersFile: './path of the TemplateParametersForWorkspace.json'
              OverrideArmParameters: './path of the parameters.yaml'
              environment: 'Azure Public'
              resourceGroup: 'target workspace resource group'
              clientId: ${{secrets.CLIENTID}}
              clientSecret:  ${{secrets.CLIENTSECRET}}
              subscriptionId: 'subscriptionId of the target workspace'
              tenantId: 'tenantId'
              DeleteArtifactsNotInTemplate: 'true'
              managedIdentity: 'False'
    
  5. أصبحت مستعدًا لتثبيت التغييرات الخاصة بك. حدد Start commit، وأدخل العنوان، ثم أضف وصفًا (اختياري). بعد ذلك، حدد Commit new file.

    Screenshot that shows committing the workflow in GitHub.

    يظهر الملف في مجلد .github/workflows في المستودع الخاص بك.

    إشعار

    تدعم الهوية المدارة الأجهزة الظاهرية المستضافة ذاتيا في Azure فحسب. تأكد من تعيين المشغل إلى نمط مستضاف ذاتيًا. مكّن الهوية المدارة المعينة من قبل النظام لجهازك الظاهري وأضفها إلى Azure Synapse Studio كمسؤول Synapse.

مراجعة النشر الخاص بك.

  1. في مستودع GitHub الخاص بك، انتقل إلى Actions.

  2. افتح النتيجة الأولى لرؤية سجلات تفصيلية لتشغيل سير العمل الخاص بك:

    Screenshot that shows selecting the workspace deployment log in the repository Actions in GitHub.

إنشاء معلمات مخصصة في قالب مساحة عمل

إذا كنت تستخدم التكامل المستمر والتسليم المستمر تلقائيًا وتريد تغيير بعض الخصائص في أثناء النشر، ولكن لا يتم تحديد معلمات للخصائص بشكل افتراضي، يمكنك تجاوز قالب المعلمة الافتراضي.

لتجاوز قالب المعلمة الافتراضي، أنشئ قالب معلمة مخصص يسمى template-parameters-definition.json في المجلد الجذر لفرع Git. ينبغي عليك استخدام اسم الملف بالضبط. عندما تنشر مساحة عمل Azure Synapse من فرع التعاون، أو تقوم مهمة التوزيع بالتحقق من صحة البيانات الاصطناعية في الفروع الأخرى، فإنها تقرأ هذا الملف وتستخدم تكوينه لإنشاء المعلمات. في حال لم تعثر مساحة عمل Azure Synapse على هذا الملف، فسيتم استخدام قالب المعلمة الافتراضي.

بناء معلمة مخصصة

بإمكانك استخدام الإرشادات التالية لإنشاء ملف معلمات مخصص كما يلي:

  • أدخل مسار الخصائص ضمن نوع العنصر ذي الصلة.
  • تعيين اسم خاصية إلى ⁧*⁩ يشير إلى أنك تريد تخصيص جميع الخصائص تحته (إلى المستوى الأول فحسب، لا بشكل متكرر). بإمكانك تعيين استثناءات لهذا التكوين.
  • تعيين قيمة خاصية كسلسلة يشير إلى أنك تريد تخصيص معلمات الخاصية. استخدم التنسيق <action>:<name>:<stype>.
    • <action> يمكن أن يكون أحد هذه الأحرف:
      • = يعني الاحتفاظ بالقيمة الحالية كقيمة افتراضية للمعلمة.
      • - يعني عدم الاحتفاظ بالقيمة الافتراضية للمعلمة.
      • |هي حالة خاصة للأسرار من Azure Key Vault سلسلة الاتصال أو المفاتيح.
    • <name> هو اسم المعلمة. إذا كان فارغًا، فإنه يأخذ اسم الخاصية. إذا بدأت القيمة بحرف - ، يتم تقصير الاسم. على سبيل المثال، AzureStorage1_properties_typeProperties_connectionString سيتم تقصير إلى AzureStorage1_connectionString.
    • <stype> هو نوع المعلمة. إذا كان <stype> فارغا، فإن النوع الافتراضي هو string. القيم المدعومة هي: string، securestring، int،bool،object،secureobject وarray.
  • يشير تحديد صفيف في ملف التعريف إلى أن الخاصية المطابقة في القالب هي عبارة عن صفيف. يكرر Azure Synapse عبر كافة الكائنات في الصفيف باستخدام التعريف المحدد. يصبح الكائن الثاني، السلسلة، اسم الخاصية، وهو يستخدم كاسم للمعلمة لكل تكرار.
  • لا يمكن أن يكون التعريف محددًا بمثيل مورد. ينطبق أي تعريف على جميع الموارد من هذا النوع.
  • بصورة افتراضية، يتم وضع معلمات لكل السلاسل الآمنة، مثل أسرار Vault Key، والسلاسل الآمنة، مثل سلاسل الاتصال والمفاتيح والرموز المميزة.

مثال لتعريف قالب المعلمة

إليك مثالاً على شكل تعريف قالب المعلمة:

{
    "Microsoft.Synapse/workspaces/notebooks": {
        "properties": {
            "bigDataPool": {
                "referenceName": "="
            }
        }
    },
    "Microsoft.Synapse/workspaces/sqlscripts": {
        "properties": {
            "content": {
                "currentConnection": {
                    "*": "-"
                }
            }
        }
    },
    "Microsoft.Synapse/workspaces/pipelines": {
        "properties": {
            "activities": [{
                "typeProperties": {
                    "waitTimeInSeconds": "-::int",
                    "headers": "=::object",
                    "activities": [
                        {
                            "typeProperties": {
                                "url": "-:-webUrl:string"
                            }
                        }
                    ]
                }
            }]
        }
    },
    "Microsoft.Synapse/workspaces/integrationRuntimes": {
        "properties": {
            "typeProperties": {
                "*": "="
            }
        }
    },
    "Microsoft.Synapse/workspaces/triggers": {
        "properties": {
            "typeProperties": {
                "recurrence": {
                    "*": "=",
                    "interval": "=:triggerSuffix:int",
                    "frequency": "=:-freq"
                },
                "maxConcurrency": "="
            }
        }
    },
    "Microsoft.Synapse/workspaces/linkedServices": {
        "*": {
            "properties": {
                "typeProperties": {
                    "accountName": "=",
                    "username": "=",
                    "connectionString": "|:-connectionString:secureString",
                    "secretAccessKey": "|"
                }
            }
        },
        "AzureDataLakeStore": {
            "properties": {
                "typeProperties": {
                    "dataLakeStoreUri": "="
                }
            }
        },
        "AzureKeyVault": {
            "properties": {
                "typeProperties": {
                    "baseUrl": "|:baseUrl:secureString"
                },
                "parameters": {
                    "KeyVaultURL": {
                        "type": "=",
                        "defaultValue": "|:defaultValue:secureString"
                    }
                }
            }
        }
    },
    "Microsoft.Synapse/workspaces/datasets": {
        "*": {
            "properties": {
                "typeProperties": {
                    "folderPath": "=",
                    "fileName": "="
                }
            }
        }
    },
    "Microsoft.Synapse/workspaces/credentials" : {
        "properties": {
            "typeProperties": {
                "resourceId": "="
            }
        }
    }
}

إليك شرحًا لطريقة إنشاء النموذج السابق، مقسمًا حسب نوع المورد.

notebooks

  • تحدد معلمات لأي خاصية في properties/bigDataPool/referenceName المسار بقيمتها الافتراضية. بإمكانك تحديد معلمات تجمع Spark مرفق لكل ملف دفتر ملاحظات.

sqlscripts

  • في مسار properties/content/currentConnection، توضع معلمات لكل من الخاصيتين poolName وdatabaseName كسلاسل دون القيم الافتراضية في القالب.

pipelines

  • توضع معلمات على أي خاصية في المسار activities/typeProperties/waitTimeInSeconds. أي نشاط في مسارٍ يحتوي على خاصية مستوى التعليمات البرمجية المسماة waitTimeInSeconds (على سبيل المثال، Wait النشاط) توضع عليه معلمة كعدد، مع اسم افتراضي. مع ذلك، لن تكون ذات قيمة افتراضية في قالب Resource Manager. عوضًا عن ذلك، ستكون الخاصية مطلوبة الإدخال في أثناء نشر Resource Manager.
  • الخاصية headers (على سبيل المثال، في نشاط Web) هي معلمة مع النوع object (عنصر). الخاصية headers لها قيمة افتراضية، وهي نفس قيمة المصنع المصدر.

integrationRuntimes

  • توضع معلمات على كافة الخصائص الموجودة ضمن المسار typeProperties مع القيم الافتراضية المعنية. على سبيل المثال، ثمة اثنان من الخصائص تندرج تحت خصائص النوع IntegrationRuntimes:وهما computeProperties وssisProperties. يُنشأ كلا النوعين من الخصائص مع القيم الافتراضية والأنواع الخاصة بهما (كائن).

triggers

  • ضمن typeProperties، توضع معلمات على خاصيتين.

    • الخاصية maxConcurrency لها قيمة افتراضية وهي النوع string. يعتبر اسم المعلمة الافتراضي للخاصية maxConcurrency هو <entityName>_properties_typeProperties_maxConcurrency.
    • recurrenceتُوضع معلمة أيضاً على الخاصية. يتم تعيين جميع الخصائص ضمن الخاصية recurrence إلى معلمات كسلاسل، مع القيم الافتراضية وأسماء المعلمات. ويستثنى من ذلك الخاصية interval، التي توضع عليها المعلمات كنوع int. تضاف لاحقة إلى اسم المعلمة، هي<entityName>_properties_typeProperties_recurrence_triggerSuffix. وبالمثل، فإن freq الخاصية هي سلسلة وتوضع عليها معلمات كسلسلة. ومع ذلك، freq توضع معلمات على الخاصية دون قيمة افتراضية. تم اختصار الاسم وإضافة لاحقة له، مثل <entityName>_freq.

    إشعار

    يتم دعم 50 مشغلا كحد أقصى حاليا.

linkedServices

  • الخدمات المرتبطة فريدة من نوعها. نظرا لأن الخدمات ومجموعات البيانات المرتبطة تحتوي على مجموعة واسعة من الأنواع، يمكنك توفير تخصيصات خاصة بنوع معين. في المثال السابق، بالنسبة إلى كافة الخدمات المرتبطة من النوع AzureDataLakeStore سيطبق قالب معين. بالنسبة لجميع الآخرين (المحددين من خلال استخدام الحرف *)، يتم تطبيق قالب مختلف.
  • ستوضع معلمات على الخاصية connectionString كقيمةsecurestring. لن تكون ذات قيمة افتراضية. يُختصر اسم المعلمة وتُضاف له لاحقة باستخدام connectionString.
  • الخاصية secretAccessKey معلمة كقيمة AzureKeyVaultSecret (على سبيل المثال، في خدمة مرتبطة Amazon S3). يتم تحديد معلماته تلقائيا باعتباره سر Azure Key Vault، ويتم جلبه من مخزن المفاتيح الذي تم تكوينه. يمكنك أيضًا تحديد معلمات خزينة المفاتيح نفسها.

datasets

  • على الرغم من أنه يمكنك تخصيص الأنواع في مجموعات البيانات، فإن * التكوين الصريح على مستوى غير مطلوب. في المثال السابق، توضع معلمات على جميع خصائص مجموعة البيانات ضمن typeProperties.

أفضل الممارسات لـ CI/CD

في حال كنت تستخدم تكامل Git مع مساحة عمل Azure Synapse وكان لديك مسار تكامل مستمر/ تسليم مستمر CI/CD ينقل التغييرات من التطوير إلى الاختبار ثم إلى الإنتاج، نوصي بأفضل الممارسات التالية:

  • دمج مساحة عمل التطوير مع Git فحسب. في حال كنت تستخدم تكامل Git، فادمج مساحة عمل Azure Synapse للتطوير فحسب مع Git. يتم توزيع التغييرات في الاختبار والتشغيل عبر التكامل المستمر/ التسليم المستمر ولا تحتاج إلى تكامل Git.
  • إعداد التجمعات قبل ترحيل البيانات الاصطناعية. في حال كان لديك برنامج نصي للغة الاستعلامات المركبة أو دفتر ملاحظات مرفق بتجمعات في مساحة عمل التطوير، فاستخدم نفس الاسم للتجمعات في بيئات مختلفة.
  • مزامنة تعيين الإصدار في البنية الأساسية باعتبارها سيناريوهات التعليمات البرمجية. لإدارة البنية الأساسية (الشبكات والأجهزة الظاهرية و موازنات التحميل ومخطط الاتصال) في نموذج وصفي، فاستخدام الإصدار ذاته الذي تستخدمه فرق DevOps للتعليمات البرمجية المصدرية.
  • راجع أفضل ممارسات Azure Data Factory. في حال كنت تستخدم Data Factory، فراجع أفضل الممارسات للبيانات الاصطناعية لـ Data Factory.

استكشاف وإصلاح أخطاء نشر البيانات الاصطناعية

استخدام مهمة نشر مساحة عمل Synapse لنشر بيانات Synapse الاصطناعية

في Azure Synapse، على عكس في Data Factory، البيانات الاصطناعية ليست موارد Resource Manager. ليس بإمكانك استخدام مهمة نشر قالب Azure Resource Manager لنشر بيانات Azure Synapse الاصطناعية. بدلا من ذلك، استخدم مهمة نشر مساحة عمل Synapse لنشر البيانات الاصطناعية، واستخدام مهمة توزيع ARM لنشر موارد ARM (التجمعات ومساحة العمل). وفي الوقت نفسه، لا تدعم هذه المهمة سوى قوالب Synapse حيث تحتوي الموارد على نوع Microsoft.Synapse. ومع هذه المهمة، يمكن للمستخدمين نشر التغييرات من أي فروع تلقائيا دون النقر يدويا فوق النشر في Synapse studio. فيما يلي بعض المشكلات التي يتم طرحها بشكل متكرر.

1. فشل النشر: ملف ذراع مساحة العمل أكثر من 20 ميغابايت

هناك قيود على حجم الملف في موفر git، على سبيل المثال، في Azure DevOps، الحد الأقصى لحجم الملف هو 20 ميغابايت. بمجرد أن يتجاوز حجم ملف قالب مساحة العمل 20 ميغابايت، يحدث هذا الخطأ عند نشر التغييرات في Synapse studio، حيث يتم إنشاء ملف قالب مساحة العمل ومزامنته إلى git. لحل المشكلة، يمكنك استخدام مهمة توزيع Synapse مع التحقق من صحة عملية التحقق من الصحة أو التحقق من صحتها ونشرها لحفظ ملف قالب مساحة العمل مباشرة في عامل البنية الأساسية لبرنامج ربط العمليات التجارية ودون النشر اليدوي في synapse studio.

2. خطأ رمز مميز غير متوقع في الإصدار

في حال كان ملف المعلمة يحتوي على قيم معلمات لم يتم تجاوزها، يفشل مسار الإصدار في تحليل الملف وينشئ خطأ unexpected token. نقترح عليك أن تتجاوز المعلمات أو تستخدم Key Vault لاسترداد قيم المعلمات. بإمكانك أيضًا استخدام أحرف إلغاء مزدوجة لحل المشكلة.

3. فشل نشر وقت تشغيل التكامل

إذا كان لديك قالب مساحة العمل الذي تم إنشاؤه من مساحة عمل تم تمكين Vnet مدارة وحاول النشر إلى مساحة عمل عادية أو العكس، يحدث هذا الخطأ.

4. تمت مصادفة حرف غير متوقع أثناء تحليل القيمة

لا يمكن تحليل القالب لملف القالب. حاول بالهروب من الشرطة المائلة للخلف، على سبيل المثال. \\Test01\Test

5. فشل إحضار معلومات مساحة العمل، غير موجود

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

6. فشل حذف البيانات الاصطناعية

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

8. فشل النشر مع ظهور الخطأ: موضع json 0

إذا كنت تحاول تحديث القالب يدويا، فسيحدث هذا الخطأ. الرجاء التأكد من أنك لم تقم بتحرير القالب يدويا.

9. فشل إنشاء المستند أو تحديثه بسبب مرجع غير صحيح

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

10. فشل إحضار حالة النشر في نشر دفتر الملاحظات

يتم إرفاق دفتر الملاحظات الذي تحاول نشره بتجمع Spark في ملف قالب مساحة العمل، بينما في التوزيع لا يوجد التجمع في مساحة العمل الهدف. إذا لم تقم بإضفاء معلمات على اسم التجمع، فيرجى التأكد من وجود نفس الاسم للتجمعات بين البيئات.