Методы CI/CD с папками Git и Databricks Git (Repos)
Узнайте, как использовать папки Databricks Git в рабочих процессах CI/CD. Настроив папки Databricks Git в рабочей области, вы можете использовать управление версиями для файлов проекта в репозиториях Git и интегрировать их в конвейеры проектирования данных.
На следующем рисунке показан обзор методов и рабочих процессов.
Общие сведения о CI/CD с Azure Databricks см. в статье "Что такое CI/CD в Azure Databricks?".
Поток разработки
Папки Databricks Git имеют папки уровня пользователя. Папки уровня пользователя создаются автоматически при первом клонировании удаленного репозитория. Вы можете рассматривать папки Databricks Git в пользовательских папках как "локальные кассы", которые являются отдельными для каждого пользователя и где пользователи вносят изменения в свой код.
В папке пользователя в папках Databricks Git клонируйте удаленный репозиторий. Рекомендуется создать новую ветвь функции или выбрать ранее созданную ветвь для работы вместо того, чтобы фиксировать и отправлять изменения непосредственно в главную ветвь. В этой ветви можно вносить изменения, фиксировать и отправлять изменения. Когда вы будете готовы объединить код, это можно сделать в пользовательском интерфейсе папок Git.
Требования
Для этого рабочего процесса требуется ранее настроенная интеграция с Git.
Примечание.
Databricks рекомендует каждому разработчику работать на собственных ветвь компонента. Дополнительные сведения об устранении конфликтов слияния см. в статье Разрешение конфликтов слияния.
Совместная работа в папках Git
Следующий рабочий процесс использует вызываемую feature-b
ветвь на основе основной ветви.
- Клонируйте существующий репозиторий Git в рабочую область Databricks.
- Используйте пользовательский интерфейс папок Git для создания ветвь компонента из основной ветви. В этом примере для простоты используется один ветвь компонента
feature-b
. Для выполнения работы можно создать и использовать несколько ветвей функций. - Внесите изменения в записные книжки Azure Databricks и другие файлы в репозитории.
- Зафиксируйте и отправьте изменения в поставщик Git.
- Участники теперь могут клонировать репозиторий Git в собственную папку пользователя.
- Работая с новой ветвью, сотрудник вносит изменения в записные книжки и другие файлы в папке Git.
- Участник фиксирует и отправляет изменения поставщику Git.
- Чтобы объединить изменения из других ветвей или перебазировать ветвь feature-b в Databricks, в пользовательском интерфейсе папок Git используйте один из следующих рабочих процессов:
- Слияние ветвей. Если конфликта нет, слияние отправляется в удаленный репозиторий Git с помощью
git push
. - Перебазироваться на другую ветвь.
- Слияние ветвей. Если конфликта нет, слияние отправляется в удаленный репозиторий Git с помощью
- Когда вы будете готовы объединить работу с удаленным репозиторием и
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, чтобы избежать случайных изменений в рабочем коде пользователями рабочей области.
Шаг 2. Настройка автоматических обновлений для папок Git Databricks с помощью API папок Git
Чтобы сохранить папку Git в Databricks в последней версии, можно настроить автоматизацию Git для вызова API Repos. В поставщике Git настройте автоматизацию, которая после каждого успешного слияния PR в главную ветвь вызывает конечную точку API Repos в соответствующей папке Git, чтобы обновить ее до последней версии.
Например, в GitHub это можно сделать с помощью GitHub Actions. Дополнительные сведения см. в статье Repos API.
Чтобы вызвать любой REST API Databricks из ячейки записной книжки Databricks, сначала установите пакет SDK Databricks с %pip install databricks-sdk --upgrade
(для последних REST API Databricks), а затем импортируйте ApiClient
из databricks.sdk.core
.
Примечание.
Если %pip install databricks-sdk --upgrade
возвращается сообщение об ошибке "Не удалось найти пакет", пакет databricks-sdk
не был установлен ранее. Повторно выполните команду без флага--upgrade
: %pip install databricks-sdk
Вы также можете запустить API пакета SDK Databricks из записной книжки, чтобы получить субъекты-службы для рабочей области. Ниже приведен пример использования Python и пакета SDK Databricks для Python.
Вы также можете использовать такие инструменты, как curl
Terraform. Но вы не можете использовать пользовательский интерфейс Azure Databricks.
Дополнительные сведения о субъектах-службах в Azure Databricks см. в статье "Управление субъектами-службами". Сведения о субъектах-службах и CI/CD см. в статье Субъекты-службы для CI/CD. Дополнительные сведения об использовании пакета SDK Databricks из записной книжки см. в статье Об использовании пакета SDK Databricks для Python из записной книжки Databricks.
Использование субъекта-службы с папками Databricks Git
Чтобы запустить описанные выше рабочие процессы с субъектами-службами:
- Создайте субъект-службу с помощью Azure Databricks.
- Добавьте учетные данные Git: используйте поставщик Git PAT для субъекта-службы.
Чтобы настроить субъекты-службы, а затем добавить учетные данные поставщика Git, сделайте следующее:
- Создание субъекта-службы. См. статью Выполнение заданий с помощью субъекта-службы.
- Создайте маркер идентификатора Microsoft Entra для субъекта-службы.
- После создания субъекта-службы вы добавите его в рабочую область Azure Databricks с помощью API субъектов-служб.
- Добавьте учетные данные поставщика Git в рабочую область с маркером идентификатора Microsoft Entra и API учетных данных 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.
Требования
- Вы создали папку Git в рабочей области Databricks, которая отслеживает объединение базовая ветвь.
- У вас есть пакет Python, который создает артефакты для размещения в расположении DBFS. Код должен:
- Обновите репозиторий, связанный с предпочитаемой ветвью (например
development
), чтобы содержать последние версии записных книжек. - Создайте все артефакты и скопируйте их в путь библиотеки.
- Замените последние версии артефактов сборки, чтобы избежать необходимости вручную обновлять версии артефактов в задании.
- Обновите репозиторий, связанный с предпочитаемой ветвью (например
Создание автоматизированного рабочего процесса CI/CD
Настройте секреты , чтобы код смог получить доступ к рабочей области Databricks. Добавьте следующие секреты в репозиторий Github:
- DEPLOYMENT_TARGET_URL. Задайте этот URL-адрес рабочей области. Не включайте
/?o
подстроку. - DEPLOYMENT_TARGET_TOKEN. Задайте для этого маркер личного доступа Databricks (PAT). Вы можете создать Databricks PAT, следуя инструкциям в проверке подлинности маркера личного доступа Azure Databricks.
- DEPLOYMENT_TARGET_URL. Задайте этот URL-адрес рабочей области. Не включайте
Перейдите на вкладку "Действия " репозитория 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
Обновите следующие значения переменных среды собственными:
- 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
.
- DBFS_LIB_PATH. Путь в DBFS к библиотекам (колесам) будет использоваться в этой автоматизации, которая начинается с
Выберите "Зафиксировать изменения", чтобы зафиксировать скрипт как рабочий процесс GitHub Actions. После объединения запроса на вытягивание для этого рабочего процесса перейдите на вкладку "Действия " репозитория Git и убедитесь, что действия успешны.