Bagikan melalui


Integrasi dan pengiriman berkelanjutan di Azure Databricks menggunakan Azure DevOps

Nota

Artikel ini membahas Azure DevOps, yang dikembangkan oleh pihak ketiga. Untuk menghubungi penyedia, harap lihat Dukungan layanan Azure DevOps.

Artikel ini memandu Anda mengonfigurasi otomatisasi Azure DevOps untuk kode dan artefak Anda yang berfungsi dengan Azure Databricks. Secara khusus, Anda akan mengonfigurasi alur kerja integrasi dan pengiriman berkelanjutan (CI/CD) untuk menyambungkan ke repositori Git, menjalankan pekerjaan menggunakan Azure Pipelines untuk membangun dan menguji unit roda Python (*.whl), dan menyebarkannya untuk digunakan di buku catatan Databricks.

Alur kerja pengembangan CI/CD

Databricks menyarankan alur kerja berikut untuk pengembangan CI/CD dengan Azure DevOps:

  1. Buat repositori, atau gunakan repositori yang ada, dengan penyedia Git pihak ketiga Anda.
  2. Hubungkan komputer pengembangan lokal Anda ke repositori pihak ketiga yang sama. Untuk petunjuknya, lihat dokumentasi penyedia Git pihak ketiga Anda.
  3. Tarik artefak yang sudah ada yang diperbarui (seperti notebook, file kode, dan skrip build) ke komputer pengembangan lokal Anda dari repositori pihak ketiga.
  4. Jika perlu, buat, perbarui, dan uji artefak pada komputer pengembangan lokal Anda. Kemudian, unggah artefak yang baru dan telah diubah dari komputer pengembangan lokal Anda ke repositori pihak ketiga. Untuk petunjuknya, lihat dokumentasi penyedia Git pihak ketiga Anda.
  5. Ulangi langkah 3 dan 4 sesuai kebutuhan.
  6. Gunakan Azure DevOps secara berkala sebagai pendekatan terintegrasi untuk secara otomatis menarik artefak dari repositori pihak ketiga Anda, membangun, menguji, dan menjalankan kode di ruang kerja Azure Databricks Anda, dan melaporkan hasil pengujian dan eksekusi. Meskipun Anda dapat menjalankan Azure DevOps secara manual, dalam implementasi dunia nyata, Anda akan menginstruksikan penyedia Git pihak ketiga Anda untuk menjalankan Azure DevOps setiap kali peristiwa tertentu terjadi, seperti permintaan tarik repositori.

Ada banyak alat CI/CD yang dapat Anda gunakan untuk mengelola dan menjalankan alur. Artikel ini menggambarkan cara menggunakan Azure DevOps. CI/CD adalah pola desain, sehingga langkah-langkah dan tahapan yang diuraikan dalam contoh artikel ini harus ditransfer dengan beberapa perubahan pada bahasa definisi alur di setiap alat. Selain itu, banyak kode dalam contoh alur ini adalah kode Python standar yang dapat dipanggil di alat lain.

Petunjuk / Saran

Untuk informasi tentang menggunakan Jenkins dengan Azure Databricks alih-alih Azure DevOps, lihat CI/CD dengan Jenkins di Azure Databricks.

Sisa artikel ini menjelaskan sepasang contoh alur di Azure DevOps yang dapat Anda adaptasi dengan kebutuhan Anda sendiri untuk Azure Databricks.

Tentang contoh

Contoh artikel ini menggunakan dua alur untuk mengumpulkan, menyebarkan, dan menjalankan contoh kode Python dan notebook Python yang disimpan di repositori Git jarak jauh.

Jalur pertama, disebut sebagai jalur build, menyiapkan artefak build untuk jalur kedua, disebut sebagai jalur rilis. Memisahkan alur build dari alur rilis memungkinkan Anda membuat artefak build tanpa menyebarkannya atau menyebarkan artefak secara bersamaan dari beberapa build. Untuk membangun alur build dan rilis:

  1. Buat komputer virtual Azure untuk alur build.
  2. Salin file dari repositori Git Anda ke komputer virtual.
  3. Buat file tar yang di-gzip yang berisi kode Python, notebook Python, serta file untuk build, penyebaran, dan pengaturan jalannya.
  4. Salin file tar yang telah digzip menjadi file zip ke lokasi agar dapat diakses oleh pipeline rilis.
  5. Buat komputer virtual Azure lain untuk alur rilis.
  6. Dapatkan file zip dari lokasi alur build lalu bongkar kemasan file zip untuk mendapatkan kode Python, buku catatan Python, dan file build, penyebaran, dan pengaturan eksekusi terkait.
  7. Sebarkan kode Python, notebook Python, dan file build, penyebaran, dan pengaturan terkait ke ruang kerja Azure Databricks jarak jauh Anda.
  8. Bangun file kode komponen pustaka roda Python menjadi file roda Python.
  9. Jalankan pengujian unit pada kode komponen untuk memeriksa logika dalam file roda Python.
  10. Jalankan notebook Python, salah satunya memanggil fungsionalitas file roda Python.

Tentang Databricks CLI

Contoh artikel ini menunjukkan cara menggunakan Databricks CLI dalam mode non-interaktif dalam alur. Contoh alur artikel ini menyebarkan kode, membangun pustaka, dan menjalankan notebook di ruang kerja Azure Databricks Anda.

Jika Anda menggunakan Databricks CLI di alur Anda tanpa menerapkan kode contoh, pustaka, dan notebook dari artikel ini, ikuti langkah-langkah berikut:

  1. Siapkan ruang kerja Azure Databricks Anda untuk menggunakan autentikasi komputer-ke-mesin (M2M) OAuth untuk mengautentikasi perwakilan layanan. Sebelum memulai, konfirmasikan bahwa Anda memiliki perwakilan layanan ID Microsoft Entra dengan rahasia OAuth Azure Databricks. Lihat Mengotorisasi akses perwakilan layanan ke Azure Databricks dengan OAuth.

  2. Pasang Databricks CLI di saluran Anda. Untuk melakukan ini, tambahkan tugas Bash Script ke alur Anda yang menjalankan skrip berikut:

    curl -fsSL https://raw.githubusercontent.com/databricks/setup-cli/main/install.sh | sh
    

    Untuk menambahkan tugas Skrip Bash ke rangkaian kerja Anda, lihat Langkah 3.6. Menginstal alat build Databricks CLI dan Python wheel.

  3. Konfigurasikan alur Anda untuk mengaktifkan Databricks CLI yang diinstal untuk mengautentikasi perwakilan layanan Anda dengan ruang kerja Anda. Untuk melakukan ini, lihat Langkah 3.1: Menentukan variabel lingkungan untuk alur rilis.

  4. Tambahkan lebih banyak tugas Skrip Bash ke pipeline Anda sesuai kebutuhan untuk menjalankan perintah Databricks CLI Anda. Lihat perintah Databricks CLI.

Sebelum Anda mulai

Untuk menggunakan contoh artikel ini, Anda harus memiliki:

  • Proyek Azure DevOps yang sudah ada. Jika Anda belum memiliki proyek, buat proyek di Azure DevOps.
  • Repositori yang sudah ada dengan penyedia Git yang didukung oleh Azure DevOps. Anda akan menambahkan kode contoh Python, contoh buku catatan Python, dan file pengaturan rilis terkait ke repositori ini. Jika Anda belum memiliki repositori, buat repositori dengan mengikuti instruksi penyedia Git Anda. Kemudian, sambungkan proyek Azure DevOps Anda ke repositori ini jika Anda belum melakukannya. Untuk instruksi, ikuti tautan di Repositori sumber yang didukung.
  • Contoh artikel ini menggunakan autentikasi komputer-ke-mesin (M2M) OAuth untuk mengautentikasi perwakilan layanan ID Microsoft Entra ke ruang kerja Azure Databricks. Anda harus memiliki perwakilan layanan ID Microsoft Entra dengan rahasia Azure Databricks OAuth untuk perwakilan layanan tersebut. Lihat Mengotorisasi akses perwakilan layanan ke Azure Databricks dengan OAuth.

Langkah 1: Tambahkan file contoh ke repositori Anda

Pada langkah ini, di repositori dengan penyedia Git pihak ketiga, Anda menambahkan semua file contoh dari artikel ini yang digunakan oleh pipeline Azure DevOps Anda untuk membangun, menyebarkan, dan menjalankan di ruang kerja Azure Databricks jarak jauh Anda.

Langkah 1.1: Tambahkan file komponen roda Python

Dalam contoh artikel ini, alur Azure DevOps Anda membangun dan menguji unit file roda Python. Notebook Azure Databricks kemudian memanggil fungsionalitas dari file Python wheel yang telah dibuat.

Untuk mendefinisikan pengujian logika dan unit untuk file wheel Python yang digunakan oleh notebook, di root repositori Anda, buat dua file bernama addcol.py dan test_addcol.py, dan tambahkan ke dalam struktur folder bernama python/dabdemo/dabdemo di sebuah folder Libraries, tervisualisasi sebagai berikut:

└── Libraries
      └── python
            └── dabdemo
                  └── dabdemo
                        ├── addcol.py
                        └── test_addcol.py

File addcol.py berisi fungsi pustaka yang dibangun nanti ke dalam file roda Python lalu diinstal pada kluster Azure Databricks. Ini adalah fungsi sederhana yang menambahkan kolom baru, diisi dengan nilai literal, ke dalam Apache Spark DataFrame.

# Filename: addcol.py
import pyspark.sql.functions as F

def with_status(df):
  return df.withColumn("status", F.lit("checked"))

File test_addcol.py berisi pengujian untuk meneruskan objek DataFrame tiruan ke with_status fungsi, yang ditentukan dalam addcol.py. Hasilnya kemudian dibandingkan dengan objek DataFrame yang berisi nilai yang diharapkan. Jika nilai cocok, pengujian lolos:

# Filename: test_addcol.py
import pytest
from pyspark.sql import SparkSession
from dabdemo.addcol import *

class TestAppendCol(object):

  def test_with_status(self):
    spark = SparkSession.builder.getOrCreate()

    source_data = [
      ("paula", "white", "paula.white@example.com"),
      ("john", "baer", "john.baer@example.com")
    ]

    source_df = spark.createDataFrame(
      source_data,
      ["first_name", "last_name", "email"]
    )

    actual_df = with_status(source_df)

    expected_data = [
      ("paula", "white", "paula.white@example.com", "checked"),
      ("john", "baer", "john.baer@example.com", "checked")
    ]
    expected_df = spark.createDataFrame(
      expected_data,
      ["first_name", "last_name", "email", "status"]
    )

    assert(expected_df.collect() == actual_df.collect())

Untuk mengaktifkan Databricks CLI untuk mengemas kode pustaka ini dengan benar ke dalam file roda Python, buat dua file bernama __init__.py dan __main__.py di folder yang sama dengan dua file sebelumnya. Selain itu, buat file bernama setup.py di folder python/dabdemo, divisualisasikan sebagai berikut:

└── Libraries
      └── python
            └── dabdemo
                  ├── dabdemo
                  │     ├── __init__.py
                  │     ├── __main__.py
                  │     ├── addcol.py
                  │     └── test_addcol.py
                  └── setup.py

File __init__.py berisi nomor versi dan penulis pustaka. Ganti <my-author-name> dengan nama Anda:

# Filename: __init__.py
__version__ = '0.0.1'
__author__ = '<my-author-name>'

import sys, os

sys.path.append(os.path.join(os.path.dirname(__file__), "..", ".."))

File __main__.py berisi titik masuk pustaka:

# Filename: __main__.py
import sys, os

sys.path.append(os.path.join(os.path.dirname(__file__), "..", ".."))

from addcol import *

def main():
  pass

if __name__ == "__main__":
  main()

File setup.py berisi pengaturan tambahan untuk membangun pustaka ke dalam file roda Python. Ganti <my-url>, <my-author-name>@<my-organization>, dan <my-package-description> dengan nilai yang valid:

# Filename: setup.py
from setuptools import setup, find_packages

import dabdemo

setup(
  name = "dabdemo",
  version = dabdemo.__version__,
  author = dabdemo.__author__,
  url = "https://<my-url>",
  author_email = "<my-author-name>@<my-organization>",
  description = "<my-package-description>",
  packages = find_packages(include = ["dabdemo"]),
  entry_points={"group_1": "run=dabdemo.__main__:main"},
  install_requires = ["setuptools"]
)

Langkah 1.2: Menambahkan notebook pengujian unit untuk file roda Python

Kemudian, Databricks CLI menjalankan tugas notebook. Pekerjaan ini menjalankan berkas Python dengan nama file run_unit_tests.py. Notebook ini berjalan pytest terhadap logika pustaka roda Python.

Untuk menjalankan pengujian unit untuk contoh artikel ini, tambahkan ke akar repositori Anda file buku catatan bernama run_unit_tests.py dengan konten berikut:

# Databricks notebook source

# COMMAND ----------

# MAGIC %sh
# MAGIC
# MAGIC mkdir -p "/Workspace${WORKSPACEBUNDLEPATH}/Validation/reports/junit/test-reports"

# COMMAND ----------

# Prepare to run pytest.
import sys, pytest, os

# Skip writing pyc files on a readonly filesystem.
sys.dont_write_bytecode = True

# Run pytest.
retcode = pytest.main(["--junit-xml", f"/Workspace{os.getenv('WORKSPACEBUNDLEPATH')}/Validation/reports/junit/test-reports/TEST-libout.xml",
                      f"/Workspace{os.getenv('WORKSPACEBUNDLEPATH')}/files/Libraries/python/dabdemo/dabdemo/"])

# Fail the cell execution if there are any test failures.
assert retcode == 0, "The pytest invocation failed. See the log for details."

Langkah 1.3: Menambahkan notebook yang memanggil file roda Python

Kemudian, CLI Databricks menjalankan tugas notebook yang lain. Notebook ini membuat objek DataFrame, dan meneruskan objek tersebut ke fungsi with_status dari pustaka wheel Python, mencetak hasilnya, serta melaporkan hasil eksekusi pekerjaan tersebut. Buat akar repositori Anda file buku catatan bernama dabdemo_notebook.py dengan konten berikut:

# Databricks notebook source

# COMMAND ----------

# Restart Python after installing the Python wheel.
dbutils.library.restartPython()

# COMMAND ----------

from dabdemo.addcol import with_status

df = (spark.createDataFrame(
  schema = ["first_name", "last_name", "email"],
  data = [
    ("paula", "white", "paula.white@example.com"),
    ("john", "baer", "john.baer@example.com")
  ]
))

new_df = with_status(df)

display(new_df)

# Expected output:
#
# +------------+-----------+-------------------------+---------+
# │ first_name │ last_name │ email                   │ status  │
# +============+===========+=========================+=========+
# │ paula      │ white     │ paula.white@example.com │ checked │
# +------------+-----------+-------------------------+---------+
# │ john       │ baer      │ john.baer@example.com   │ checked │
# +------------+-----------+-------------------------+---------+

Langkah 1.4: Membuat konfigurasi bundel

Contoh artikel ini menggunakan Bundel Aset Databricks untuk menentukan pengaturan dan perilaku untuk membangun, menyebarkan, dan menjalankan file roda Python, dua notebook, dan file kode Python. Bundel Aset Databricks, yang dikenal sebagai bundel, memungkinkan untuk mengekspresikan data lengkap, analitik, dan proyek ML sebagai kumpulan file sumber. Lihat Apa itu Bundel Aset Databricks?.

Untuk mengonfigurasi bundel untuk contoh artikel ini, buat di akar repositori Anda file bernama databricks.yml. Dalam file contoh databricks.yml ini, ganti placeholder berikut:

  • Ganti <bundle-name> dengan nama program unik untuk paketnya. Contohnya, azure-devops-demo.
  • Ganti <job-prefix-name> dengan beberapa string untuk membantu mengidentifikasi pekerjaan yang dibuat secara unik di ruang kerja Azure Databricks Anda untuk contoh ini. Contohnya, azure-devops-demo.
  • Ganti <spark-version-id> dengan ID versi Databricks Runtime untuk kluster pekerjaan Anda, misalnya 13.3.x-scala2.12.
  • Ganti <cluster-node-type-id> dengan ID jenis node kluster untuk kluster pekerjaan Anda, misalnya Standard_DS3_v2.
  • Perhatikan bahwa dev dalam targets pemetaan menentukan host dan perilaku penyebaran terkait. Dalam implementasi dunia nyata, Anda dapat memberi target ini nama yang berbeda dalam bundel Anda sendiri.

Berikut adalah isi file contoh databricks.yml ini:

# Filename: databricks.yml
bundle:
  name: <bundle-name>

variables:
  job_prefix:
    description: A unifying prefix for this bundle's job and task names.
    default: <job-prefix-name>
  spark_version:
    description: The cluster's Spark version ID.
    default: <spark-version-id>
  node_type_id:
    description: The cluster's node type ID.
    default: <cluster-node-type-id>

artifacts:
  dabdemo-wheel:
    type: whl
    path: ./Libraries/python/dabdemo

resources:
  jobs:
    run-unit-tests:
      name: ${var.job_prefix}-run-unit-tests
      tasks:
        - task_key: ${var.job_prefix}-run-unit-tests-task
          new_cluster:
            spark_version: ${var.spark_version}
            node_type_id: ${var.node_type_id}
            num_workers: 1
            spark_env_vars:
              WORKSPACEBUNDLEPATH: ${workspace.root_path}
          notebook_task:
            notebook_path: ./run_unit_tests.py
            source: WORKSPACE
          libraries:
            - pypi:
                package: pytest
    run-dabdemo-notebook:
      name: ${var.job_prefix}-run-dabdemo-notebook
      tasks:
        - task_key: ${var.job_prefix}-run-dabdemo-notebook-task
          new_cluster:
            spark_version: ${var.spark_version}
            node_type_id: ${var.node_type_id}
            num_workers: 1
            spark_env_vars:
              WORKSPACEBUNDLEPATH: ${workspace.root_path}
          notebook_task:
            notebook_path: ./dabdemo_notebook.py
            source: WORKSPACE
          libraries:
            - whl: '/Workspace${workspace.root_path}/files/Libraries/python/dabdemo/dist/dabdemo-0.0.1-py3-none-any.whl'

targets:
  dev:
    mode: development

Untuk informasi selengkapnya tentang sintaks dari databricks.yml file tersebut, lihat Konfigurasi Bundel Aset Databricks.

Langkah 2: Tentukan alur build

Azure DevOps menyediakan antarmuka pengguna yang dihosting cloud untuk menentukan tahapan alur CI/CD Anda menggunakan YAML. Untuk informasi selengkapnya tentang Azure DevOps dan alur, lihat dokumentasi Azure DevOps.

Dalam langkah ini, Anda menggunakan markup YAML untuk menentukan alur build, yang membangun artefak penyebaran. Untuk menerapkan kode ke ruang kerja Azure Databricks, Anda menentukan artefak build dari alur ini sebagai masukan ke dalam alur rilis. Anda menentukan alur rilis ini nanti.

Untuk menjalankan alur build, Azure DevOps menyediakan agen eksekusi sesuai permintaan yang dihosting cloud yang mendukung penyebaran ke Kubernetes, VM, Azure Functions, Azure Web Apps, dan banyak lagi target. Dalam contoh ini, Anda menggunakan agen on-demand untuk mengotomatisasi pembuatan artefak penyebaran.

Tentukan contoh alur build artikel ini sebagai berikut:

  1. Masuk ke Azure DevOps lalu klik tautan Masuk untuk membuka proyek Azure DevOps Anda.

    Nota

    Jika Portal Azure ditampilkan alih-alih proyek Azure DevOps Anda, klik Layanan lainnya > organisasi Azure DevOps > dan organisasi Azure DevOps Saya lalu buka proyek Azure DevOps Anda.

  2. Klik Alur di bilah samping, lalu klik Alur pada menu Alur .

    Menu Pipa Azure DevOps

  3. Klik tombol Alur Baru dan ikuti instruksi di layar. (Jika Anda sudah memiliki alur, klik Buat Alur sebagai gantinya.) Di akhir instruksi ini, editor alur terbuka. Di sini Anda menentukan skrip alur build Anda dalam azure-pipelines.yml file yang muncul. Jika editor alur tidak terlihat di akhir instruksi, pilih nama alur build lalu klik Edit.

    Anda dapat menggunakan pemilih cabang Pemilih cabang Git Git untuk menyesuaikan proses build untuk setiap cabang di repositori Git Anda. Ini adalah praktik terbaik CI/CD untuk tidak melakukan pekerjaan produksi secara langsung di cabang repositori main Anda. Contoh ini mengasumsikan cabang bernama release ada di repositori yang akan digunakan alih-alih main.

    Editor Pipeline Azure DevOps

    Skrip azure-pipelines.yml pipeline build secara default disimpan di direktori root repositori Git remote yang Anda kaitkan dengan pipeline.

  4. Timpa isi awal file alur azure-pipelines.yml Anda dengan definisi berikut ini, kemudian klik Simpan.

    # Specify the trigger event to start the build pipeline.
    # In this case, new code merged into the release branch initiates a new build.
    trigger:
      - release
    
    # Specify the operating system for the agent that runs on the Azure virtual
    # machine for the build pipeline (known as the build agent). The virtual
    # machine image in this example uses the Ubuntu 22.04 virtual machine
    # image in the Azure Pipeline agent pool. See
    # https://learn.microsoft.com/azure/devops/pipelines/agents/hosted#software
    pool:
      vmImage: ubuntu-22.04
    
    # Download the files from the designated branch in the remote Git repository
    # onto the build agent.
    steps:
      - checkout: self
        persistCredentials: true
        clean: true
    
      # Generate the deployment artifact. To do this, the build agent gathers
      # all the new or updated code to be given to the release pipeline,
      # including the sample Python code, the Python notebooks,
      # the Python wheel library component files, and the related Databricks asset
      # bundle settings.
      # Use git diff to flag files that were added in the most recent Git merge.
      # Then add the files to be used by the release pipeline.
      # The implementation in your pipeline will likely be different.
      # The objective here is to add all files intended for the current release.
      - script: |
          git diff --name-only --diff-filter=AMR HEAD^1 HEAD | xargs -I '{}' cp --parents -r '{}' $(Build.BinariesDirectory)
          mkdir -p $(Build.BinariesDirectory)/Libraries/python/dabdemo/dabdemo
          cp $(Build.Repository.LocalPath)/Libraries/python/dabdemo/dabdemo/*.* $(Build.BinariesDirectory)/Libraries/python/dabdemo/dabdemo
          cp $(Build.Repository.LocalPath)/Libraries/python/dabdemo/setup.py $(Build.BinariesDirectory)/Libraries/python/dabdemo
          cp $(Build.Repository.LocalPath)/*.* $(Build.BinariesDirectory)
        displayName: 'Get Changes'
    
      # Create the deployment artifact and then publish it to the
      # artifact repository.
      - task: ArchiveFiles@2
        inputs:
          rootFolderOrFile: '$(Build.BinariesDirectory)'
          includeRootFolder: false
          archiveType: 'zip'
          archiveFile: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip'
          replaceExistingArchive: true
    
      - task: PublishBuildArtifacts@1
        inputs:
          ArtifactName: 'DatabricksBuild'
    

Langkah 3: Tentukan alur rilis

Jalur rilis mendistribusikan hasil build dari jalur build ke lingkungan Azure Databricks. Memisahkan alur rilis dalam langkah ini dari alur build dalam langkah-langkah sebelumnya memungkinkan Anda membuat build tanpa menyebarkannya atau menyebarkan artefak dari beberapa build secara bersamaan.

  1. Di proyek Azure DevOps Anda, pada menu Alur di bar samping, klik Rilis.

    Rilis Azure DevOps

  2. Klik > rilis baru. (Jika Anda sudah memiliki alur, klik Alur baru sebagai gantinya.)

  3. Di sisi layar ada daftar templat unggulan untuk pola penyebaran umum. Untuk contoh alur rilis ini, klik Pekerjaan kosong.

    Alur rilis Azure DevOps 1

  4. Dalam kotak Artefak di sisi layar, klik Menambahkan. Di panel Tambahkan artefak, untuk Sumber(alur build ), pilih alur build yang Anda buat sebelumnya. Kemudian klik Tambahkan

    Alur rilis Azure DevOps 2

  5. Anda dapat mengonfigurasi bagaimana alur dipicu dengan mengklik Ikon petir untuk menampilkan opsi pemicu di sisi layar. Jika Anda ingin rilis dimulai secara otomatis berdasarkan ketersediaan artefak build atau setelah alur permintaan pull, aktifkan pemicu yang sesuai. Untuk saat ini, dalam contoh ini, pada langkah terakhir artikel ini Anda memicu alur build secara manual lalu alur rilis.

    Alur rilis Azure DevOps tahap 1

  6. Klik tombol Simpan > OK.

Langkah 3.1: Tentukan variabel lingkungan untuk alur rilis

Contoh alur rilis ini bergantung pada variabel lingkungan berikut, yang dapat Anda tambahkan dengan mengklik Tambahkan di bagian Variabel alur pada tab Variabel , dengan CakupanTahap 1:

  • BUNDLE_TARGET, yang harus sesuai dengan nama target dalam file databricks.yml Anda. Dalam contoh artikel ini, ini adalah dev.
  • DATABRICKS_HOST, yang mewakili URL per ruang kerja Azure Databricks Anda, dimulai dengan https://, misalnya https://adb-<workspace-id>.<random-number>.azuredatabricks.net. Jangan sertakan trailing / setelah .net.
  • DATABRICKS_CLIENT_ID, yang mewakili ID aplikasi untuk perwakilan layanan ID Microsoft Entra.
  • DATABRICKS_CLIENT_SECRET, yang mewakili rahasia Azure Databricks OAuth untuk perwakilan layanan ID Microsoft Entra.

Langkah 3.2: Mengonfigurasi agen rilis untuk alur rilis

  1. Klik tautan 1 pekerjaan, 0 tugas dalam objek Tahap 1.

    Alur rilis Azure DevOps menambahkan tahap

  2. Pada tab Tugas , klik Pekerjaan agen.

  3. Di bagian pilihan Agen , untuk kumpulan Agen , pilih Azure Pipelines.

  4. Untuk Spesifikasi Agen, pilih agen yang sama seperti yang Anda tentukan untuk agen build sebelumnya, dalam contoh ini ubuntu-22.04.

    Definisi kerja agen alur rilis Azure DevOps

  5. Klik tombol Simpan > OK.

Langkah 3.3: Atur versi Python untuk agen rilis

  1. Klik tanda plus di bagian Pekerjaan agen, yang ditunjukkan oleh panah merah dalam gambar berikut. Daftar tugas yang tersedia yang dapat dicari muncul. Ada juga tab Marketplace untuk plug-in pihak ketiga yang dapat digunakan untuk melengkapi tugas Azure DevOps standar. Anda akan menambahkan beberapa tugas ke agen rilis selama beberapa langkah berikutnya.

    Azure DevOps menambahkan tugas

  2. Tugas pertama yang Anda tambahkan adalah Menggunakan versi Python, yang terletak di tab Alat . Jika Anda tidak dapat menemukan tugas ini, gunakan kotak Pencarian untuk mencarinya. Saat Anda menemukannya, pilih lalu klik tombol Tambahkan di samping tugas Gunakan versi Python.

    Azure DevOps mengatur python versi 1

  3. Seperti halnya pipeline build, Anda ingin memastikan bahwa versi Python kompatibel dengan skrip yang dipanggil dalam tugas berikutnya. Dalam kasus ini, klik tugas Gunakan Python 3.x di samping pekerjaan Agen, lalu atur spesifikasi Versi ke 3.10. Atur juga Nama tampilan ke Use Python 3.10. Alur ini mengasumsikan bahwa Anda menggunakan Databricks Runtime 13.3 LTS pada kluster, yang menginstal Python 3.10.12.

    Azure DevOps mengatur versi python 2

  4. Klik tombol Simpan > OK.

Langkah 3.4: Membuka kemasan artefak build dari alur build

  1. Selanjutnya, minta agen rilis mengekstrak file roda Python, file pengaturan rilis terkait, buku catatan, dan file kode Python dari file zip dengan menggunakan tugas Ekstrak file: klik ikon tanda plus di bagian pekerjaan Agen, pilih tugas Ekstrak file pada tab Utilitas, lalu klik Tambahkan.

  2. Klik tugas Ekstrak file di samping pekerjaan Agen , atur pola file Arsip ke **/*.zip, dan atur folder Tujuan ke variabel sistem $(Release.PrimaryArtifactSourceAlias)/Databricks. Atur juga Nama tampilan ke Extract build pipeline artifact.

    Nota

    $(Release.PrimaryArtifactSourceAlias) mewakili alias yang dihasilkan Azure DevOps untuk mengidentifikasi lokasi sumber artefak utama pada agen rilis, misalnya _<your-github-alias>.<your-github-repo-name>. Alur rilis menetapkan nilai ini sebagai variabel RELEASE_PRIMARYARTIFACTSOURCEALIAS lingkungan dalam fase Pekerjaan inisialisasi untuk agen rilis. Lihat Variabel rilis dan artefak klasik.

  3. Atur Nama tampilan ke Extract build pipeline artifact.

    Azure DevOps membuka paket

  4. Klik tombol Simpan > OK.

Langkah 3.5: Atur variabel lingkungan BUNDLE_ROOT

Agar contoh artikel ini beroperasi seperti yang diharapkan, Anda harus mengatur variabel lingkungan bernama BUNDLE_ROOT dalam alur rilis. Bundel Aset Databricks menggunakan variabel lingkungan ini untuk menentukan di mana file databricks.yml berada. Untuk mengatur variabel lingkungan ini:

  1. Gunakan tugas Variabel Lingkungan : klik tanda plus lagi di bagian pekerjaan Agen , pilih tugas Variabel Lingkungan pada tab Utilitas , lalu klik Tambahkan.

    Nota

    Jika tugas Variabel Lingkungan tidak terlihat pada tab Utilitas , masukkan dalam kotak Pencarian dan ikuti instruksi di layar untuk menambahkan tugas ke tab Utilitas . Ini mungkin mengharuskan Anda untuk meninggalkan Azure DevOps dan kemudian kembali ke lokasi ini di mana Anda tinggalkan.

  2. Untuk Variabel Lingkungan (dipisahkan koma), masukkan definisi berikut: BUNDLE_ROOT=$(Agent.ReleaseDirectory)/$(Release.PrimaryArtifactSourceAlias)/Databricks.

    Nota

    $(Agent.ReleaseDirectory) mewakili alias yang dihasilkan Azure DevOps untuk mengidentifikasi lokasi direktori rilis pada agen rilis, misalnya /home/vsts/work/r1/a. Alur rilis menetapkan nilai ini sebagai variabel AGENT_RELEASEDIRECTORY lingkungan dalam fase Pekerjaan inisialisasi untuk agen rilis. Lihat Variabel rilis dan artefak klasik. Untuk informasi tentang $(Release.PrimaryArtifactSourceAlias), lihat catatan di langkah sebelumnya.

  3. Atur Nama tampilan ke Set BUNDLE_ROOT environment variable.

    Atur variabel lingkungan BUNDLE_ROOT

  4. Klik tombol Simpan > OK.

Langkah 3.6. Instal CLI Databricks dan alat build wheel Python

  1. Selanjutnya, instal Databricks CLI dan alat pengembangan paket Python pada agen rilis. Agen rilis akan memanggil Databricks CLI dan alat pembangunan Python wheel dalam beberapa tugas mendatang. Untuk melakukan ini, gunakan tugas Bash: klik lagi tanda plus di bagian pekerjaan Agen, pilih tugas Bash pada tab Utility, lalu klik Tambahkan.

  2. Klik tugas Skrip Bash di samping job Agen.

  3. Untuk Jenis, pilih Sebaris.

  4. Ganti konten Skrip dengan perintah berikut, yang menginstal alat build CLI Databricks dan roda Python:

    curl -fsSL https://raw.githubusercontent.com/databricks/setup-cli/main/install.sh | sh
    pip install wheel
    
  5. Atur Nama tampilan ke Install Databricks CLI and Python wheel build tools.

    Penginstalan paket pada alur rilis Azure DevOps

  6. Klik tombol Simpan > OK.

Langkah 3.7: Memvalidasi Bundel Aset Databricks

Dalam langkah ini, Anda memastikan bahwa file databricks.yml tersebut benar secara sintaksis.

  1. Gunakan tugas Bash: klik lagi tanda plus di bagian pekerjaan Agen , pilih tugas Bash pada tab Utilitas , lalu klik Tambahkan.

  2. Klik tugas Skrip Bash di samping job Agen.

  3. Untuk Jenis, pilih Sebaris.

  4. Ganti konten Skrip dengan perintah berikut, yang menggunakan Databricks CLI untuk memeriksa apakah file tersebut sesuai secara sintaksis:

    databricks bundle validate -t $(BUNDLE_TARGET)
    
  5. Atur Nama tampilan ke Validate bundle.

  6. Klik tombol Simpan > OK.

Langkah 3.8: Menyebarkan bundel

Dalam langkah ini, Anda membuat file roda Python dan menyebarkan file roda Python bawaan, dua notebook Python, dan file Python dari alur rilis ke ruang kerja Azure Databricks Anda.

  1. Gunakan tugas Bash: klik lagi tanda plus di bagian pekerjaan Agen , pilih tugas Bash pada tab Utilitas , lalu klik Tambahkan.

  2. Klik tugas Skrip Bash di samping job Agen.

  3. Untuk Jenis, pilih Sebaris.

  4. Ganti konten Skrip dengan perintah berikut, yang menggunakan Databricks CLI untuk membangun file roda Python dan untuk menyebarkan contoh file artikel ini dari alur rilis ke ruang kerja Azure Databricks Anda:

    databricks bundle deploy -t $(BUNDLE_TARGET)
    
  5. Atur Nama tampilan ke Deploy bundle.

  6. Klik tombol Simpan > OK.

Langkah 3.9: Jalankan buku catatan pengujian unit untuk roda Python

Dalam langkah ini, Anda menjalankan tugas yang menjalankan notebook uji unit di ruang kerja Azure Databricks Anda. Notebook ini menjalankan pengujian unit terhadap logika pustaka roda Python.

  1. Gunakan tugas Bash: klik lagi tanda plus di bagian pekerjaan Agen , pilih tugas Bash pada tab Utilitas , lalu klik Tambahkan.

  2. Klik tugas Skrip Bash di samping job Agen.

  3. Untuk Jenis, pilih Sebaris.

  4. Ganti konten Skrip dengan perintah berikut, yang menggunakan Databricks CLI untuk menjalankan pekerjaan di ruang kerja Azure Databricks Anda:

    databricks bundle run -t $(BUNDLE_TARGET) run-unit-tests
    
  5. Atur Nama tampilan ke Run unit tests.

  6. Klik tombol Simpan > OK.

Langkah 3.10: Jalankan notebook yang memanggil roda Python

Dalam langkah ini, Anda menjalankan sebuah pekerjaan yang mengeksekusi buku catatan lain di ruang kerja Azure Databricks Anda. Buku catatan ini memanggil pustaka roda Python.

  1. Gunakan tugas Bash: klik lagi tanda plus di bagian pekerjaan Agen , pilih tugas Bash pada tab Utilitas , lalu klik Tambahkan.

  2. Klik tugas Skrip Bash di samping job Agen.

  3. Untuk Jenis, pilih Sebaris.

  4. Ganti konten Skrip dengan perintah berikut, yang menggunakan Databricks CLI untuk menjalankan pekerjaan di ruang kerja Azure Databricks Anda:

    databricks bundle run -t $(BUNDLE_TARGET) run-dabdemo-notebook
    
  5. Atur Nama tampilan ke Run notebook.

  6. Klik tombol Simpan > OK.

Anda sekarang telah selesai mengonfigurasi alur rilis Anda. Ini akan terlihat sebagai berikut:

Konfigurasi alur rilis Azure DevOps selesai

Langkah 4: Jalankan alur build dan rilis

Dalam langkah ini, Anda menjalankan alur secara manual. Untuk mempelajari cara menjalankan alur secara otomatis, lihat Menentukan peristiwa yang memicu alur dan Pemicu rilis.

Untuk menjalankan alur build secara manual:

  1. Pada menu Pipelines di bilah samping, klik Pipelines.
  2. Klik nama alur build Anda, lalu klik Jalankan alur.
  3. Untuk Cabang/tag, pilih nama cabang dari repositori Git Anda yang berisi semua kode sumber yang Anda tambahkan. Contoh ini mengasumsikan bahwa ada di dalam cabang release.
  4. Klik Jalankan. Halaman eksekusi alur build muncul.
  5. Untuk melihat kemajuan alur build dan untuk melihat log terkait, klik ikon berputar di samping Pekerjaan.
  6. Setelah ikon Pekerjaan berubah menjadi tanda centang hijau, lanjutkan untuk menjalankan alur rilis.

Untuk menjalankan alur rilis secara manual:

  1. Setelah alur build berhasil dijalankan, pada menu Alur di bar samping, klik Rilis.
  2. Klik nama alur rilis Anda, lalu klik Buat rilis.
  3. Klik Buat.
  4. Untuk melihat kemajuan alur rilis, dalam daftar rilis, klik nama rilis terbaru.
  5. Dalam kotak Tahapan , klik Tahap 1, dan klik Log.