Поделиться через


Методы 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 имеют папки уровня пользователя. Папки уровня пользователя создаются автоматически при первом клонировании удаленного репозитория. Вы можете рассматривать папки Git Databricks в пользовательских папках как "локальные копии", которые являются индивидуальными для каждого пользователя и где пользователи вносят изменения в свой код.

В папке пользователя в папках 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. Когда вы будете готовы объединить работу с удаленным репозиторием и main ветвью Git, используйте пользовательский интерфейс папок Git для слияния изменений из feature-b. Если вы предпочитаете, вы можете вместо этого объединить изменения непосредственно в репозиторий Git, который поддерживает папку Git.

Рабочий процесс рабочего задания

Папки Databricks Git предоставляют два варианта выполнения рабочих заданий:

  • Вариант 1. Укажите удаленную ссылку на Git в определении задания. Например, запустите определенную записную книжку в main ветви репозитория Git.
  • вариант 2. Настройка рабочего репозитория Git и вызов API Repos для программного обновления. Запустите задания в папке Databricks Git, которая клонирует этот удаленный репозиторий. Вызов API Repos должен быть первой задачей в задании.

Вариант 1. Выполнение заданий с помощью записных книжек в удаленный репозиторий

Упростите процесс определения задания и сохраните один источник истины, выполнив задание Azure Databricks с помощью записных книжек, расположенных в удаленном репозитории Git. Эта ссылка на Git может быть фиксацией, тегом или ветвью Git и предоставляется вами в определении задания.

Это помогает предотвратить непреднамеренные изменения в рабочем задании, например, когда пользователь вносит локальные изменения в рабочий репозиторий или переключает ветви. Он также автоматизирует шаг CD, так как вам не нужно создавать отдельную рабочую папку Git в Databricks, управлять разрешениями для него и поддерживать его обновление.

См. статью "Использование Git" с заданиями.

вариант 2. Настройка рабочей папки Git и автоматизации Git

В этом случае вы настроили рабочую папку Git и автоматизацию для обновления папки Git при слиянии.

Шаг 1. Настройка папок верхнего уровня

Администратор создает папки верхнего уровня, не являющиеся пользователями. Наиболее распространенным вариантом использования этих папок верхнего уровня является создание папок разработки, промежуточного хранения и рабочих папок, содержащих папки Databricks Git для соответствующих версий или ветвей для разработки, промежуточного хранения и рабочей среды. Например, если ваша компания использует main ветвь для рабочей среды, папка Git "production" должна иметь в ней main извлеченную ветвь.

Обычно разрешения для этих папок верхнего уровня доступны только для чтения для всех пользователей, не являющихся администраторами в рабочей области. Для таких папок верхнего уровня рекомендуется предоставлять только субъекты-службы с разрешениями CAN EDIT и CAN MANAGE, чтобы избежать случайных изменений в рабочем коде пользователями рабочей области.

Папки Git верхнего уровня.

Шаг 2. Настройка автоматических обновлений для папок Git Databricks с помощью API папок Git

Чтобы сохранить папку Git в Databricks в последней версии, можно настроить автоматизацию Git для вызова API Repos. В поставщике Git настройте автоматизацию, которая после каждого успешного слияния PR в главную ветвь вызывает конечную точку API Repos в соответствующей папке Git, чтобы обновить ее до последней версии.

Например, в GitHub это можно сделать с помощью GitHub Actions. Дополнительные сведения см. в статье Repos API.

Использование учетной записи службы для автоматизации с папками Databricks Git

Вы можете использовать консоль учетной записи Azure Databricks или инструмент командной строки Databricks (CLI) для создания служебного объекта, уполномоченного для доступа к Git-папкам вашей рабочей области.

Сведения о создании нового субъекта-службы см. в разделе Управление субъектами-службами. Если у вас есть учетная запись службы в рабочей области, вы можете связать учетные данные Git с ней, чтобы обеспечить доступ к папкам Git рабочей области в рамках автоматизации.

Авторизация принципала службы для доступа к Git-папкам.

Чтобы предоставить авторизованный доступ к папкам Git для субъекта-службы с помощью консоли учетной записи Azure Databricks:

  1. Войдите в рабочую область Azure Databricks. Для выполнения этих действий необходимо иметь права администратора для рабочей области. Если у вас нет прав администратора для рабочей области, попросите их или обратитесь к администратору учетной записи.

  2. В правом верхнем углу любой страницы щелкните по своему имени пользователя, а затем выберите Настройки.

  3. Выберите Идентификацию и доступ в разделе Администратор рабочей области в левой панели навигации, затем щелкните кнопку Управление для главных служб.

    Страница сервисного принципала в параметрах рабочей области

  4. В списке сервисных принципалов выберите тот, который вы хотите обновить, добавив учетные данные Git. Вы также можете создать субъект-службу, выбрав Добавить субъект-службу.

    Создание или добавление принципа службы с помощью консоли учетной записи Databricks

  5. Выберите вкладку интеграции Git. (Если вы не создали субъект-службу или вам не были назначены привилегии диспетчера этой субъект-службы, она будет неактивной.) В ней выберите поставщика Git для учетных данных (например, GitHub), выберите Привязать учетную запись Git, а затем выберите Привязать.

    Вы также можете использовать личный маркер доступа Git (PAT), если вы не хотите связать свои учетные данные Git. Чтобы использовать pat вместо этого, выберите личный маркер доступа и укажите сведения о маркере для учетной записи Git, используемой при проверке подлинности доступа субъекта-службы. Более подробную информацию о получении PAT от поставщика Git можно найти в статье Конфигурирование учетных данных Git & подключение удаленного репозитория к Azure Databricks.

    Связывание учетных данных Git с учетной записью службы Databricks

  6. Вам будет предложено выбрать учетную запись пользователя Git для ссылки. Выберите учетную запись пользователя Git, используемую субъектом-службой для доступа, и выберите Продолжить. Если не видите учетную запись пользователя, которую хотите использовать, выберите Использовать другую учетную запись.

  7. В следующем диалоговом окне выберите Авторизовать Databricks. Вы кратко увидите сообщение "Связывание учетной записи..." а затем обновленные сведения об основном объекте службы.

    экран подтверждения успешной связи учетных данных Git

Выбранный служебный принципал будет применять связанные учетные данные Git при доступе к папкам Git рабочей области Azure Databricks как часть вашего автоматизированного процесса.

Интеграция 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.

Требования

  • Вы создали папку Git в рабочей области Databricks, которая отслеживает объединение базовая ветвь.
  • У вас есть пакет Python, который создает артефакты для размещения в расположении DBFS. Код должен:
    • Обновите репозиторий, связанный с предпочтительной ветвью (например, development), чтобы содержать последние версии записных книжек.
    • Создайте все артефакты и скопируйте их в путь библиотеки.
    • Замените последние версии артефактов сборки, чтобы избежать необходимости вручную обновлять версии артефактов в задании.

Создание автоматизированного рабочего процесса CI/CD

  1. Настройте секреты , чтобы ваш код мог получить доступ к рабочей области Databricks. Добавьте следующие секреты в репозиторий Github:

    • DEPLOYMENT_TARGET_URL: Задайте этот URL-адрес рабочей области. Не включайте /?o подстроку.
    • DEPLOYMENT_TARGET_TOKEN: Установите это значение как персональный токен доступа (PAT) в Databricks. Вы можете создать Databricks PAT, следуя инструкциям в аутентификации через личный токен доступа Azure Databricks.
  2. Перейдите на вкладку "Действия " репозитория Git и нажмите кнопку "Создать рабочий процесс ". В верхней части страницы выберите Настроить рабочий процесс самостоятельно и вставьте этот скрипт:

    ссылка

    # 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:
        paths-ignore:
          - .github
        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
        environment: development
        env:
          DATABRICKS_HOST: ${{ secrets.DEPLOYMENT_TARGET_URL }}
          DATABRICKS_TOKEN:  ${{ secrets.DEPLOYMENT_TARGET_TOKEN }}
          REPO_PATH: /Workspace/Users/someone@example.com/workspace-builder
          DBFS_LIB_PATH: dbfs:/path/to/libraries/
          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@v3
    
        - name: Setup Python
          uses: actions/setup-python@v3
          with:
          # Version range or exact version of a Python version to use, using SemVer's version range syntax.
            python-version: 3.8
    
        # Download the Databricks CLI. See https://github.com/databricks/setup-cli
        - uses: databricks/setup-cli@main
    
        - name: Install mods
          run: |
            pip install pytest setuptools wheel
    
        - 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 ${{env.REPO_PATH}} --branch "${{ steps.extract_branch.outputs.branch }}"
    
        - name: Build Wheel and send to Databricks DBFS workspace 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, где будут обновлены записные книжки.
    • LATEST_WHEEL_NAME: имя последнего скомпилированного колесика Python (.whl). Это позволяет избежать ручного обновления версий колес в заданиях Databricks. Например, your_wheel-latest-py3-none-any.whl.
  4. Выберите зафиксируйте изменения…, чтобы зафиксировать сценарий как рабочий процесс GitHub Actions. После объединения запроса на вытягивание для этого рабочего процесса перейдите на вкладку "Действия " репозитория Git и убедитесь, что действия успешны.