تقنيات CI/CD مع مجلدات Git وDatabricks Git (Repos)

تعرف على تقنيات استخدام مجلدات Databricks Git في مهام سير عمل CI/CD. من خلال تكوين مجلدات Databricks Git في مساحة العمل، يمكنك استخدام التحكم بالمصادر لملفات المشروع في مستودعات Git ويمكنك دمجها في مسارات هندسة البيانات الخاصة بك.

يوضح الشكل التالي نظرة عامة على التقنيات وسير العمل.

نظرة عامة على تقنيات CI/CD لمجلدات Git.

للحصول على نظرة عامة حول CI/CD مع Azure Databricks، راجع ما هو CI/CD على Azure Databricks؟.

تدفق التطوير

تحتوي مجلدات Databricks Git على مجلدات على مستوى المستخدم. يتم إنشاء المجلدات على مستوى المستخدم تلقائيا عندما يقوم المستخدمون باستنساخ مستودع بعيد لأول مرة. يمكنك التفكير في مجلدات Databricks Git في مجلدات المستخدم على أنها "عمليات سحب محلية" فردية لكل مستخدم وحيث يقوم المستخدمون بإجراء تغييرات على التعليمات البرمجية الخاصة بهم.

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

المتطلبات

يتطلب سير العمل هذا أن تكون قد قمت بالفعل بإعداد تكامل Git الخاص بك.

إشعار

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

التعاون في العمل في مجلدات Git

يستخدم سير العمل التالي فرعا يسمى feature-b يستند إلى الفرع الرئيسي.

  1. استنساخ مستودع Git الحالي إلى مساحة عمل Databricks.
  2. استخدم واجهة مستخدم مجلدات Git لإنشاء فرع ميزة من الفرع الرئيسي. يستخدم هذا المثال فرع feature-b ميزة واحد للتبسيط. يمكنك إنشاء واستخدام فروع ميزات متعددة للقيام بعملك.
  3. قم بإجراء التعديلات على دفاتر ملاحظات Azure Databricks والملفات الأخرى في المستودع.
  4. تثبيت التغييرات ودفعها إلى موفر Git الخاص بك.
  5. يمكن للمساهمين الآن استنساخ مستودع Git في مجلد المستخدم الخاص بهم.
    1. عند العمل على فرع جديد، يقوم زميل في العمل بإجراء تغييرات على دفاتر الملاحظات والملفات الأخرى في مجلد Git.
    2. يلتزم المساهم ويدفع تغييراته إلى موفر Git.
  6. لدمج التغييرات من الفروع الأخرى أو إعادة إنشاء فرع feature-b في Databricks، في واجهة مستخدم مجلدات Git استخدم أحد مهام سير العمل التالية:
  7. عندما تكون مستعدا لدمج عملك في مستودع Git البعيد والفرع main ، استخدم واجهة مستخدم مجلدات Git لدمج التغييرات من الميزة b. إذا كنت تفضل ذلك، يمكنك بدلا من ذلك دمج التغييرات مباشرة إلى مستودع Git الذي يدعم مجلد Git الخاص بك.

سير عمل مهمة الإنتاج

توفر مجلدات Databricks Git خيارين لتشغيل مهام الإنتاج:

  • الخيار 1: توفير مرجع Git بعيد في تعريف الوظيفة. على سبيل المثال، قم بتشغيل دفتر ملاحظات معين في main فرع مستودع Git.
  • الخيار 2: إعداد مستودع Git للإنتاج واستدعاء واجهات برمجة تطبيقات Repos لتحديثه برمجيا. تشغيل المهام مقابل مجلد Databricks Git الذي ينسخ هذا المستودع البعيد. يجب أن يكون استدعاء Repos API هو المهمة الأولى في المهمة.

الخيار 1: تشغيل المهام باستخدام دفاتر الملاحظات في مستودع بعيد

تبسيط عملية تعريف الوظيفة والاحتفاظ بمصدر واحد للحقيقة عن طريق تشغيل مهمة Azure Databricks باستخدام دفاتر الملاحظات الموجودة في مستودع Git بعيد. يمكن أن يكون مرجع Git هذا تثبيت Git أو علامة أو فرع ويتم توفيره من قبلك في تعريف الوظيفة.

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

راجع استخدام التعليمات البرمجية المصدر التي يتحكم فيها الإصدار في مهمة Azure Databricks.

الخيار 2: إعداد مجلد Git للإنتاج وأتمتة Git

في هذا الخيار، يمكنك إعداد مجلد Git للإنتاج والتشغيل التلقائي لتحديث مجلد Git عند الدمج.

الخطوة 1: إعداد مجلدات المستوى الأعلى

يقوم المسؤول بإنشاء مجلدات ذات مستوى أعلى غير مستخدم. حالة الاستخدام الأكثر شيوعا لهذه المجلدات ذات المستوى الأعلى هي إنشاء مجلدات التطوير والتقسيم المرحلي والإنتاج التي تحتوي على مجلدات Databricks Git للإصدارات أو الفروع المناسبة للتطوير والتقسيم المرحلي والإنتاج. على سبيل المثال، إذا كانت شركتك تستخدم main الفرع للإنتاج، فيجب أن يحتوي مجلد Git "الإنتاج" على main الفرع الذي تم سحبه فيه.

عادة ما تكون الأذونات الموجودة في مجلدات المستوى الأعلى هذه للقراءة فقط لجميع المستخدمين غير المسؤولين داخل مساحة العمل. بالنسبة إلى مجلدات المستوى الأعلى هذه، نوصي فقط بتوفير أذونات CAN EDIT و CAN MANAGE لتجنب عمليات التحرير العرضية لرمز الإنتاج الخاص بك من قبل مستخدمي مساحة العمل.

مجلدات Git ذات المستوى الأعلى.

الخطوة 2: إعداد التحديثات التلقائية لمجلدات Databricks Git باستخدام واجهة برمجة تطبيقات مجلدات Git

للاحتفاظ بمجلد Git في Databricks في أحدث إصدار، يمكنك إعداد أتمتة Git لاستدعاء واجهة برمجة تطبيقات Repos. في موفر Git الخاص بك، قم بإعداد التنفيذ التلقائي الذي، بعد كل دمج ناجح ل PR في الفرع الرئيسي، يستدعي نقطة نهاية Repos API على مجلد Git المناسب لتحديثه إلى أحدث إصدار.

على سبيل المثال، على GitHub يمكن تحقيق ذلك باستخدام GitHub Actions. لمزيد من المعلومات، راجع Repos API.

لاستدعاء أي Databricks REST API من داخل خلية دفتر ملاحظات Databricks، قم أولا بتثبيت Databricks SDK مع %pip install databricks-sdk --upgrade (للحصول على أحدث واجهات برمجة تطبيقات Databricks REST) ثم قم بالاستيراد ApiClient من databricks.sdk.core.

إشعار

إذا %pip install databricks-sdk --upgrade أرجع خطأ "تعذر العثور على الحزمة"، فهذا databricks-sdk يعني أنه لم يتم تثبيت الحزمة مسبقا. أعد تشغيل الأمر بدون العلامة --upgrade : %pip install databricks-sdk.

يمكنك أيضا تشغيل واجهات برمجة تطبيقات Databricks SDK من دفتر ملاحظات لاسترداد كيانات الخدمة لمساحة العمل الخاصة بك. فيما يلي مثال باستخدام Python وDatabricks SDK ل Python.

يمكنك أيضا استخدام أدوات مثل curlأو Postman أو Terraform. لا يمكنك استخدام واجهة مستخدم Azure Databricks.

لمعرفة المزيد حول كيانات الخدمة على Azure Databricks، راجع إدارة أساسيات الخدمة. للحصول على معلومات حول كيانات الخدمة وCI/CD، راجع أساسيات الخدمة ل CI/CD. لمزيد من التفاصيل حول استخدام Databricks SDK من دفتر ملاحظات، اقرأ استخدام Databricks SDK ل Python من داخل دفتر ملاحظات Databricks.

استخدام كيان خدمة مع مجلدات Databricks Git

لتشغيل مهام سير العمل المذكورة أعلاه مع كيانات الخدمة:

  1. إنشاء كيان خدمة باستخدام Azure Databricks.
  2. أضف بيانات اعتماد git: استخدم موفر Git PAT الخاص بك لمدير الخدمة.

لإعداد كيانات الخدمة ثم إضافة بيانات اعتماد موفر Git:

  1. إنشاء كيان الخدمة. راجع تشغيل المهام باستخدام كيانات الخدمة.
  2. إنشاء رمز مميز لمعرف Microsoft Entra لكيان الخدمة.
  3. بعد إنشاء كيان خدمة، يمكنك إضافته إلى مساحة عمل Azure Databricks باستخدام واجهة برمجة تطبيقات كيان الخدمة.
  4. أضف بيانات اعتماد موفر Git إلى مساحة العمل الخاصة بك باستخدام الرمز المميز لمعرف Microsoft Entra وواجهة برمجة تطبيقات بيانات اعتماد Git.

تكامل Terraform

يمكنك أيضا إدارة مجلدات Databricks Git في إعداد تلقائي بالكامل باستخدام Terraform databricks_repo:

resource "databricks_repo" "this" {
  url = "https://github.com/user/demo.git"
}

لاستخدام Terraform لإضافة بيانات اعتماد Git إلى كيان الخدمة، أضف التكوين التالي:

  provider "databricks" {
    # Configuration options
  }

  provider "databricks" {
    alias = "sp"
    host = "https://....cloud.databricks.com"
    token = databricks_obo_token.this.token_value
  }

  resource "databricks_service_principal" "sp" {
    display_name = "service_principal_name_here"
  }

  resource "databricks_obo_token" "this" {
    application_id   = databricks_service_principal.sp.application_id
    comment          = "PAT on behalf of ${databricks_service_principal.sp.display_name}"
    lifetime_seconds = 3600
  }

  resource "databricks_git_credential" "sp" {
    provider = databricks.sp
    depends_on = [databricks_obo_token.this]
    git_username          = "myuser"
    git_provider          = "azureDevOpsServices"
    personal_access_token = "sometoken"
  }

تكوين مسار CI/CD تلقائي باستخدام مجلدات Databricks Git

فيما يلي أتمتة بسيطة يمكن تشغيلها كإجراء GitHub.

المتطلبات

  1. لقد قمت بإنشاء مجلد Git في مساحة عمل Databricks التي تتعقب الفرع الأساسي الذي يتم دمجه فيه.
  2. لديك حزمة Python التي تنشئ البيانات الاصطناعية لوضعها في موقع DBFS. يجب أن تكون التعليمات البرمجية الخاصة بك:
    • قم بتحديث المستودع المقترن بالفرع المفضل لديك (مثل development) لاحتواء أحدث إصدارات دفاتر الملاحظات.
    • إنشاء أي بيانات اصطناعية ونسخها إلى مسار المكتبة.
    • استبدل الإصدارات الأخيرة من البيانات الاصطناعية للبناء لتجنب الاضطرار إلى تحديث إصدارات البيانات الاصطناعية يدويا في وظيفتك.

‏‏الخطوات

إشعار

يجب تنفيذ الخطوة 1 من قبل مسؤول مستودع Git.

  1. قم بإعداد البيانات السرية حتى تتمكن التعليمات البرمجية الخاصة بك من الوصول إلى مساحة عمل Databricks. أضف الأسرار التالية إلى مستودع Github:

  2. انتقل إلى علامة التبويب Actions في مستودع Git وانقر فوق الزر New workflow . في أعلى الصفحة، حدد إعداد سير عمل بنفسك والصقه في هذا البرنامج النصي:

    رابط

    # This is a basic automation workflow to help you get started with GitHub Actions.
    
    name: CI
    
      # Controls when the workflow will run
      on:
        # Triggers the workflow on push for main and dev branch
        push:
          branches:
            # Set your base branch name here
            - your-base-branch-name
    
      # A workflow run is made up of one or more jobs that can run sequentially or in parallel
      jobs:
        # This workflow contains a single job called "deploy"
        deploy:
          # The type of runner that the job will run on
          runs-on: ubuntu-latest
          env:
            DBFS_LIB_PATH: dbfs:/path/to/libraries/
            REPO_PATH: /Repos/path/here
            LATEST_WHEEL_NAME: latest_wheel_name.whl
    
          # Steps represent a sequence of tasks that will be executed as part of the job
          steps:
          # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
          - uses: actions/checkout@v2
    
          - name: Setup Python
            uses: actions/setup-python@v2
            with:
            # Version range or exact version of a Python version to use, using SemVer's version range syntax.
              python-version: 3.8
    
          - name: Install mods
            run: |
              pip install databricks-cli
              pip install pytest setuptools wheel
    
          - name: Configure CLI
            run: |
              echo "${{ secrets.DEPLOYMENT_TARGET_URL }} ${{ secrets.DEPLOYMENT_TARGET_TOKEN }}" | databricks configure --token
    
          - name: Extract branch name
            shell: bash
            run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})"
            id: extract_branch
    
          - name: Update Databricks Git folder
            run: |
              databricks repos update --path ${{env.REPO_PATH}} --branch "${{ steps.extract_branch.outputs.branch }}"
    
          - name: Build Wheel and send to Databricks workspace DBFS location
            run: |
              cd $GITHUB_WORKSPACE
              python setup.py bdist_wheel
              dbfs cp --overwrite ./dist/* ${{env.DBFS_LIB_PATH}}
              # there is only one wheel file; this line copies it with the original version number in file name and overwrites if that version of wheel exists; it does not affect the other files in the path
              dbfs cp --overwrite ./dist/* ${{env.DBFS_LIB_PATH}}${{env.LATEST_WHEEL_NAME}} # this line copies the wheel file and overwrites the latest version with it
    
  3. قم بتحديث قيم متغيرات البيئة التالية مع قيمك الخاصة:

    • DBFS_LIB_PATH: المسار في DBFS إلى المكتبات (العجلات) التي ستستخدمها في هذه الأتمتة، والتي تبدأ ب dbfs:. على سبيل المثال،dbfs:/mnt/myproject/libraries .
    • REPO_PATH: المسار في مساحة عمل Databricks إلى مجلد Git حيث سيتم تحديث دفاتر الملاحظات. على سبيل المثال، /Repos/Develop
    • LATEST_WHEEL_NAME: اسم ملف عجلة Python الذي تم تحويله برمجيا مؤخرا (.whl). يتم استخدام هذا لتجنب تحديث إصدارات العجلة يدويا في مهام Databricks. على سبيل المثال، your_wheel-latest-py3-none-any.whl
  4. حدد Commit changes... لتثبيت البرنامج النصي كسير عمل GitHub Actions. بمجرد دمج طلب السحب لسير العمل هذا، انتقل إلى علامة التبويب Actions في مستودع Git وتأكد من نجاح الإجراءات.