النشر التلقائي للتكامل والتسليم المستمر (CI/CD)

ينطبق على:Azure Data Factory Azure Synapse Analytics

تلميح

جرب Data Factory في Microsoft Fabric، وهو حل تحليلي متكامل للمؤسسات. يغطي Microsoft Fabric كل شيء بدءا من حركة البيانات إلى علم البيانات والتحليلات في الوقت الحقيقي والمعلومات المهنية وإعداد التقارير. تعرف على كيفية بدء إصدار تجريبي جديد مجانا!

إشعار

يدعم Synapse Analytics أيضا CI/CD. راجع وثائق CI/CD لتحليلات Synapse للحصول على مزيد من المعلومات.

نظرة عامة

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

في Azure Data Factory، يعني CI/CD نقل مسارات Data Factory من بيئة واحدة، مثل التطوير والاختبار والإنتاج، إلى بيئة أخرى. يستخدم Data Factory قوالب Azure Resource Manager (قوالب ARM) لتخزين تكوين كيانات Data Factory المختلفة، مثل خطوط التدفقات ومجموعات البيانات وتدفقات البيانات.

هناك طريقتان مقترحتان لتعزيز مصنع البيانات إلى بيئة أخرى:

  • النشر الآلي باستخدام تكامل Data Factory مع Azure Pipelines.
  • تحميل قالب ARM يدوياً باستخدام تكامل تجربة مستخدم Data Factory مع Azure Resource Manager.

لمزيد من المعلومات، راجع التكامل والتسليم المستمرين في Azure Data Factory.

تركز هذه المقالة على تحسينات النشر المستمر وميزة النشر التلقائي للتكامل المستمر/ التسليم المستمر (CI/CD).

تحسينات النشر المستمر

تأخذ ميزة النشر الآلي وExport ARM template من تجربة مستخدم Data Factory وتجعل المنطق قابلاً للاستهلاك عبر حزمة npm متاحة للجمهور العام @microsoft/azure-data-factory-utilities. لهذا السبب، يمكنك تشغيل هذه الإجراءات برمجياً بدلاً من الحاجة إلى الانتقال إلى واجهة مستخدم Data Factory وتحديد زر يدوياً. ستمنح هذه الإمكانية خطوط تدفقات CI/CD الخاصة بك تجربة تكامل مستمرة أكثر واقعية.

إشعار

تأكد من استخدام إصدار العقدة 18.x وإصداره المتوافق لتجنب الأخطاء التي يمكن أن تحدث بسبب عدم توافق الحزمة مع الإصدارات القديمة.

تدفق CI/CD الحالي

  1. يقوم كل مستخدم بإجراء تغييرات في الفروع الخاصة به.
  2. لا يُسمح بإجراء تغيير على الفرع الرئيسي. يجب على المستخدمين إنشاء طلب سحب لإجراء تغييرات.
  3. يجب على المستخدمين تحميل واجهة مستخدم Data Factory وتحديد "Publish" لنشر التغييرات على Data Factory وإنشاء قوالب ARM في فرع النشر.
  4. يتم تكوين خط تدفقات إصدار DevOps لإنشاء إصدار جديد ونشر قالب ARM في كل مرة يتم فيها إجراء تغيير جديد على فرع النشر.

Diagram that shows the current CI/CD flow.

خطوة يدوية

في تدفق CI/CD الحالي، تكون تجربة المستخدم هي الوسيط لإنشاء قالب ARM. ونتيجة لذلك، يجب على المستخدم الانتقال إلى واجهة مستخدم Data Factory وتحديد "Publish" يدوياً لبدء إنشاء قالب ARM وإفلاته في فرع النشر.

تدفق CI/CD الجديد

  1. يقوم كل مستخدم بإجراء تغييرات في الفروع الخاصة به.
  2. لا يُسمح بإجراء تغيير على الفرع الرئيسي. يجب على المستخدمين إنشاء طلب سحب لإجراء تغييرات.
  3. يتم تشغيل بنية خط تدفقات Azure DevOps في كل مرة يتم فيها إجراء التزام جديد على الفرع الرئيسي. إنها تتحقق من صحة الموارد وتقوم بإنشاء قالب ARM كأداة إذا نجح التحقق من الصحة.
  4. يتم تكوين خط تدفقات إصدار DevOps لإنشاء إصدار جديد ونشر قالب ARM في كل مرة تتوفر فيها بنية جديدة.

Diagram that shows the new CI/CD flow.

ما التغير الذي حدث؟

  • لدينا الآن عملية بناء تستخدم خط تدفقات بنية DevOps.
  • يستخدم خط تدفقات البناء حزمة ADFUtilities NPM، والتي ستتحقق من صحة جميع الموارد وتقوم بإنشاء قوالب ARM. يمكن أن تكون هذه القوالب مفردة ومرتبطة.
  • خط تدفقات البناء هو المسؤول عن التحقق من صحة موارد Data Factory وإنشاء قالب ARM بدلاً من واجهة مستخدم Data Factory (الزر "Publish").
  • سوف يستهلك تعريف إصدار DevOps الآن خط تدفقات البناء الجديد هذا بدلاً من الأداة Git.

إشعار

يمكنك الاستمرار في استخدام الآلية الحالية، وهي الفرع adf_publish، أو يمكنك استخدام التدفق الجديد. وكلاهما مدعوم.

نظرة عامة على الحزمة

يتوفر أمران حالياً في الحزمة:

  • تصدير قالب ARM
  • التحقق

تصدير قالب ARM

قم بتشغيل npm run build export <rootFolder> <factoryId> [outputFolder] لتصدير قالب ARM باستخدام موارد مجلد معين. يقوم هذا الأمر أيضاً بإجراء فحص للتحقق قبل إنشاء قالب ARM. فيما يلي مثال باستخدام مجموعة موارد تسمى testResourceGroup:

npm run build export C:\DataFactories\DevDataFactory /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/testResourceGroup/providers/Microsoft.DataFactory/factories/DevDataFactory ArmTemplateOutput
  • RootFolder هو حقل إلزامي يمثل مكان وجود موارد Data Factory.
  • FactoryId هو حقل إلزامي يمثل معرّف مورد Data Factory بالتنسيق /subscriptions/<subId>/resourceGroups/<rgName>/providers/Microsoft.DataFactory/factories/<dfName>.
  • OutputFolder هي معلمة اختيارية تحدد المسار ذي الصلة لحفظ قالب ARM الذي تم إنشاؤه.

القدرة على إيقاف/بدء تشغيل المشغلات المحدثة فقط متاحة الآن بشكل عام ويتم دمجها في الأمر الموضح أعلاه.

إشعار

لم يتم نشر قالب ARM الذي تم إنشاؤه إلى الإصدار المباشر للمصنع. يجب أن يتم النشر باستخدام خط تدفقات CI/CD.

التحقق

قم بتشغيل npm run build validate <rootFolder> <factoryId> للتحقق من صحة جميع موارد مجلد معين. إليك مثال:

npm run build validate C:\DataFactories\DevDataFactory /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/testResourceGroup/providers/Microsoft.DataFactory/factories/DevDataFactory
  • RootFolder هو حقل إلزامي يمثل مكان وجود موارد Data Factory.
  • FactoryId هو حقل إلزامي يمثل معرّف مورد Data Factory بالتنسيق /subscriptions/<subId>/resourceGroups/<rgName>/providers/Microsoft.DataFactory/factories/<dfName>.

أنشئ خط Azure

في حين أنه يمكن استهلاك حزم npm بطرق مختلفة، يتم استهلاك إحدى الفوائد الأساسية عبر Azure Pipeline. في كل عملية دمج في فرع التعاون الخاص بك، يمكن تشغيل خط تدفقات يقوم أولاً بالتحقق من صحة جميع التعليمات البرمجية ثم تصدير قالب ARM إلى أداة بناء يمكن استهلاكها بواسطة خط تدفقات الإصدار. إن مدى اختلافها عن عملية CI/CD الحالية هو أنك ستوجه خط تدفقات الإصدار إلى هذه الأداة بدلاً من فرع adf_publish الحالي.

اتبع الخطوات التالية للبدء:

  1. افتح مشروع DevOps Azure، ثم انتقل إلى "Pipelines". حدد "مسار جديد".

    Screenshot that shows the New pipeline button.

  2. حدد المستودع حيث تريد حفظ برنامج YAML النصي الخاص بخط التدفقات. نوصي بحفظه في مجلد بناء في نفس مستودع موارد Data Factory الخاص بك. تأكد من وجود ملف package.json في المستودع الذي يحتوي على اسم الحزمة، كما هو موضح في المثال التالي:

    {
        "scripts":{
            "build":"node node_modules/@microsoft/azure-data-factory-utilities/lib/index"
        },
        "dependencies":{
            "@microsoft/azure-data-factory-utilities":"^1.0.0"
        }
    } 
    
  3. حدد "Starter pipeline". إذا قمت بتحميل أو دمج ملف YAML، كما هو موضح في المثال التالي، فيمكنك أيضاً الإشارة مباشرةً إلى ذلك وتعديله.

    Screenshot that shows Starter pipeline.

    # Sample YAML file to validate and export an ARM template into a build artifact
    # Requires a package.json file located in the target repository
    
    trigger:
    - main #collaboration branch
    
    pool:
      vmImage: 'ubuntu-latest'
    
    steps:
    
    # Installs Node and the npm packages saved in your package.json file in the build
    
    - task: UseNode@1
      inputs:
        version: '18.x'
      displayName: 'Install Node.js'
    
    - task: Npm@1
      inputs:
        command: 'install'
        workingDir: '$(Build.Repository.LocalPath)/<folder-of-the-package.json-file>' #replace with the package.json folder
        verbose: true
      displayName: 'Install npm package'
    
    # Validates all of the Data Factory resources in the repository. You'll get the same validation errors as when "Validate All" is selected.
    # Enter the appropriate subscription and name for the source factory. Either of the "Validate" or "Validate and Generate ARM temmplate" options are required to perform validation. Running both is unnecessary.
    
    - task: Npm@1
      inputs:
        command: 'custom'
        workingDir: '$(Build.Repository.LocalPath)/<folder-of-the-package.json-file>' #replace with the package.json folder
        customCommand: 'run build validate $(Build.Repository.LocalPath)/<Root-folder-from-Git-configuration-settings-in-ADF> /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/<Your-ResourceGroup-Name>/providers/Microsoft.DataFactory/factories/<Your-Factory-Name>'
      displayName: 'Validate'
    
    # Validate and then generate the ARM template into the destination folder, which is the same as selecting "Publish" from the UX.
    # The ARM template generated isn't published to the live version of the factory. Deployment should be done by using a CI/CD pipeline. 
    
    - task: Npm@1
      inputs:
        command: 'custom'
        workingDir: '$(Build.Repository.LocalPath)/<folder-of-the-package.json-file>' #replace with the package.json folder
        customCommand: 'run build export $(Build.Repository.LocalPath)/<Root-folder-from-Git-configuration-settings-in-ADF> /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/<Your-ResourceGroup-Name>/providers/Microsoft.DataFactory/factories/<Your-Factory-Name> "ArmTemplate"'
    #For using preview that allows you to only stop/ start triggers that are modified, please comment out the above line and uncomment the below line. Make sure the package.json contains the build-preview command. 
     #customCommand: 'run build-preview export $(Build.Repository.LocalPath) /subscriptions/222f1459-6ebd-4896-82ab-652d5f6883cf/resourceGroups/GartnerMQ2021/providers/Microsoft.DataFactory/factories/Dev-GartnerMQ2021-DataFactory "ArmTemplate"'
      displayName: 'Validate and Generate ARM template'
    
    # Publish the artifact to be used as a source for a release pipeline.
    
    - task: PublishPipelineArtifact@1
      inputs:
        targetPath: '$(Build.Repository.LocalPath)/<folder-of-the-package.json-file>/ArmTemplate' #replace with the package.json folder
        artifact: 'ArmTemplates'
        publishLocation: 'pipeline'
    
  4. أدخل التعليمة البرمجية لـ YAML. نوصي باستخدام ملف YAML كنقطة بداية.

  5. حفظ وتشغيل. إذا استخدمت YAML، فسيتم تشغيله مع كل تحديث للفرع الرئيسي.

إشعار

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

تعرف على مزيد من المعلومات حول التكامل والتسليم المستمرين في Data Factory: التكامل والتسليم المستمرين في Azure Data Factory.