Teknik CI/CD dengan folder Git dan Databricks Git (Repos)
Pelajari teknik untuk menggunakan folder Databricks Git dalam alur kerja CI/CD. Dengan mengonfigurasi folder Databricks Git di ruang kerja, Anda dapat menggunakan kontrol sumber untuk file proyek di repositori Git dan Anda dapat mengintegrasikannya ke dalam alur rekayasa data Anda.
Gambar berikut menunjukkan gambaran umum teknik dan alur kerja.
Untuk gambaran umum CI/CD dengan Azure Databricks, lihat Apa itu CI/CD di Azure Databricks?.
Alur pengembangan
Folder Databricks Git memiliki folder tingkat pengguna. Folder tingkat pengguna secara otomatis dibuat ketika pengguna pertama kali mengkloning repositori jarak jauh. Anda dapat menganggap folder Databricks Git di folder pengguna sebagai "checkout lokal" yang bersifat individual untuk setiap pengguna dan di mana pengguna membuat perubahan pada kode mereka.
Di folder pengguna Anda di folder Databricks Git, kloning repositori jarak jauh Anda. Praktik terbaik adalah membuat cabang fitur baru atau memilih cabang yang dibuat sebelumnya untuk pekerjaan Anda, alih-alih langsung menerapkan dan mendorong perubahan ke cabang utama. Anda dapat membuat perubahan, menerapkan, dan mendorong perubahan di cabang tersebut. Ketika Anda siap untuk menggabungkan kode, Anda dapat melakukannya di antarmuka pengguna folder Git.
Persyaratan
Alur kerja ini mengharuskan Anda telah menyiapkan integrasi Git Anda.
Catatan
Databricks merekomendasikan agar setiap pengembang bekerja di cabang fitur mereka sendiri. Untuk informasi tentang cara mengatasi konflik penggabungan, lihat Mengatasi konflik penggabungan.
Berkolaborasi di folder Git
Alur kerja berikut menggunakan cabang yang disebut feature-b
yang didasarkan pada cabang utama.
- Kloning repositori Git Anda yang ada ke ruang kerja Databricks Anda.
- Gunakan antarmuka pengguna folder Git untuk membuat cabang fitur dari cabang utama. Contoh ini menggunakan cabang
feature-b
fitur tunggal untuk kesederhanaan. Anda dapat membuat dan menggunakan beberapa cabang fitur untuk melakukan pekerjaan Anda. - Buat modifikasi Anda pada notebook Azure Databricks dan file lain di repositori.
- Terapkan dan dorong perubahan pada penyedia Git Anda.
- Kontributor sekarang dapat mengkloning repositori Git ke dalam folder pengguna mereka sendiri.
- Mengerjakan cabang baru, rekan kerja membuat perubahan pada buku catatan dan file lain di folder Git.
- Kontributor menerapkan dan mendorong perubahan mereka ke penyedia Git.
- Untuk menggabungkan perubahan dari cabang lain atau melakukan rebase cabang feature-b di Databricks, di antarmuka pengguna folder Git gunakan salah satu alur kerja berikut:
- Menggabungkan cabang. Jika tidak ada konflik, penggabungan didorong ke repositori Git jarak jauh menggunakan
git push
. - Rebase pada cabang lain.
- Menggabungkan cabang. Jika tidak ada konflik, penggabungan didorong ke repositori Git jarak jauh menggunakan
- Ketika Anda siap untuk menggabungkan pekerjaan Anda ke repositori dan
main
cabang Git jarak jauh, gunakan antarmuka pengguna folder Git untuk menggabungkan perubahan dari fitur-b. Jika mau, Anda dapat menggabungkan perubahan langsung ke repositori Git yang mendukung folder Git Anda.
Alur kerja produksi
Folder Databricks Git menyediakan dua opsi untuk menjalankan pekerjaan produksi Anda:
- Opsi 1: Berikan referensi Git jarak jauh dalam definisi pekerjaan. Misalnya, jalankan notebook tertentu di
main
cabang repositori Git. - Opsi 2: Siapkan repositori Git produksi dan panggil REPOS API untuk memperbaruinya secara terprogram. Jalankan pekerjaan terhadap folder Databricks Git yang mengkloning repositori jarak jauh ini. Panggilan REPOS API harus menjadi tugas pertama dalam pekerjaan.
Opsi 1: Jalankan pekerjaan menggunakan notebook di repositori jarak jauh
Sederhanakan proses definisi kerja dan pertahankan satu sumber kebenaran dengan menjalankan pekerjaan Azure Databricks menggunakan notebook yang terletak di repositori Git jarak jauh. Referensi Git ini dapat menjadi penerapan, tag, atau cabang Git dan disediakan oleh Anda dalam definisi pekerjaan.
Ini membantu mencegah perubahan yang tidak disengaja pada pekerjaan produksi Anda, seperti ketika pengguna melakukan pengeditan lokal di repositori produksi atau mengalihkan cabang. Ini juga mengotomatiskan langkah CD karena Anda tidak perlu membuat folder Git produksi terpisah di Databricks, mengelola izin untuk itu, dan terus memperbaruinya.
Lihat Menggunakan kode sumber yang dikontrol versi dalam pekerjaan Azure Databricks.
Opsi 2: Siapkan folder Git produksi dan otomatisasi Git
Dalam opsi ini, Anda menyiapkan folder git produksi dan otomatisasi untuk memperbarui folder Git saat digabungkan.
Langkah 1: Menyiapkan folder tingkat atas
Admin membuat folder tingkat atas non-pengguna. Kasus penggunaan yang paling umum untuk folder tingkat atas ini adalah membuat folder pengembangan, penahapan, dan produksi yang berisi folder Databricks Git untuk versi atau cabang yang sesuai untuk pengembangan, penahapan, dan produksi. Misalnya, jika perusahaan Anda menggunakan main
cabang untuk produksi, folder Git "produksi" harus memiliki cabang yang main
dicek keluar di dalamnya.
Biasanya izin pada folder tingkat atas ini bersifat baca-saja untuk semua pengguna non-admin di dalam ruang kerja. Untuk folder tingkat atas tersebut, kami sarankan Anda hanya menyediakan izin CAN EDIT dan CAN MANAGE kepada perwakilan layanan untuk menghindari pengeditan yang tidak disengaja pada kode produksi Anda oleh pengguna ruang kerja.
Langkah 2: Siapkan pembaruan otomatis ke folder Databricks Git dengan API folder Git
Untuk menyimpan folder Git di Databricks pada versi terbaru, Anda dapat menyiapkan otomatisasi Git untuk memanggil REPOS API. Di penyedia Git Anda, siapkan otomatisasi yang, setelah setiap penggabungan PR berhasil ke cabang utama, memanggil titik akhir Repos API pada folder Git yang sesuai untuk memperbaruinya ke versi terbaru.
Misalnya, di GitHub ini dapat dicapai dengan Tindakan GitHub. Untuk informasi selengkapnya, lihat Repos API.
Untuk memanggil DATAbricks REST API dari dalam sel notebook Databricks, pertama-tama instal Databricks SDK dengan %pip install databricks-sdk --upgrade
(untuk DATAbricks REST API terbaru) lalu impor ApiClient
dari databricks.sdk.core
.
Catatan
Jika %pip install databricks-sdk --upgrade
mengembalikan kesalahan bahwa "Paket tidak dapat ditemukan", maka databricks-sdk
paket belum diinstal sebelumnya. Jalankan kembali perintah tanpa --upgrade
bendera: %pip install databricks-sdk
.
Anda juga dapat menjalankan API SDK Databricks dari notebook untuk mengambil perwakilan layanan untuk ruang kerja Anda. Berikut adalah contoh menggunakan Python dan Databricks SDK untuk Python.
Anda juga dapat menggunakan alat seperti curl
atau Terraform. Anda tidak dapat menggunakan antarmuka pengguna Azure Databricks.
Untuk mempelajari selengkapnya tentang perwakilan layanan di Azure Databricks, lihat Mengelola perwakilan layanan. Untuk informasi tentang perwakilan layanan dan CI/CD, lihat Perwakilan layanan untuk CI/CD. Untuk detail selengkapnya tentang menggunakan Databricks SDK dari buku catatan, baca Menggunakan Databricks SDK untuk Python dari dalam buku catatan Databricks.
Menggunakan perwakilan layanan dengan folder Databricks Git
Untuk menjalankan alur kerja yang disebutkan di atas dengan perwakilan layanan:
- Buat perwakilan layanan dengan Azure Databricks.
- Tambahkan kredensial git: Gunakan PAT penyedia Git Anda untuk perwakilan layanan.
Untuk menyiapkan perwakilan layanan, lalu tambahkan kredensial penyedia Git:
- Membuat perwakilan layanan. Lihat Menjalankan pekerjaan dengan perwakilan layanan.
- Buat token ID Microsoft Entra untuk perwakilan layanan.
- Setelah membuat perwakilan layanan, Anda menambahkannya ke ruang kerja Azure Databricks dengan API Perwakilan Layanan.
- Tambahkan kredensial penyedia Git Anda ke ruang kerja Anda dengan token ID Microsoft Entra dan API Kredensial Git.
Integrasi terraform
Anda juga dapat mengelola folder Databricks Git dalam penyiapan otomatis sepenuhnya menggunakan Terraform dan databricks_repo:
resource "databricks_repo" "this" {
url = "https://github.com/user/demo.git"
}
Untuk menggunakan Terraform untuk menambahkan kredensial Git ke perwakilan layanan, tambahkan konfigurasi berikut:
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"
}
Mengonfigurasi alur CI/CD otomatis dengan folder Databricks Git
Berikut adalah otomatisasi sederhana yang dapat dijalankan sebagai GitHub Action.
Persyaratan
- Anda telah membuat folder Git di ruang kerja Databricks yang melacak cabang dasar yang digabungkan.
- Anda memiliki paket Python yang membuat artefak untuk ditempatkan ke lokasi DBFS. Kode Anda harus:
- Perbarui repositori yang terkait dengan cabang pilihan Anda (seperti
development
) untuk berisi versi terbaru buku catatan Anda. - Buat artefak apa pun dan salin ke jalur pustaka.
- Ganti versi terakhir artefak build untuk menghindari harus memperbarui versi artefak secara manual dalam pekerjaan Anda.
- Perbarui repositori yang terkait dengan cabang pilihan Anda (seperti
Langkah-langkah
Catatan
Langkah 1 harus dilakukan oleh admin repositori Git.
Siapkan rahasia sehingga kode Anda dapat mengakses ruang kerja Databricks. Tambahkan rahasia berikut ke repositori Github:
- DEPLOYMENT_TARGET_URL: Atur ke URL ruang kerja, tetapi jangan sertakan
/?o
substring. - DEPLOYMENT_TARGET_TOKEN: Berikan nilai Token Akses Pribadi (PAT) Databricks. Anda dapat membuat PAT Databricks dengan mengikuti instruksi di Mengonfigurasi kredensial Git & menyambungkan repositori jarak jauh ke Azure Databricks.
- DEPLOYMENT_TARGET_URL: Atur ke URL ruang kerja, tetapi jangan sertakan
Navigasi ke tab Tindakan repositori Git Anda dan klik tombol Alur kerja baru. Di bagian atas halaman, pilih Siapkan alur kerja sendiri dan tempelkan di skrip ini:
# 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
Perbarui nilai variabel lingkungan berikut dengan nilai Anda sendiri:
- DBFS_LIB_PATH: Jalur di DBFS ke pustaka (roda) yang akan Anda gunakan dalam otomatisasi ini, yang dimulai dengan
dbfs:
. Misalnya,dbfs:/mnt/myproject/libraries
. - REPO_PATH: Jalur di ruang kerja Databricks Anda ke folder Git tempat notebook akan diperbarui. Contohnya,
/Repos/Develop
. - LATEST_WHEEL_NAME: Nama file roda Python yang terakhir dikompilasi (
.whl
). Ini digunakan untuk menghindari pembaruan versi roda secara manual dalam pekerjaan Databricks Anda. Contohnya,your_wheel-latest-py3-none-any.whl
.
- DBFS_LIB_PATH: Jalur di DBFS ke pustaka (roda) yang akan Anda gunakan dalam otomatisasi ini, yang dimulai dengan
Pilih Terapkan perubahan... untuk menerapkan skrip sebagai alur kerja GitHub Actions. Setelah permintaan pull untuk alur kerja ini digabungkan, buka tab Tindakan dari repositori Git dan konfirmasikan bahwa tindakan berhasil.