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:
- Üçüncü taraf Git sağlayıcınızla bir depo oluşturun veya mevcut bir depo kullanın.
- 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.
- Mevcut güncelleştirilmiş yapıtları (not defterleri, kod dosyaları ve derleme betikleri gibi) üçüncü taraf deposundan yerel geliştirme makinenize çekin.
- 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.
- Gerekirse 3. ve 4. adımları yineleyin.
- 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:
- Derleme işlem hattı için bir Azure sanal makinesi oluşturun.
- Git deponuzdaki dosyaları sanal makineye kopyalayın.
- 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.
- gzip'ed tar dosyasını zip dosyası olarak yayın işlem hattının erişdiği bir konuma kopyalayın.
- Yayın işlem hattı için başka bir Azure sanal makinesi oluşturun.
- 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.
- 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.
- Python tekerlek kitaplığının bileşen kod dosyalarını bir Python tekerlek dosyasına oluşturun.
- Python tekerlek dosyasındaki mantığı denetlemek için bileşen kodunda birim testleri çalıştırın.
- 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:
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.
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.
İş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.
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.py
adlı 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.py
iç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.py
ile 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.yml
bir 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ğin13.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ğinStandard_DS3_v2
. dev
Eşlemedetargets
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:
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.
Kenar çubuğunda İşlem Hatları'na tıklayın ve ardından İşlem Hatları menüsünde İşlem Hatları'na tıklayın.
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 kullanabilirsiniz. Üretim çalışmalarını doğrudan deponuzun dalında yapmamak bir CI/CD en iyi uygulamasıdır
main
. Bu örnekte, yerine kullanılacakmain
depoda adlırelease
bir dal olduğu varsayılır.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.İş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.
Azure DevOps projenizde kenar çubuğundaki İşlem Hatları menüsünde Yayınlar'a tıklayın.
Yeni Yayın işlem hattı'ne >tıklayın. (İşlem hatlarınız zaten varsa, Bunun yerine yeni işlem hattı .)
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 .
Ekranın yan tarafındaki Yapıtlar kutusunda öğesine tıklayın. 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.
İşlem hattının nasıl tetikleneceğini, ekranın yan tarafında tetikleyici seçeneklerini görüntülemek için tıklayarak 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.
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ızdakidatabricks.yml
adlatarget
eşleşmelidir. Bu makalenin örneğinde, bu şeklindedirdev
.DATABRICKS_HOST
, örneğin ile başlayarakhttps://
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
Aşama 1 nesnesinin içindeki 1 iş, 0 görev bağlantısına tıklayın.
Görevler sekmesinde Aracı işi'ne tıklayın.
Aracı seçimi bölümünde Aracı havuzu için Azure Pipelines'ı seçin.
Aracı Belirtimi için, bu örnekte ubuntu-22.04'te daha önce derleme aracısı için belirttiğiniz aracıyı seçin.
Tamam'ı kaydet'e > tıklayın.
3.3. Adım: Sürüm aracısı için Python sürümünü ayarlama
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.
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.
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.10
ayarlayın. Ayrıca Görünen ad olarakUse Python 3.10
ayarlayın. Bu işlem hattı, Python 3.10.12 yüklü kümelerde Databricks Runtime 13.3 LTS kullandığınızı varsayar.Tamam'ı kaydet'e > tıklayın.
3.4. Adım: Derleme yapıtını derleme işlem hattından çıkarma
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.
Aracı işinin yanındaki Dosyaları ayıkla görevine tıklayın, Arşiv dosyası desenlerini olarak
**/*.zip
ayarlayın ve Hedef klasörünü sistem değişkeni$(Release.PrimaryArtifactSourceAlias)/Databricks
olarak ayarlayın. Ayrıca Görünen ad olarakExtract build pipeline artifact
ayarlayı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şkeniRELEASE_PRIMARYARTIFACTSOURCEALIAS
olarak ayarlar. Bkz. Klasik sürüm ve yapıt değişkenleri.Görünen ad olarak
Extract build pipeline artifact
ayarlayın.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:
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.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/a
yayı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şkeniAGENT_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.Görünen ad olarak
Set BUNDLE_ROOT environment variable
ayarlayın.Tamam'ı kaydet'e > tıklayın.
Adım 3.6. Databricks CLI ve Python tekerlek derleme araçlarını yükleme
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.
Aracı işi'nin yanındaki Bash Betiği görevine tıklayın.
Tür için Satır içi'yi seçin.
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
Görünen ad olarak
Install Databricks CLI and Python wheel build tools
ayarlayın.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
.
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.
Aracı işi'nin yanındaki Bash Betiği görevine tıklayın.
Tür için Satır içi'yi seçin.
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)
Görünen ad olarak
Validate bundle
ayarlayın.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.
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.
Aracı işi'nin yanındaki Bash Betiği görevine tıklayın.
Tür için Satır içi'yi seçin.
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)
Görünen ad olarak
Deploy bundle
ayarlayın.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.
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.
Aracı işi'nin yanındaki Bash Betiği görevine tıklayın.
Tür için Satır içi'yi seçin.
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
Görünen ad olarak
Run unit tests
ayarlayın.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.
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.
Aracı işi'nin yanındaki Bash Betiği görevine tıklayın.
Tür için Satır içi'yi seçin.
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
Görünen ad olarak
Run notebook
ayarlayın.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:
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:
- Kenar çubuğundaki İşlem Hatları menüsünde İşlem Hatları'na tıklayın.
- Derleme işlem hattınızın adına ve ardından İşlem hattını çalıştır'a tıklayın.
- 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. - Çalıştır'a tıklayın. Derleme işlem hattının çalıştırma sayfası görüntülenir.
- 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.
- İş 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:
- 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.
- Yayın işlem hattınızın adına ve ardından Yayın oluştur'a tıklayın.
- Oluştur’a tıklayın.
- 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.
- Aşamalar kutusunda, 1. Aşama'ya tıklayın ve günlükler'e tıklayın.