Aracılığıyla paylaş


Azure DevOps kullanarak Azure Databricks'te sürekli entegrasyon ve teslimat

Uyarı

Bu makale, üçüncü taraf tarafından geliştirilen Azure DevOps'u kapsar. Sağlayıcıya başvurmak için bkz . Azure DevOps Services desteği.

Bu makale , Azure DevOps'yi Azure Databricks ile çalışacak şekilde yapılandırma konusunda size yol gösterir. Özellikle, bir Git deposuna bağlanmak, Python wheel paketini (*.whl) derleyip birim testi yapmak için işleri Azure Pipelines ile çalıştırmak ve Databricks not defterlerinde kullanılmak üzere dağıtmak için sürekli tümleştirme ve teslim (CI/CD) iş akışını yapılandıracaksınız.

Azure Databricks ile CI/CD'ye genel bakış için bkz. Azure Databricks'te CI/CD. En iyi yöntemler için bkz. Databricks'te en iyi yöntemler ve önerilen CI/CD iş akışları.

Ö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 dağıtım 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çın.
  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 not defterlerini çalıştırın, bunlardan bir tanesi Python wheel dosyasının işlevselliğini çağırıyor.

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. Bunun için Azure Databricks OAuth gizli anahtarına sahip bir Microsoft Entra ID hizmet sorumlusuna ihtiyacınız var. Bkz. OAuth ile Azure Databricks'e hizmet sorumlusu erişimini yetkilendirme.

Tavsiye

Ayrıca Azure Resource Manager hizmet bağlantısı veya Databricks iş yükü kimlik federasyonu kullanarak Azure DevOps'un kimliğini Databricks'e doğrulayabilirsiniz. Bu seçenekler, gizli bilgileri yönetme ihtiyacını ortadan kaldırır.

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.

tr-TR: Not defterlerinin çalıştırıldığı Python wheel dosyasının mantığını ve birim testlerini tanımlamak için, depo kökünde addcol.py ve test_addcol.py adlı iki dosya oluşturun ve bunları python/dabdemo/dabdemo klasörü içinde Libraries olarak adlandırılmış bir klasör yapısına ekleyin, aşağıdaki şekilde görselleştirilmiştir:

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

Dosya, daha sonra bir Python wheel dosyasına dönüştürülen ve ardından Azure Databricks kümelerine yüklenen bir kitaplık işlevi içerir. Bu, bir Apache Spark DataFrame'e sabit bir 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"))

Dosya test_addcol.py, with_status içinde tanımlanan addcol.py işlevine bir sahte DataFrame nesnesi geçirmeye ilişkin 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 geçer.

# 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 __init__.py adlı __main__.py iki dosya oluşturun. Ayrıca, klasöründe adlı setup.pypython/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. Adınızla <my-author-name> değiştirin.

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

setup.py dosyası, kütüphaneyi bir Python wheel dosyasına oluşturmak için ek ayarlar içerir. , <my-url>ve <my-author-name>@<my-organization> değerlerini geçerli değerlerle değiştirin<my-package-description>:

# 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 görevi çalıştırır. Bu iş, dosya adı run_unit_tests.pyile bir Python not defteri çalıştırır. Bu not defteri pytest Python Wheel kütüphanesinin mantığına karşı çalışır.

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. Databricks Varlık Paketleri, tüm verileri, analizleri ve ML projelerini 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:

  • <bundle-name> değerini paket için benzersiz bir programatik adla değiştirin. Örneğin, azure-devops-demo.
  • <job-prefix-name> öğesini, bu örnek için Azure Databricks çalışma alanınızda oluşturulan işleri benzersiz olarak tanımlamaya yardımcı olacak bir dizeyle değiştirin. Ö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.
  • <cluster-node-type-id> , iş kümelerinizin küme düğümü türü kimliğiyle değiştirin; örneğin Standard_DS3_v2.
  • dev ve targets eşlemesinde, konağı ve ilgili dağıtım davranışlarını belirlediğ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

databricks.yml dosyasının söz dizimi hakkında daha fazla bilgi için bkz. Databricks Varlık Paketi ayarları.

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 çıktısı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.

    Uyarı

    Azure Portal, Azure DevOps projeniz yerine görüntüleniyorsa, Diğer hizmetler > Azure DevOps kuruluşları > Azure DevOps kuruluşlarım'a tıklayın ve sonra 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. (Zaten işlem hatlarınız varsa, İşlem Hattı Oluştur'a tıklayın.) Bu yönergelerin sonunda, işlem hattı düzenleyici 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 main dalında yapmamak, bir CI/CD en iyi pratiğidir. Bu örnekte, yerine kullanılmak üzere release adlı bir dalın depoda mevcut 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

Sürüm işlem hattı, derleme işlem hattındaki derleme çıktısını bir Azure Databricks ortamına dağıtır. Bu adımda, sürüm hattını önceki adımlardaki derleme hattından ayırmak, derlemeyi dağıtmadan bir derleme oluşturmanıza veya birden çok derlemenin artifaktlarını 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ı>'na tıklayın. (Zaten işlem hatlarınız varsa, Yeni bir işlem hattı oluştur.)

  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 Boş iş'e tıklayın.

    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. Şimşek simgesi üzerine tıklayarak işlem hattının nasıl tetikleneceğini ve ekranın yan tarafında tetikleyici seçeneklerini nasıl görüntüleyeceğinizi 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 dağıtım hattı 1. aşama

  6. Kaydet > Tamam'a 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şamaKapsamı ile ekleyebilirsiniz:

  • BUNDLE_TARGET, target dosyanızdaki databricks.yml adıyla eşleşmelidir. Bu makalenin örneğinde, bu şeklindedir dev.
  • DATABRICKS_HOST, örneğin , https://, https://adb-<workspace-id>.<random-number>.azuredatabricks.net ile başlayan. / sonrası .net eklemeyin.
  • DATABRICKS_CLIENT_ID, Microsoft Entra ID hizmet sorumlusunun uygulama kimliğini temsil eder.
  • DATABRICKS_CLIENT_SECRET, Microsoft Entra ID hizmet temsili için Azure Databricks OAuth gizli anahtarını 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ına aşama ekle

  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. Kaydet > Tamam'a tıklayın.

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

  1. Aracı 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. Yapı hattında olduğu gibi Python sürümünün sonraki görevlerde çağrılan betiklerle uyumlu olduğundan emin olmak istiyorsunuz. Bu durumda, Aracı işinin yanındaki Python 3.x Kullan görevine tıklayın ve ardından Sürüm belirtimini 3.10 olarak ayarlayın. Ayrıca Görünen adıUse Python 3.10 olarak ayarlayı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. Kaydet > Tamam'a 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. Dosyaları Çıkart görevi Aracı işi'nin yanında tıklayın, Arşiv dosya desenlerini**/*.zip olarak ayarlayın ve Hedef klasörü sistem değişkeni $(Release.PrimaryArtifactSourceAlias)/Databricks olarak ayarlayın. Ayrıca Görünen adıExtract build pipeline artifact olarak ayarlayın.

    Uyarı

    $(Release.PrimaryArtifactSourceAlias) , yayın temsilcisinin birincil yapıt kaynak konumunu tanımlamak için Azure DevOps tarafından oluşturulan bir takma 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_PRIMARYARTIFACTSOURCEALIASolarak ayarlar. Daha fazla bilgi için Klasik sürüm ve derleme çıktıları değişkenleri başlıklı bölüme bakın.

  3. Görünen ad, Extract build pipeline artifact olarak ayarla.

    Azure DevOps paketini açma

  4. Kaydet > Tamam'a 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.

    Uyarı

    Ortam Değişkenleri görevi Yardımcı Program sekmesinde görünmüyorsa, AramaEnvironment 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.

    Uyarı

    $(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_RELEASEDIRECTORYolarak ayarlar. Daha fazla bilgi için Klasik sürüm ve derleme çıktıları değişkenleri başlıklı bölüme bakın. $(Release.PrimaryArtifactSourceAlias) hakkında bilgi için önceki adımdaki nota bakın.

  3. Görünen ad, Set BUNDLE_ROOT environment variable olarak ayarla.

    BUNDLE_ROOT ortam değişkenini ayarlama

  4. Kaydet > Tamam'a tıklayın.

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

  1. Ardından, yayın sunucusuna Databricks CLI ve Python wheel yapım 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. Agent işinin yanındaki Bash Betiği görevine tıklayın.

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

  4. Script içeriğini, Databricks CLI ve Python wheel 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, Install Databricks CLI and Python wheel build tools olarak ayarla.

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

  6. Kaydet > Tamam'a 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. Agent işinin yanındaki Bash Betiği görevine tıklayın.

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

  4. Script içeriğini, databricks CLI kullanarak dosyanın sözdizimsel olarak doğru olup olmadığını kontrol eden şu komut ile değiştirin:

    databricks bundle validate -t $(BUNDLE_TARGET)
    
  5. Görünen ad, Validate bundle olarak ayarla.

  6. Kaydet > Tamam'a 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. Agent işinin 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, Deploy bundle olarak ayarla.

  6. Kaydet > Tamam'a 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. Agent işinin yanındaki Bash Betiği görevine tıklayın.

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

  4. Betik içeriğini, Databricks CLI'sini kullanarak Azure Databricks çalışma alanınızda işi çalıştırmak için aşağıdaki komutla değiştirin:

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

  6. Kaydet > Tamam'a 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 wheel kütüphanesini ç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. Agent işinin yanındaki Bash Betiği görevine tıklayın.

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

  4. Betik içeriğini, Databricks CLI'sini kullanarak Azure Databricks çalışma alanınızda işi çalıştırmak için aşağıdaki komutla değiştirin:

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

  6. Kaydet > Tamam'a 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ı otomatik olarak nasıl çalıştıracağınızı öğrenmek için İşlem hatlarını tetikleyen olayları belirtme ve Yayın tetikleyicileri konularına bakın.

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

  1. Kenar çubuğundaki İşlem Hatları menüsünde İşlem Hatları üzerine tıklayın.
  2. Derleme işlem hattınızın adına ve sonrasında İşlem hattını çalıştır bağlantısına 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 örnek, bunun release dalında olduğunu varsayar.
  4. Çalıştır'a tıklayın. Derleme işlem hattının çalışma sayfası görüntülenir.
  5. Oluşturma işlem hattının ilerleme durumunu görmek ve ilgili günlükleri görüntülemek için İş yanındaki dönen simgeye tıklayın.
  6. İş simgesi yeşil onay işaretine döndükten sonra serbest bırakma hattını çalıştırın.

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 tıklayın, sonra Yayın oluştur'a tıklayın.
  3. Oluştur'utı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, Aşama 1'e tıklayın ve Günlükler'e tıklayın.