Bagikan melalui


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.

Gambaran umum teknik CI/CD untuk folder Git.

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.

  1. Kloning repositori Git Anda yang ada ke ruang kerja Databricks Anda.
  2. 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.
  3. Buat modifikasi Anda pada notebook Azure Databricks dan file lain di repositori.
  4. Terapkan dan dorong perubahan pada penyedia Git Anda.
  5. Kontributor sekarang dapat mengkloning repositori Git ke dalam folder pengguna mereka sendiri.
    1. Mengerjakan cabang baru, rekan kerja membuat perubahan pada buku catatan dan file lain di folder Git.
    2. Kontributor menerapkan dan mendorong perubahan mereka ke penyedia Git.
  6. 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:
  7. 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 Git dengan pekerjaan.

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.

Folder Git tingkat atas.

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.

Gunakan prinsipal layanan untuk otomatisasi dengan folder Databricks Git

Anda dapat menggunakan konsol akun Azure Databricks atau Databricks CLI untuk membuat perwakilan layanan yang berwenang untuk mengakses folder Git ruang kerja Anda.

Untuk membuat perwakilan layanan baru, lihat Mengelola perwakilan layanan. Saat Anda memiliki perwakilan layanan di ruang kerja, Anda dapat menautkan kredensial Git Anda ke dalamnya sehingga dapat mengakses folder Git ruang kerja Anda sebagai bagian dari otomatisasi Anda.

Mengotorisasi perwakilan layanan untuk mengakses folder Git

Untuk menyediakan akses resmi ke folder Git Anda untuk perwakilan layanan menggunakan konsol akun Azure Databricks:

  1. Masuk ke ruang kerja Azure Databricks Anda. Anda harus memiliki hak istimewa administrator ke ruang kerja Anda untuk menyelesaikan langkah-langkah ini. Jika Anda tidak memiliki hak istimewa administrator untuk ruang kerja Anda, minta atau hubungi administrator akun Anda.

  2. Di sudut kanan atas halaman mana pun, klik nama pengguna Anda, lalu pilih Pengaturan .

  3. Pilih Identitas dan akses di bawah admin Ruang Kerja di panel navigasi kiri, lalu pilih tombol Kelola untuk Perwakilan Layanan .

    Halaman prinsipal layanan di bawah pengaturan ruang kerja

  4. Dari daftar perwakilan layanan, pilih yang ingin Anda perbarui dengan kredensial Git. Anda juga dapat membuat perwakilan layanan baru dengan memilih Tambahkan perwakilan layanan.

    Membuat atau menambahkan prinsip layanan melalui konsol akun Databricks

  5. Pilih tab integrasi Git. (Jika Anda tidak membuat prinsipal layanan atau belum diberi hak istimewa sebagai manajer prinsipal layanan di atasnya, itu akan berwarna abu-abu.) Di bawahnya, pilih penyedia Git yang akan digunakan untuk kredensial (seperti GitHub), pilih Tautkan akun Git, lalu pilih Tautkan.

    Anda juga dapat menggunakan token akses pribadi Git (PAT) jika Anda tidak ingin menautkan kredensial Git Anda sendiri. Untuk menggunakan PAT, pilih Token akses pribadi dan berikan informasi token untuk akun Git, yang akan digunakan saat mengautentikasi akses perwakilan layanan. Untuk detail selengkapnya tentang memperoleh PAT dari penyedia Git, lihat Mengonfigurasi kredensial Git & menyambungkan repositori jarak jauh ke Azure Databricks.

    Menautkan kredensial Git Anda ke perwakilan layanan Databricks

  6. Anda akan diminta untuk memilih akun pengguna Git untuk ditautkan. Pilih akun pengguna Git yang akan digunakan perwakilan layanan untuk akses dan pilih Lanjutkan. (Jika Anda tidak melihat akun pengguna yang ingin Anda gunakan, pilih Gunakan akun lain.)

  7. Dalam dialog berikutnya, pilih Authorize Databricks. Anda akan melihat pesan "Menautkan akun..." dan kemudian detail prinsipal layanan yang diperbarui.

    layar Konfirmasi untuk kredensial Git yang berhasil ditautkan

Perwakilan layanan yang Anda pilih sekarang akan menerapkan kredensial Git tertaut saat mengakses sumber daya folder Git ruang kerja Azure Databricks Anda sebagai bagian dari otomatisasi Anda.

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.

Membuat alur kerja CI/CD otomatis

  1. Siapkan rahasia sehingga kode Anda dapat mengakses ruang kerja Databricks. Tambahkan rahasia berikut ke repositori Github:

    • DEPLOYMENT_TARGET_URL: Atur ini ke URL ruang kerja Anda. Jangan sertakan /?o substring.
    • DEPLOYMENT_TARGET_TOKEN: Atur ini ke Token Akses Pribadi (PAT) Databricks. Anda dapat membuat PAT Databricks dengan mengikuti instruksi di autentikasi token akses pribadi Azure Databricks.
  2. 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:

    Tautan

    # 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. 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.
    • 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.
  4. 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.