Aracılığıyla paylaş


Azure Databricks'te Azure DevOps kullanarak sürekli tümleştirme ve teslim

Not

Bu makale, Databricks tarafından sağlanmayan veya desteklenmeyen Azure DevOps'ı kapsar. Sağlayıcıya başvurmak için bkz . Azure DevOps Services desteği.

Bu makale, Azure Databricks ile çalışan kodunuz ve yapıtlarınız için Azure DevOps otomasyonunun yapılandırılması konusunda size yol gösterir. Özellikle, git deposuna bağlanmak için sürekli tümleştirme ve teslim (CI/CD) iş akışı yapılandıracak, Python tekerleğini (*.whl) derlemek ve birim testi yapmak için Azure Pipelines kullanarak işleri çalıştıracak ve Databricks not defterlerinde kullanmak üzere dağıtacaksınız.

CI/CD geliştirme iş akışı

Databricks, Azure DevOps ile CI/CD geliştirme için aşağıdaki iş akışını önerir:

  1. Üçüncü taraf Git sağlayıcınızla bir depo oluşturun veya mevcut bir depo kullanın.
  2. Yerel geliştirme makinenizi aynı üçüncü taraf deposuna bağlayın. Yönergeler için üçüncü taraf Git sağlayıcınıza ait belgelere bakın.
  3. Mevcut güncelleştirilmiş yapıtları (not defterleri, kod dosyaları ve derleme betikleri gibi) üçüncü taraf deposundan yerel geliştirme makinenize çekin.
  4. Gerektiğinde yerel geliştirme makinenizde yapıtlar oluşturun, güncelleştirin ve test edin. Ardından, yerel geliştirme makinenizden yeni ve değiştirilmiş yapıtları üçüncü taraf deposuna gönderin. Yönergeler için üçüncü taraf Git sağlayıcınıza ait belgelere bakın.
  5. Gerekirse 3. ve 4. adımları yineleyin.
  6. Azure DevOps'u üçüncü taraf deponuzdan yapıtları otomatik olarak çekmek, Azure Databricks çalışma alanınızda kod oluşturmak, test etmek ve çalıştırmak ve test ve çalıştırma sonuçlarını raporlamak için düzenli aralıklarla tümleşik bir yaklaşım olarak kullanın. Azure DevOps'u el ile çalıştırabilirsiniz ancak gerçek dünyadaki uygulamalarda üçüncü taraf Git sağlayıcınıza depo çekme isteği gibi belirli bir olay gerçekleştiğinde Azure DevOps'u çalıştırmasını bildirirsiniz.

İşlem hattınızı yönetmek ve yürütmek için kullanabileceğiniz çok sayıda CI/CD aracı vardır. Bu makalede Azure DevOps'un nasıl kullanılacağı gösterilmektedir. CI/CD bir tasarım deseni olduğundan, bu makalenin örneğinde özetlenen adımlar ve aşamalar, her araçta işlem hattı tanım dilinde birkaç değişiklikle aktarılmalıdır. Ayrıca, bu örnek işlem hattındaki kodun çoğu diğer araçlarda çağrılabilen standart Python kodudur.

İpucu

Jenkins'i Azure DevOps yerine Azure Databricks ile kullanma hakkında bilgi için bkz . Azure Databricks üzerinde Jenkins ile CI/CD.

Bu makalenin geri kalanında Azure DevOps'ta Azure Databricks için kendi gereksinimlerinize uyarlayabileceğiniz bir çift örnek işlem hattı açıklanmaktadır.

Örnek hakkında

Bu makalenin örneğinde, uzak git deposunda depolanan örnek Python kodunu ve Python not defterlerini toplamak, dağıtmak ve çalıştırmak için iki işlem hattı kullanılır.

Derleme işlem hattı olarak bilinen ilk işlem hattı, yayın işlem hattı olarak bilinen ikinci işlem hattı için derleme yapıtlarını hazırlar. Derleme işlem hattını yayın işlem hattından ayırmak, derleme yapıtını dağıtmadan oluşturmanıza veya birden çok derlemeden yapıtları aynı anda dağıtmanıza olanak tanır. Derleme ve yayın işlem hatlarını oluşturmak için:

  1. Derleme işlem hattı için bir Azure sanal makinesi oluşturun.
  2. Git deponuzdaki dosyaları sanal makineye kopyalayın.
  3. Python kodunu, Python not defterlerini ve ilgili derleme, dağıtım ve çalıştırma ayarları dosyalarını içeren bir gzip'ed tar dosyası oluşturun.
  4. gzip'ed tar dosyasını zip dosyası olarak yayın işlem hattının erişdiği bir konuma kopyalayın.
  5. Yayın işlem hattı için başka bir Azure sanal makinesi oluşturun.
  6. Derleme işlem hattının konumundan zip dosyasını alın ve ardından Python kodunu, Python not defterlerini ve ilgili derleme, dağıtım ve çalıştırma ayarları dosyalarını almak için zip dosyasının paketini açar.
  7. Python kodunu, Python not defterlerini ve ilgili derleme, dağıtım ve çalıştırma ayarlarını uzak Azure Databricks çalışma alanınıza dağıtın.
  8. Python tekerlek kitaplığının bileşen kod dosyalarını bir Python tekerlek dosyasına oluşturun.
  9. Python tekerlek dosyasındaki mantığı denetlemek için bileşen kodunda birim testleri çalıştırın.
  10. Python tekerlek dosyasının işlevselliğini çağıran Python not defterlerini çalıştırın.

Databricks CLI hakkında

Bu makalenin örneğinde Databricks CLI'nin işlem hattı içinde etkileşimli olmayan bir modda nasıl kullanılacağı gösterilmektedir. Bu makalenin örnek işlem hattı kodu dağıtır, bir kitaplık oluşturur ve Azure Databricks çalışma alanınızda not defterlerini çalıştırır.

Bu makaledeki örnek kodu, kitaplığı ve not defterlerini uygulamadan işlem hattınızda Databricks CLI kullanıyorsanız şu adımları izleyin:

  1. Azure Databricks çalışma alanınızı, hizmet sorumlusu kimlik doğrulaması için OAuth makineden makineye (M2M) kimlik doğrulamasını kullanacak şekilde hazırlayın. Başlamadan önce, Azure Databricks OAuth gizli dizisine sahip bir Microsoft Entra ID hizmet sorumlunuz olduğunu onaylayın. Bkz . OAuth (OAuth M2M) kullanarak hizmet sorumlusuyla Azure Databricks'e erişimin kimliğini doğrulama.

  2. databricks CLI'yi işlem hattınıza yükleyin. Bunu yapmak için işlem hattınıza aşağıdaki betiği çalıştıran bir Bash Betiği görevi ekleyin:

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

    İşlem hattınıza Bash Betiği görevi eklemek için bkz . 3.6. Adım. Databricks CLI ve Python tekerlek derleme araçlarını yükleyin.

  3. İşlem hattınızı, yüklü Databricks CLI'nın çalışma alanınızla hizmet sorumlunuzun kimliğini doğrulamasını sağlayacak şekilde yapılandırın. Bunu yapmak için bkz . 3.1. Adım: Yayın işlem hattı için ortam değişkenlerini tanımlama.

  4. Databricks CLI komutlarınızı çalıştırmak için gerektiğinde işlem hattınıza daha fazla Bash Betiği görevi ekleyin. Bkz. Databricks CLI komutları.

Başlamadan önce

Bu makalenin örneğini kullanmak için şunlara sahip olmanız gerekir:

  • Mevcut bir Azure DevOps projesi. Henüz bir projeniz yoksa Azure DevOps'ta bir proje oluşturun.
  • Azure DevOps'un desteklediği git sağlayıcısına sahip mevcut bir depo. Python örnek kodunu, örnek Python not defterini ve ilgili sürüm ayarları dosyalarını bu depoya ekleyebilirsiniz. Henüz bir deponuz yoksa Git sağlayıcınızın yönergelerini izleyerek bir depo oluşturun. Ardından, henüz yapmadıysanız Azure DevOps projenizi bu depoya bağlayın. Yönergeler için Desteklenen kaynak depoları'ndaki bağlantıları izleyin.
  • Bu makalenin örneği, Azure Databricks çalışma alanında Microsoft Entra ID hizmet sorumlusu kimliğini doğrulamak için OAuth makineden makineye (M2M) kimlik doğrulamasını kullanır. Bu hizmet sorumlusu için Azure Databricks OAuth gizli dizisine sahip bir Microsoft Entra ID hizmet sorumlunuz olmalıdır. Bkz . OAuth (OAuth M2M) kullanarak hizmet sorumlusuyla Azure Databricks'e erişimin kimliğini doğrulama.

1. Adım: Örneğin dosyalarını deponuza ekleme

Bu adımda, üçüncü taraf Git sağlayıcınızın bulunduğu depoda, Azure DevOps işlem hatlarınızın derlediğiniz, dağıttığı ve uzak Azure Databricks çalışma alanınızda çalıştırdığınız bu makalenin tüm örnek dosyalarını eklersiniz.

1.1. Adım: Python tekerlek bileşeni dosyalarını ekleme

Bu makalenin örneğinde, Azure DevOps işlem hatlarınız bir Python tekerlek dosyası derleyip birim testi yapar. Ardından bir Azure Databricks not defteri, yerleşik Python tekerlek dosyasının işlevselliğini çağırır.

Not defterlerinin çalıştırıldığı Python tekerlek dosyasının mantığını ve birim testlerini tanımlamak için, deponuzun kökünde ve test_addcol.pyadlı addcol.py iki dosya oluşturun ve bunları aşağıdaki gibi görselleştirilmiş bir klasörde adlı python/dabdemo/dabdemo klasör Libraries yapısına ekleyin:

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

Dosya, addcol.py daha sonra python tekerlek dosyasında yerleşik olarak bulunan ve ardından Azure Databricks kümelerine yüklenen bir kitaplık işlevi içerir. Apache Spark DataFrame'e değişmez değerle doldurulmuş yeni bir sütun ekleyen basit bir işlevdir:

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

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

Dosyasıtest_addcol.py, işlevine addcol.pyiçinde tanımlanan bir sahte DataFrame nesnesi geçirmeye ilişkin with_status testler içerir. Sonuç daha sonra beklenen değerleri içeren bir DataFrame nesnesiyle karşılaştırılır. Değerler eşleşiyorsa test şunları geçirir:

# 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())

Databricks CLI'nın bu kitaplık kodunu bir Python tekerlek dosyasına doğru şekilde paketlemesini sağlamak için, önceki iki dosyayla aynı klasörde ve __main__.py adlı __init__.py iki dosya oluşturun. Ayrıca, klasöründe adlı setup.py python/dabdemo bir dosya oluşturun ve aşağıdaki gibi görselleştirin:

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

Dosya kitaplığın __init__.py sürüm numarasını ve yazarını içerir. değerini adınız ile değiştirin <my-author-name> :

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

import sys, os

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

Dosya kitaplığın __main__.py giriş noktasını içerir:

# 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()

Dosya, setup.py kitaplığı Bir Python tekerlek dosyasına derlemek için ek ayarlar içerir. , <my-author-name>@<my-organization>ve <my-package-description> değerlerini geçerli değerlerle değiştirin<my-url>:

# 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"]
)

1.2. Adım: Python tekerlek dosyası için birim testi not defteri ekleme

Daha sonra Databricks CLI bir not defteri işi çalıştırır. Bu iş, dosya adı run_unit_tests.pyile bir Python not defteri çalıştırır. Bu not defteri Python tekerlek kitaplığının mantığına göre çalışır pytest .

Bu makalenin örneğine yönelik birim testlerini çalıştırmak için deponuzun köküne aşağıdaki içeriklere sahip adlı run_unit_tests.py bir not defteri dosyası ekleyin:

# 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."

1.3. Adım: Python tekerlek dosyasını çağıran bir not defteri ekleme

Daha sonra Databricks CLI başka bir not defteri işi çalıştırır. Bu not defteri bir DataFrame nesnesi oluşturur, bunu Python tekerlek kitaplığının with_status işlevine geçirir, sonucu yazdırır ve işin çalıştırma sonuçlarını raporlar. Deponuzun kökünü aşağıdaki içeriklere sahip adlı dabdemo_notebook.py bir not defteri dosyası oluşturun:

# 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 │
# +------------+-----------+-------------------------+---------+

1.4. Adım: Paket yapılandırmasını oluşturma

Bu makalenin örneğinde Python tekerlek dosyasını, iki not defterini ve Python kod dosyasını derleme, dağıtma ve çalıştırmaya yönelik ayarları ve davranışları tanımlamak için Databricks Varlık Paketleri kullanılmaktadır. Yalnızca paket olarak bilinen Databricks Varlık Paketleri, tam veri, analiz ve ML projelerini bir kaynak dosya koleksiyonu olarak ifade etmeye olanak sağlar. Bkz . Databricks Varlık Paketleri nedir?.

Paketi bu makalenin örneğine göre yapılandırmak için deponuzun kökünde adlı databricks.ymlbir dosya oluşturun. Bu örnek databricks.yml dosyada aşağıdaki yer tutucuları değiştirin:

  • değerini paket için benzersiz bir program adıyla değiştirin <bundle-name> . Örneğin, azure-devops-demo.
  • değerini, bu örnek için Azure Databricks çalışma alanınızda oluşturulan işleri benzersiz olarak tanımlamaya yardımcı olması için bir dizeyle değiştirin <job-prefix-name> . Örneğin, azure-devops-demo.
  • değerini iş kümelerinizin Databricks Runtime sürüm kimliğiyle değiştirin <spark-version-id> , örneğin 13.3.x-scala2.12.
  • değerini, iş kümelerinizin küme düğümü türü kimliğiyle değiştirin <cluster-node-type-id> ; örneğin Standard_DS3_v2.
  • dev Eşlemede targets konağı ve ilgili dağıtım davranışlarını belirttiğine dikkat edin. Gerçek dünyadaki uygulamalarda, bu hedefe kendi paketlerinizde farklı bir ad verebilirsiniz.

Bu örnek databricks.yml dosyasının içeriği şunlardır:

# 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

Dosyanın söz dizimi hakkında databricks.yml daha fazla bilgi için bkz . Databricks Varlık Paketi yapılandırması.

2. Adım: Derleme işlem hattını tanımlama

Azure DevOps, YAML kullanarak CI/CD işlem hattınızın aşamalarını tanımlamak için bulutta barındırılan bir kullanıcı arabirimi sağlar. Azure DevOps ve işlem hatları hakkında daha fazla bilgi için Azure DevOps belgelerine bakın.

Bu adımda, dağıtım yapıtı oluşturan derleme işlem hattını tanımlamak için YAML işaretlemesini kullanırsınız. Kodu bir Azure Databricks çalışma alanına dağıtmak için bu işlem hattının derleme yapıtını bir yayın işlem hattına giriş olarak belirtirsiniz. Bu yayın işlem hattını daha sonra tanımlarsınız.

Azure DevOps, derleme işlem hatlarını çalıştırmak için Kubernetes, VM'ler, Azure İşlevleri, Azure Web Apps ve daha birçok hedefe yönelik dağıtımları destekleyen bulutta barındırılan, isteğe bağlı yürütme aracıları sağlar. Bu örnekte, dağıtım yapıtını derlemeyi otomatikleştirmek için isteğe bağlı bir aracı kullanırsınız.

Bu makalenin örnek derleme işlem hattını aşağıdaki gibi tanımlayın:

  1. Azure DevOps'ta oturum açın ve ardından Azure DevOps projenizi açmak için Oturum aç bağlantısına tıklayın.

    Not

    Azure DevOps projeniz yerine Azure Portal görüntülüyorsa Diğer hizmetler > Azure DevOps kuruluşları Azure DevOps kuruluşlarım'a > tıklayın ve Azure DevOps projenizi açın.

  2. Kenar çubuğunda İşlem Hatları'na tıklayın ve ardından İşlem Hatları menüsünde İşlem Hatları'na tıklayın.

    Azure DevOps İşlem Hattı menüsü

  3. Yeni İşlem Hattı düğmesine tıklayın ve ekrandaki yönergeleri izleyin. (İşlem hatlarınız zaten varsa, Bunun yerine İşlem Hattı oluştur.) Bu yönergelerin sonunda işlem hattı düzenleyicisi açılır. Burada, görüntülenen dosyada azure-pipelines.yml derleme işlem hattı betiğinizi tanımlarsınız. İşlem hattı düzenleyicisi yönergelerin sonunda görünmüyorsa derleme işlem hattının adını seçin ve Düzenle'ye tıklayın.

    Git deponuzdaki her dal için derleme işlemini özelleştirmek için Git dal seçicisini Git dal seçicisi kullanabilirsiniz. Üretim çalışmalarını doğrudan deponuzun dalında yapmamak bir CI/CD en iyi uygulamasıdır main . Bu örnekte, yerine kullanılacak maindepoda adlı release bir dal olduğu varsayılır.

    Azure DevOps Pipeline düzenleyicisi

    Derleme azure-pipelines.yml işlem hattı betiği varsayılan olarak işlem hattıyla ilişkilendirdiğiniz uzak Git deposunun kökünde depolanır.

  4. İşlem hattınızın azure-pipelines.yml dosyasının başlangıç içeriğinin üzerine aşağıdaki tanımı yazın ve Kaydet'e tıklayın.

    # 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'
    

3. Adım: Yayın işlem hattını tanımlama

Yayın işlem hattı, derleme yapıtlarını derleme işlem hattından bir Azure Databricks ortamına dağıtır. Önceki adımlarda bu adımda yayın işlem hattını derleme işlem hattından ayırmak, derlemeyi dağıtmadan veya birden çok derlemeden yapıtları aynı anda dağıtmanıza olanak tanır.

  1. Azure DevOps projenizde kenar çubuğundaki İşlem Hatları menüsünde Yayınlar'a tıklayın.

    Azure DevOps Sürümleri

  2. Yeni Yayın işlem hattı'ne >tıklayın. (İşlem hatlarınız zaten varsa, Bunun yerine yeni işlem hattı .)

  3. Ekranın yan tarafında, yaygın dağıtım desenleri için öne çıkan şablonların listesi yer alır. Bu örnek yayın işlem hattı için öğesine tıklayın Boş iş.

    Azure DevOps yayın işlem hattı 1

  4. Ekranın yan tarafındaki Yapıtlar kutusunda öğesine tıklayınEkle. Yapıt ekle bölmesinde, Kaynak (derleme işlem hattı) için daha önce oluşturduğunuz derleme işlem hattını seçin. Daha sonra Ekle'ye tıklayın.

    Azure DevOps yayın işlem hattı 2

  5. İşlem hattının nasıl tetikleneceğini, ekranın yan tarafında tetikleyici seçeneklerini görüntülemek için tıklayarak Şimşek simgesi yapılandırabilirsiniz. Derleme yapıtı kullanılabilirliğine göre veya çekme isteği iş akışından sonra bir yayının otomatik olarak başlatılmasını istiyorsanız uygun tetikleyiciyi etkinleştirin. Şimdilik, bu örnekte, bu makalenin son adımında derleme işlem hattını ve ardından yayın işlem hattını el ile tetiklersiniz.

    Azure DevOps yayın işlem hattı aşama 1

  6. Tamam'ı kaydet'e > tıklayın.

3.1. Adım: Yayın işlem hattı için ortam değişkenlerini tanımlama

Bu örneğin yayın işlem hattı aşağıdaki ortam değişkenlerine dayanır. Bu değişkenleri, Değişkenler sekmesindeki İşlem Hattı değişkenleri bölümünde Ekle'ye tıklayarak ve 1. Aşama Kapsamı ile ekleyebilirsiniz:

  • BUNDLE_TARGET, dosyanızdaki databricks.yml adla target eşleşmelidir. Bu makalenin örneğinde, bu şeklindedir dev.
  • DATABRICKS_HOST, örneğin ile başlayarak https://Azure Databricks çalışma alanınızın çalışma alanı başına URL'sini temsil eder.https://adb-<workspace-id>.<random-number>.azuredatabricks.net sonrasını eklemeyin / .net.
  • DATABRICKS_CLIENT_ID, Microsoft Entra ID hizmet sorumlusunun uygulama kimliğini temsil eder.
  • DATABRICKS_CLIENT_SECRET, Microsoft Entra ID hizmet sorumlusu için Azure Databricks OAuth gizli dizisini temsil eder.

3.2. Adım: Yayın işlem hattı için yayın aracısını yapılandırma

  1. Aşama 1 nesnesinin içindeki 1 iş, 0 görev bağlantısına tıklayın.

    Azure DevOps yayın işlem hattı ekleme aşaması

  2. Görevler sekmesinde Aracı işi'ne tıklayın.

  3. Aracı seçimi bölümünde Aracı havuzu için Azure Pipelines'ı seçin.

  4. Aracı Belirtimi için, bu örnekte ubuntu-22.04'te daha önce derleme aracısı için belirttiğiniz aracıyı seçin.

    Azure DevOps yayın işlem hattı aracısı iş tanımı

  5. Tamam'ı kaydet'e > tıklayın.

3.3. Adım: Sürüm aracısı için Python sürümünü ayarlama

  1. Aracı işi bölümünde, aşağıdaki şekilde kırmızı okla gösterilen artı işaretine tıklayın. Kullanılabilir görevlerin aranabilir bir listesi görüntülenir. Standart Azure DevOps görevlerini desteklemek için kullanılabilecek üçüncü taraf eklentiler için bir Market sekmesi de vardır. Sonraki birkaç adımda yayın aracısına birkaç görev ekleyebilirsiniz.

    Azure DevOps görev ekleme

  2. Eklediğiniz ilk görev, Araç sekmesinde bulunan Python sürümünü kullan'dır. Bu görevi bulamazsanız, aramak için Arama kutusunu kullanın. Bulduğunuzda seçin ve Ardından Python sürümünü kullan görevinin yanındaki Ekle düğmesine tıklayın.

    Azure DevOps python sürüm 1'i ayarladı

  3. Derleme işlem hattında olduğu gibi Python sürümünün sonraki görevlerde adı verilen betiklerle uyumlu olduğundan emin olmak istiyorsunuz. Bu durumda, Aracı işinin yanındaki Python 3.x kullan görevine tıklayın ve sürüm belirtimini olarak 3.10ayarlayın. Ayrıca Görünen ad olarak Use Python 3.10ayarlayın. Bu işlem hattı, Python 3.10.12 yüklü kümelerde Databricks Runtime 13.3 LTS kullandığınızı varsayar.

    Azure DevOps python sürüm 2'i ayarlama

  4. Tamam'ı kaydet'e > tıklayın.

3.4. Adım: Derleme yapıtını derleme işlem hattından çıkarma

  1. Ardından, yayın aracısının Dosyaları ayıkla görevini kullanarak Zip dosyasından Python tekerlek dosyasını, ilgili sürüm ayarları dosyalarını, not defterlerini ve Python kod dosyasını ayıklamasını sağlayın: Aracı işi bölümünde artı işaretine tıklayın, Yardımcı Program sekmesinde Dosyaları ayıkla görevini seçin ve ekle'ye tıklayın.

  2. Aracı işinin yanındaki Dosyaları ayıkla görevine tıklayın, Arşiv dosyası desenlerini olarak **/*.zipayarlayın ve Hedef klasörünü sistem değişkeni $(Release.PrimaryArtifactSourceAlias)/Databricksolarak ayarlayın. Ayrıca Görünen ad olarak Extract build pipeline artifactayarlayın.

    Not

    $(Release.PrimaryArtifactSourceAlias) , yayın aracısının birincil yapıt kaynak konumunu tanımlamak için Azure DevOps tarafından oluşturulan diğer adı temsil eder, örneğin _<your-github-alias>.<your-github-repo-name>. Yayın işlem hattı, bu değeri yayın aracısı için İşi başlatma aşamasında ortam değişkeni RELEASE_PRIMARYARTIFACTSOURCEALIAS olarak ayarlar. Bkz. Klasik sürüm ve yapıt değişkenleri.

  3. Görünen ad olarak Extract build pipeline artifactayarlayın.

    Azure DevOps paketini açma

  4. Tamam'ı kaydet'e > tıklayın.

3.5. Adım: BUNDLE_ROOT ortam değişkenini ayarlama

Bu makalenin beklendiği gibi çalışması için yayın işlem hattında adlı BUNDLE_ROOT bir ortam değişkeni ayarlamanız gerekir. Databricks Varlık Paketleri, dosyanın bulunduğu yeri belirlemek için bu ortam değişkenini databricks.yml kullanır. Bu ortam değişkenini ayarlamak için:

  1. Ortam Değişkenleri görevini kullanın: Aracı işi bölümünde artı işaretine yeniden tıklayın, Yardımcı Program sekmesinde Ortam Değişkenleri görevini seçin ve ekle'ye tıklayın.

    Not

    Ortam Değişkenleri görevi Yardımcı Program sekmesinde görünmüyorsa, Arama kutusuna girin Environment Variables ve görevi Yardımcı Program sekmesine eklemek için ekrandaki yönergeleri izleyin. Bu, Azure DevOps'dan ayrılmanızı ve ardından kaldığınız yere geri dönmenizi gerektirebilir.

  2. Ortam Değişkenleri (virgülle ayrılmış) için şu tanımı girin: BUNDLE_ROOT=$(Agent.ReleaseDirectory)/$(Release.PrimaryArtifactSourceAlias)/Databricks.

    Not

    $(Agent.ReleaseDirectory) , örneğin /home/vsts/work/r1/ayayın aracısının yayın dizini konumunu tanımlamak için Azure DevOps tarafından oluşturulan diğer adı temsil eder. Yayın işlem hattı, bu değeri yayın aracısı için İşi başlatma aşamasında ortam değişkeni AGENT_RELEASEDIRECTORY olarak ayarlar. Bkz. Klasik sürüm ve yapıt değişkenleri. hakkında $(Release.PrimaryArtifactSourceAlias)bilgi için önceki adımda yer alan nota bakın.

  3. Görünen ad olarak Set BUNDLE_ROOT environment variableayarlayın.

    BUNDLE_ROOT ortam değişkenini ayarlama

  4. Tamam'ı kaydet'e > tıklayın.

Adım 3.6. Databricks CLI ve Python tekerlek derleme araçlarını yükleme

  1. Ardından, Yayın aracısı üzerine Databricks CLI ve Python tekerlek derleme araçlarını yükleyin. Yayın aracısı, sonraki birkaç görevde Databricks CLI ve Python tekerlek derleme araçlarını çağıracaktır. Bunu yapmak için Bash görevini kullanın: Aracı işi bölümünde artı işaretine yeniden tıklayın, Yardımcı Program sekmesinde Bash görevini seçin ve ekle'ye tıklayın.

  2. Aracı işi'nin yanındaki Bash Betiği görevine tıklayın.

  3. Tür için Satır içi'yi seçin.

  4. Betiğin içeriğini, Databricks CLI ve Python tekerlek derleme araçlarını yükleyen aşağıdaki komutla değiştirin:

    curl -fsSL https://raw.githubusercontent.com/databricks/setup-cli/main/install.sh | sh
    pip install wheel
    
  5. Görünen ad olarak Install Databricks CLI and Python wheel build toolsayarlayın.

    Azure DevOps yayın işlem hattı yükleme paketleri

  6. Tamam'ı kaydet'e > tıklayın.

3.7. Adım: Databricks Varlık Paketini Doğrulama

Bu adımda, dosyanın söz dizimsel olarak doğru olduğundan emin olursunuz databricks.yml .

  1. Bash görevini kullanın: Aracı işi bölümünde artı işaretine yeniden tıklayın, Yardımcı Program sekmesinde Bash görevini seçin ve ekle'ye tıklayın.

  2. Aracı işi'nin yanındaki Bash Betiği görevine tıklayın.

  3. Tür için Satır içi'yi seçin.

  4. Betiğin içeriğini şu komutla değiştirin: Databricks CLI kullanarak dosyanın bozulmadan doğru olup olmadığını databricks.yml denetleyin:

    databricks bundle validate -t $(BUNDLE_TARGET)
    
  5. Görünen ad olarak Validate bundleayarlayın.

  6. Tamam'ı kaydet'e > tıklayın.

3.8. Adım: Paketi dağıtma

Bu adımda Python tekerlek dosyasını derleyip yerleşik Python tekerlek dosyasını, iki Python not defterini ve Python dosyasını yayın işlem hattından Azure Databricks çalışma alanınıza dağıtırsınız.

  1. Bash görevini kullanın: Aracı işi bölümünde artı işaretine yeniden tıklayın, Yardımcı Program sekmesinde Bash görevini seçin ve ekle'ye tıklayın.

  2. Aracı işi'nin yanındaki Bash Betiği görevine tıklayın.

  3. Tür için Satır içi'yi seçin.

  4. Betiğin içeriğini, Python tekerlek dosyasını oluşturmak ve bu makalenin örnek dosyalarını yayın işlem hattından Azure Databricks çalışma alanınıza dağıtmak için Databricks CLI kullanan aşağıdaki komutla değiştirin:

    databricks bundle deploy -t $(BUNDLE_TARGET)
    
  5. Görünen ad olarak Deploy bundleayarlayın.

  6. Tamam'ı kaydet'e > tıklayın.

3.9. Adım: Python tekerleği için birim testi not defterini çalıştırma

Bu adımda, Azure Databricks çalışma alanınızda birim testi not defterini çalıştıran bir iş çalıştırırsınız. Bu not defteri Python tekerlek kitaplığının mantığına göre birim testleri çalıştırır.

  1. Bash görevini kullanın: Aracı işi bölümünde artı işaretine yeniden tıklayın, Yardımcı Program sekmesinde Bash görevini seçin ve ekle'ye tıklayın.

  2. Aracı işi'nin yanındaki Bash Betiği görevine tıklayın.

  3. Tür için Satır içi'yi seçin.

  4. Betiğin içeriğini, Işi Azure Databricks çalışma alanınızda çalıştırmak için Databricks CLI kullanan aşağıdaki komutla değiştirin:

    databricks bundle run -t $(BUNDLE_TARGET) run-unit-tests
    
  5. Görünen ad olarak Run unit testsayarlayın.

  6. Tamam'ı kaydet'e > tıklayın.

3.10. Adım: Python tekerleğini çağıran not defterini çalıştırma

Bu adımda, Azure Databricks çalışma alanınızda başka bir not defteri çalıştıran bir iş çalıştırırsınız. Bu not defteri Python tekerlek kitaplığını çağırır.

  1. Bash görevini kullanın: Aracı işi bölümünde artı işaretine yeniden tıklayın, Yardımcı Program sekmesinde Bash görevini seçin ve ekle'ye tıklayın.

  2. Aracı işi'nin yanındaki Bash Betiği görevine tıklayın.

  3. Tür için Satır içi'yi seçin.

  4. Betiğin içeriğini, Işi Azure Databricks çalışma alanınızda çalıştırmak için Databricks CLI kullanan aşağıdaki komutla değiştirin:

    databricks bundle run -t $(BUNDLE_TARGET) run-dabdemo-notebook
    
  5. Görünen ad olarak Run notebookayarlayın.

  6. Tamam'ı kaydet'e > tıklayın.

Yayın işlem hattınızı yapılandırmayı tamamladınız. Aşağıdaki gibi görünmelidir:

Azure DevOps yayın işlem hattı yapılandırmasını tamamladı

4. Adım: Derleme ve yayın işlem hatlarını çalıştırma

Bu adımda işlem hatlarını el ile çalıştırırsınız. İşlem hatlarının otomatik olarak nasıl çalıştırılacağını öğrenmek için bkz. İşlem hatlarını tetikleyen olayları ve Yayın tetikleyicilerini belirtme.

Derleme işlem hattını el ile çalıştırmak için:

  1. Kenar çubuğundaki İşlem Hatları menüsünde İşlem Hatları'na tıklayın.
  2. Derleme işlem hattınızın adına ve ardından İşlem hattını çalıştır'a tıklayın.
  3. Dal/etiket için, Git deponuzda eklediğiniz tüm kaynak kodu içeren dalın adını seçin. Bu örnekte bunun dalda release olduğu varsayılır.
  4. Çalıştır'a tıklayın. Derleme işlem hattının çalıştırma sayfası görüntülenir.
  5. Derleme işlem hattının ilerleme durumunu görmek ve ilgili günlükleri görüntülemek için İş'in yanındaki dönen simgesine tıklayın.
  6. İş simgesi yeşil onay işaretine döndükten sonra yayın işlem hattını çalıştırmaya devam edin.

Yayın işlem hattını el ile çalıştırmak için:

  1. Derleme işlem hattı başarıyla çalıştırıldıktan sonra kenar çubuğundaki İşlem Hatları menüsünde Yayınlar'a tıklayın.
  2. Yayın işlem hattınızın adına ve ardından Yayın oluştur'a tıklayın.
  3. Oluştur’a tıklayın.
  4. Yayın işlem hattının ilerleme durumunu görmek için sürüm listesinde en son sürümün adına tıklayın.
  5. Aşamalar kutusunda, 1. Aşama'ya tıklayın ve günlükler'e tıklayın.