Методы CI/CD с папками Git и Databricks Git (Repos)
Узнайте, как использовать папки Databricks Git в рабочих процессах CI/CD. Настроив папки Databricks Git в рабочей области, вы можете использовать управление версиями для файлов проекта в репозиториях Git и интегрировать их в конвейеры проектирования данных.
На следующем рисунке показан обзор методов и рабочих процессов.
Общие сведения о CI/CD с Azure Databricks см. в статье "Что такое CI/CD в Azure Databricks?".
Поток разработки
Папки Databricks Git имеют папки уровня пользователя. Папки уровня пользователя создаются автоматически при первом клонировании удаленного репозитория. Вы можете рассматривать папки Git Databricks в пользовательских папках как "локальные копии", которые являются индивидуальными для каждого пользователя и где пользователи вносят изменения в свой код.
В папке пользователя в папках 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.
Использование учетной записи службы для автоматизации с папками Databricks Git
Вы можете использовать консоль учетной записи Azure Databricks или инструмент командной строки Databricks (CLI) для создания служебного объекта, уполномоченного для доступа к Git-папкам вашей рабочей области.
Сведения о создании нового субъекта-службы см. в разделе Управление субъектами-службами. Если у вас есть учетная запись службы в рабочей области, вы можете связать учетные данные Git с ней, чтобы обеспечить доступ к папкам Git рабочей области в рамках автоматизации.
Авторизация принципала службы для доступа к Git-папкам.
Чтобы предоставить авторизованный доступ к папкам Git для субъекта-службы с помощью консоли учетной записи Azure Databricks:
Войдите в рабочую область Azure Databricks. Для выполнения этих действий необходимо иметь права администратора для рабочей области. Если у вас нет прав администратора для рабочей области, попросите их или обратитесь к администратору учетной записи.
В правом верхнем углу любой страницы щелкните по своему имени пользователя, а затем выберите Настройки.
Выберите Идентификацию и доступ в разделе Администратор рабочей области в левой панели навигации, затем щелкните кнопку Управление для главных служб.
В списке сервисных принципалов выберите тот, который вы хотите обновить, добавив учетные данные Git. Вы также можете создать субъект-службу, выбрав Добавить субъект-службу.
Выберите вкладку интеграции Git. (Если вы не создали субъект-службу или вам не были назначены привилегии диспетчера этой субъект-службы, она будет неактивной.) В ней выберите поставщика Git для учетных данных (например, GitHub), выберите Привязать учетную запись Git, а затем выберите Привязать.
Вы также можете использовать личный маркер доступа Git (PAT), если вы не хотите связать свои учетные данные Git. Чтобы использовать pat вместо этого, выберите личный маркер доступа и укажите сведения о маркере для учетной записи Git, используемой при проверке подлинности доступа субъекта-службы. Более подробную информацию о получении PAT от поставщика Git можно найти в статье Конфигурирование учетных данных Git & подключение удаленного репозитория к Azure Databricks.
Вам будет предложено выбрать учетную запись пользователя Git для ссылки. Выберите учетную запись пользователя Git, используемую субъектом-службой для доступа, и выберите Продолжить. Если не видите учетную запись пользователя, которую хотите использовать, выберите Использовать другую учетную запись.
В следующем диалоговом окне выберите Авторизовать 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
Настройте секреты , чтобы ваш код мог получить доступ к рабочей области Databricks. Добавьте следующие секреты в репозиторий Github:
-
DEPLOYMENT_TARGET_URL: Задайте этот URL-адрес рабочей области. Не включайте
/?o
подстроку. - DEPLOYMENT_TARGET_TOKEN: Установите это значение как персональный токен доступа (PAT) в Databricks. Вы можете создать 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 и убедитесь, что действия успешны.