Sdílet prostřednictvím


Kontinuální integrace a průběžné doručování v Azure Databricks pomocí Azure DevOps

Poznámka:

Tento článek se zabývá Azure DevOps, který vyvíjí třetí strana. Pokud chcete kontaktovat poskytovatele, podívejte se na podporu Azure DevOps Services.

Tento článek vás provede konfigurací automatizace Azure DevOps pro kód a artefakty, které pracují s Azure Databricks. Konkrétně nakonfigurujete pracovní postup kontinuální integrace a doručování (CI/CD) pro připojení k úložišti Git, spuštění úloh pomocí Azure Pipelines k sestavení a testování jednotek kola Pythonu (*.whl) a jeho nasazení pro použití v poznámkových blocích Databricks.

Pracovní postup vývoje CI/CD

Databricks navrhuje následující pracovní postup pro vývoj CI/CD s Využitím Azure DevOps:

  1. Vytvořte úložiště nebo použijte existující úložiště s vaším poskytovatelem Gitu třetí strany.
  2. Připojte místní vývojový počítač ke stejnému úložišti třetích stran. Pokyny najdete v dokumentaci poskytovatele Gitu třetí strany.
  3. Přetáhněte všechny existující aktualizované artefakty (například poznámkové bloky, soubory kódu a skripty sestavení) do místního vývojového počítače z úložiště třetí strany.
  4. Podle potřeby vytvořte, updatea otestujte artefakty na místním vývojovém počítači. Pak do úložiště třetí strany nasdílejte všechny nové a změněné artefakty z místního vývojového počítače. Pokyny najdete v dokumentaci poskytovatele Gitu třetí strany.
  5. Podle potřeby opakujte kroky 3 a 4.
  6. Azure DevOps pravidelně používejte jako integrovaný přístup k automatickému načítání artefaktů z úložiště třetí strany, sestavování, testování a spouštění kódu v pracovním prostoru Azure Databricks a vytváření sestav testů a spouštění výsledků. I když můžete Azure DevOps spouštět ručně, v implementacích v reálném světě byste svému externímu poskytovateli Gitu řekli, aby spouštěl Azure DevOps pokaždé, když dojde k určité události, jako je například žádost o přijetí změn úložiště.

Ke správě a spouštění kanálu můžete použít celou řadu nástrojů CI/CD. Tento článek ukazuje, jak používat Azure DevOps. CI/CD je vzor návrhu, takže kroky a fáze popsané v příkladu tohoto článku by se měly přenést s několika změnami jazyka definice kanálu v jednotlivých nástrojích. Kromě toho je většina kódu v tomto ukázkovém kanálu standardním kódem Pythonu, který lze vyvolat v jiných nástrojích.

Tip

Informace o používání Jenkinse s Azure Databricks místo Azure DevOps najdete v tématu CI/CD s Jenkinsem v Azure Databricks.

Zbytek tohoto článku popisuje dvojici ukázkových kanálů v Azure DevOps, které můžete přizpůsobit vašim potřebám pro Azure Databricks.

O příkladu

Tento příklad používá dva kanály ke shromáždění, nasazení a spuštění ukázkového kódu Pythonu a poznámkových bloků Pythonu uložených ve vzdáleném úložišti Git.

První kanál označovaný jako kanál buildu připraví artefakty sestavení pro druhý kanál, označovaný jako kanál verze . Oddělení kanálu buildu od kanálu verze umožňuje vytvořit artefakt sestavení bez jeho nasazení nebo souběžného nasazení artefaktů z více sestavení. Vytvoření kanálů buildu a verze:

  1. Vytvořte virtuální počítač Azure pro kanál buildu.
  2. Zkopírujte soubory z úložiště Git do virtuálního počítače.
  3. Vytvořte soubor gzip'ed tar, který obsahuje kód Pythonu, poznámkové bloky Pythonu a související soubory sestavení, nasazení a spuštění nastavení.
  4. Zkopírujte soubor tar gzip'ed jako soubor ZIP do umístění, ke které má kanál verze přístup.
  5. Vytvořte další virtuální počítač Azure pro kanál verze.
  6. Get soubor ZIP z umístění kanálu buildu a pak rozbalí soubor ZIP, aby get kód Pythonu, poznámkové bloky Pythonu a související soubory sestavení, nasazení a spuštění nastavení.
  7. Nasaďte kód Pythonu, poznámkové bloky Pythonu a související soubory sestavení, nasazení a spouštění souborů nastavení do vzdáleného pracovního prostoru Azure Databricks.
  8. Sestavte soubory kódu komponenty knihovny kol Pythonu do souboru kola Pythonu.
  9. Spuštěním testů jednotek v kódu komponenty zkontrolujte logiku v souboru kola Pythonu.
  10. Spusťte poznámkové bloky Pythonu, z nichž jedna volá funkce souboru kolečka Pythonu.

Informace o rozhraní příkazového řádku Databricks

Tento článek ukazuje, jak používat Rozhraní příkazového řádku Databricks v neinteraktivním režimu v rámci kanálu. Ukázkový kanál v tomto článku nasadí kód, sestaví knihovnu a spustí poznámkové bloky ve vašem pracovním prostoru Azure Databricks.

Pokud v kanálu používáte rozhraní příkazového řádku Databricks bez implementace ukázkového kódu, knihovny a poznámkových bloků z tohoto článku, postupujte takto:

  1. Připravte pracovní prostor Azure Databricks na ověřování instančního objektu pomocí ověřování M2M (machine-to-machine) OAuth. Než začnete, ověřte, že máte instanční objekt Microsoft Entra ID s tajným kódem Azure Databricks OAuth. Viz Ověření přístupu k Azure Databricks pomocí instančního objektu pomocí OAuth (OAuth M2M).

  2. Nainstalujte do kanálu rozhraní příkazového řádku Databricks. Uděláte to tak, že do kanálu přidáte úlohu skriptu Bash, která spustí následující skript:

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

    Pokud chcete do kanálu přidat úlohu skriptu Bash, přečtěte si krok 3.6. Nainstalujte nástroje pro sestavení kol v Databricks CLI a Pythonu.

  3. Nakonfigurujte kanál tak, aby umožňoval nainstalované rozhraní příkazového řádku Databricks k ověření instančního objektu ve vašem pracovním prostoru. Postup najdete v kroku 3.1: Definování proměnných prostředí pro kanál verze.

  4. Přidejte do kanálu další úlohy skriptu Bash podle potřeby ke spuštění příkazů rozhraní příkazového řádku Databricks. Viz příkazy rozhraní příkazového řádku Databricks.

Než začnete

Pokud chcete použít příklad tohoto článku, musíte mít:

  • Existující projekt Azure DevOps Pokud ještě projekt nemáte, vytvořte projekt v Azure DevOps.
  • Existující úložiště s poskytovatelem Gitu, které Azure DevOps podporuje. Do tohoto úložiště přidáte ukázkový kód Pythonu, ukázkový poznámkový blok Pythonu a související soubory nastavení verzí. Pokud ještě nemáte úložiště, vytvořte ho podle pokynů svého poskytovatele Gitu. Pokud jste to ještě neudělali, připojte projekt Azure DevOps k tomuto úložišti. Pokyny najdete na odkazech v podporovaných zdrojových úložištích.
  • Příklad tohoto článku používá ověřování M2M (machine-to-machine) OAuth k ověření instančního objektu Microsoft Entra ID v pracovním prostoru Azure Databricks. Pro tento instanční objekt musíte mít instanční objekt Microsoft Entra ID s tajným kódem Azure Databricks OAuth. Viz Ověření přístupu k Azure Databricks pomocí instančního objektu pomocí OAuth (OAuth M2M).

Krok 1: Přidání souborů příkladu do úložiště

V tomto kroku v úložišti s vaším poskytovatelem Gitu třetí strany přidáte všechny ukázkové soubory tohoto článku, které vaše kanály Azure DevOps sestavují, nasazují a spouštějí ve vzdáleném pracovním prostoru Azure Databricks.

Krok 1.1: Přidání souborů komponent kolečka Pythonu

V příkladu tohoto článku sestaví kanály Azure DevOps a otestujete soubor kola Pythonu. Poznámkový blok Azure Databricks pak zavolá funkce vytvořeného souboru kola Pythonu.

Pokud chcete definovat logiku a testy jednotek pro soubor kola Pythonu, na který se poznámkové bloky spouští, vytvořte v kořenovém adresáři úložiště dva pojmenované addcol.py soubory a test_addcol.pypřidejte je do struktury složek pojmenované python/dabdemo/dabdemo ve Libraries složce, vizualizované takto:

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

Soubor addcol.py obsahuje funkci knihovny, která je později integrovaná do souboru kola Pythonu a pak je nainstalovaná v clusterech Azure Databricks. Jedná se o jednoduchou funkci, která do datového rámce Apache Spark přidá novou columnnaplněnou literálem:

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

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

Soubor test_addcol.py obsahuje testy, které předávají napodobení objektu DataFrame funkci with_status definované v addcol.py. Výsledek se pak porovná s objektem DataFrame obsahujícím očekávaný values. Pokud se values shoduje, test projde:

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

Pokud chcete rozhraní příkazového řádku Databricks povolit správné zabalení kódu knihovny do souboru kola Pythonu, vytvořte dva pojmenované __init__.py soubory a __main__.py ve stejné složce jako předchozí dva soubory. Vytvořte také soubor pojmenovaný setup.py ve python/dabdemo složce, vizualizovaný následujícím způsobem:

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

Soubor __init__.py obsahuje číslo verze a autora knihovny. Nahraďte <my-author-name> svým jménem:

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

import sys, os

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

Soubor __main__.py obsahuje vstupní bod knihovny:

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

Soubor setup.py obsahuje další nastavení pro sestavení knihovny do souboru kola Pythonu. Nahraďte <my-url>, <my-author-name>@<my-organization>a <my-package-description> platnými values:

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

Krok 1.2: Přidání poznámkového bloku testování jednotek pro soubor kola Pythonu

Později spustí rozhraní příkazového řádku Databricks úlohu poznámkového bloku. Tato úloha spustí poznámkový blok Pythonu s názvem souboru run_unit_tests.py. Tento poznámkový blok běží pytest proti logice knihovny kol Pythonu.

Pokud chcete spustit testy jednotek pro příklad tohoto článku, přidejte do kořenového adresáře úložiště soubor poznámkového bloku s názvem run_unit_tests.py s následujícím obsahem:

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

Krok 1.3: Přidání poznámkového bloku, který volá soubor kola Pythonu

Později spustí rozhraní příkazového řádku Databricks další úlohu poznámkového bloku. Tento poznámkový blok vytvoří objekt datového rámce, předá ho funkci knihovny with_status kol Pythonu, vytiskne výsledek a nahlásí výsledky spuštění úlohy. Vytvořte kořen úložiště a soubor poznámkového bloku s názvem dabdemo_notebook.py s následujícím obsahem:

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

Krok 1.4: Vytvoření konfigurace sady

Příklad tohoto článku používá sady prostředků Databricks k definování nastavení a chování při sestavování, nasazování a spouštění souboru kolečka Pythonu, dvou poznámkových bloků a souboru kódu Pythonu. Sady prostředků Databricks, označované jednoduše jako sady prostředků, umožňují vyjádřit kompletní data, analýzy a projekty ML jako kolekci zdrojových souborů. Podívejte se, co jsou sady prostředků Databricks?

Pokud chcete nakonfigurovat sadu pro příklad tohoto článku, vytvořte v kořenovém adresáři úložiště soubor s názvem databricks.yml. V tomto ukázkovém databricks.yml souboru nahraďte následující zástupné symboly:

  • Nahraďte <bundle-name> jedinečným programovým názvem sady. Například azure-devops-demo.
  • Nahraďte <job-prefix-name> nějakým řetězcem, který v tomto příkladu pomáhá jednoznačně identifikovat úlohy vytvořené v pracovním prostoru Azure Databricks. Například azure-devops-demo.
  • Nahraďte <spark-version-id> ID verze databricks Runtime pro clustery úloh, například 13.3.x-scala2.12.
  • Nahraďte <cluster-node-type-id> ID typu uzlu clusteru pro clustery úloh, například Standard_DS3_v2.
  • Všimněte si, že dev v targets mapování určuje hostitel a související chování nasazení. V implementacích z reálného světa můžete dát tomuto cíli jiný název ve vlastních sadách.

Tady je obsah souboru tohoto příkladu databricks.yml :

# 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

Další informace o databricks.yml syntaxi souboru najdete v tématu Konfigurace sady prostředků Databricks.

Krok 2: Definování kanálu buildu

Azure DevOps poskytuje uživatelské rozhraní hostované v cloudu pro definování fází kanálu CI/CD pomocí YAML. Další informace o Azure DevOps a kanálech najdete v dokumentaci k Azure DevOps.

V tomto kroku použijete kód YAML k definování kanálu buildu, který sestaví artefakt nasazení. Pokud chcete nasadit kód do pracovního prostoru Azure Databricks, zadáte artefakt sestavení tohoto kanálu jako vstup do kanálu verze. Tento kanál verze definujete později.

Azure DevOps poskytuje ke spouštění kanálů sestavení cloudově hostované agenty spouštění na vyžádání, které podporují nasazení do Kubernetes, virtuálních počítačů, Azure Functions, Azure Web Apps a mnoha dalších cílů. V tomto příkladu použijete agenta na vyžádání k automatizaci sestavení artefaktu nasazení.

Ukázkový kanál buildu tohoto článku definujte následujícím způsobem:

  1. Přihlaste se k Azure DevOps a kliknutím na odkaz Přihlásit se otevřete projekt Azure DevOps.

    Poznámka:

    Pokud se místo projektu Azure DevOps zobrazí azure Portal, klikněte na Další služby > , které organizace Azure DevOps v organizaci > Azure DevOps mají, a otevřete projekt Azure DevOps.

  2. Na bočním panelu klikněte na Kanály a potom v nabídce Pipelines (Kanály).

    Nabídka kanálu Azure DevOps

  3. Klikněte na tlačítko Nový kanál a postupujte podle pokynů na obrazovce. (Pokud už kanály máte, klikněte na Místo toho vytvořte kanál .) Na konci těchto pokynů se otevře editor kanálu. Tady definujete skript kanálu sestavení v azure-pipelines.yml souboru, který se zobrazí. Pokud editor kanálu není na konci pokynů viditelný, select název kanálu buildu a potom klikněte na Upravit.

    Pomocí selektoru Selektor větví Gitu větve Git můžete přizpůsobit proces sestavení pro každou větev v úložišti Git. Osvědčeným postupem CI/CD není provádět produkční práci přímo ve větvi úložiště main . Tento příklad předpokládá, že v úložišti existuje pojmenovaná release větev, která se má použít místo main.

    Editor kanálů Azure DevOps

    azure-pipelines.yml Skript kanálu buildu je standardně uložený v kořenovém adresáři vzdáleného úložiště Git, které přidružíte ke kanálu.

  4. Přepište počáteční obsah souboru kanálu azure-pipelines.yml následujícím definicí a klikněte na uložit.

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

Krok 3: Definování kanálu verze

Kanál verze nasadí artefakty sestavení z kanálu buildu do prostředí Azure Databricks. Oddělení kanálu verze v tomto kroku od kanálu buildu v předchozích krocích umožňuje vytvořit sestavení bez jeho nasazení nebo nasazení artefaktů z více sestavení současně.

  1. V projektu Azure DevOps v nabídce Pipelines na bočním panelu klikněte na Vydané verze.

    Verze Azure DevOps

  2. Klikněte na Nový > kanál verze. (Pokud už kanály máte, klikněte na Místo toho nový kanál .)

  3. Na straně obrazovky je list doporučených šablon pro běžné vzory nasazení. V tomto příkladu kanálu verze klepněte na tlačítko Prázdná úloha.

    Kanál verze Azure DevOps 1

  4. V poli Artefakty na straně obrazovky klikněte na Přidání. V podokně Přidat artefaktuZdroj (kanál buildu) kanálu buildu, který jste vytvořili dříve. Pak klikněte na Přidat.

    Kanál verze Azure DevOps 2

  5. Způsob aktivace kanálu můžete nakonfigurovat kliknutím Ikona blesku na zobrazení možností aktivace na straně obrazovky. Pokud chcete, aby se verze spouštěla automaticky na základě dostupnosti artefaktů sestavení nebo po pracovním postupu žádosti o přijetí změn, povolte příslušnou aktivační událost. Prozatím v tomto příkladu v posledním kroku tohoto článku ručně aktivujete kanál buildu a potom kanál verze.

    Kanál verze Azure DevOps – fáze 1

  6. Klepněte na tlačítko Uložit > OK.

Krok 3.1: Definování proměnných prostředí pro kanál verze

Kanál verze tohoto příkladu závisí na následujících proměnných prostředí, které můžete přidat kliknutím na Přidat v části Proměnné kanálu na kartě Proměnné s oborem fáze 1:

  • BUNDLE_TARGET, který by se měl shodovat s target názvem v databricks.yml souboru. V tomto příkladu článku je devto .
  • DATABRICKS_HOST, který představuje adresu URL pracovního prostoru Azure Databricks podle pracovního prostoru, počínaje https://například https://adb-<workspace-id>.<random-number>.azuredatabricks.net. Nezahrnujte koncové / za .net.
  • DATABRICKS_CLIENT_ID, který představuje ID aplikace pro instanční objekt Microsoft Entra ID.
  • DATABRICKS_CLIENT_SECRET, který představuje tajný klíč Azure Databricks OAuth pro instanční objekt Microsoft Entra ID.

Krok 3.2: Konfigurace agenta verze pro kanál verze

  1. Klikněte na 1 úlohu, 0 propojení úkolů v rámci objektu Fáze 1 .

    Přidání fáze kanálu verze Azure DevOps

  2. Na kartě Úkoly klikněte na úlohu agenta.

  3. V části Výběr agenta pro fond agentů selectAzure Pipelines.

  4. Prospecifikace agenta stejného agenta, který jste zadali pro agenta sestavení dříve, v tomto příkladu ubuntu-22.04.

    Definice úlohy agenta kanálu verze Azure DevOps

  5. Klepněte na tlačítko Uložit > OK.

Krok 3.3: Set ověření verze Pythonu pro vydávacího agenta

  1. Klikněte na symbol plus v části Úloha agenta označená červenou šipkou na následujícím obrázku. Zobrazí se prohledávatelný list dostupných úkolů. K dispozici je také karta Marketplace pro moduly plug-in třetích stran, které je možné použít k doplnění standardních úloh Azure DevOps. Během dalších několika kroků přidáte do agenta verze několik úloh.

    Přidání úlohy v Azure DevOps

  2. Prvním úkolem, který přidáte, je Použít verzi Pythonu, která je umístěná na kartě Nástroje. Pokud tento úkol nemůžete najít, vyhledejte ho pomocí vyhledávacího pole. Až ho najdete, select ho a potom klikněte na tlačítko Přidat vedle úlohy Použít verzi Pythonu.

    Azure DevOps set Python verze 1

  3. Stejně jako u kanálu buildu chcete mít jistotu, že je verze Pythonu kompatibilní se skripty volanými v dalších úlohách. V tomto případě klikněte na úlohu Použít Python 3.x vedle úlohy agenta , a potom na setspecifikaci verze3.10. Také setzobrazovaný názevUse Python 3.10. Tento kanál předpokládá, že v clusterech používáte Databricks Runtime 13.3 LTS, které mají nainstalovaný Python 3.10.12.

    Azure DevOps set Python verze 2

  4. Klepněte na tlačítko Uložit > OK.

Krok 3.4: Rozbalení artefaktu sestavení z kanálu buildu

  1. Dále požádejte agentu verze, aby extrahoval soubor kola Pythonu, související soubory nastavení verzí, poznámkové bloky a soubor kódu Pythonu ze souboru ZIP pomocí úlohy Extrahování souborů: klikněte na znaménko plus v sekci Úlohy agenta, select úlohu Extrahování souborů na kartě Utility a poté klikněte na Přidat.

  2. Klikněte na úlohu Extrahovat soubory vedle úlohy agenta, Archivovat vzory souborů a Cílová složka systémové proměnné . Také setzobrazovaný názevExtract build pipeline artifact.

    Poznámka:

    $(Release.PrimaryArtifactSourceAlias) představuje alias vygenerovaný v Azure DevOps, který identifikuje umístění zdroje primárních artefaktů v agentu verze, například _<your-github-alias>.<your-github-repo-name>. Kanál verze nastaví tuto hodnotu jako proměnnou RELEASE_PRIMARYARTIFACTSOURCEALIAS prostředí ve fázi inicializace úlohy agenta verze. Podívejte se na proměnné klasické verze a artefaktů.

  3. Set zobrazovaný názevExtract build pipeline artifact.

    Rozbalení Azure DevOps

  4. Klepněte na tlačítko Uložit > OK.

Krok 3.5: Set proměnné prostředí BUNDLE_ROOT

Abyste mohli v tomto článku pracovat podle očekávání, musíte set proměnnou prostředí s názvem BUNDLE_ROOT v kanálu verze. Sady prostředků Databricks používají tuto proměnnou prostředí k určení, kde se nachází soubor wheredatabricks.yml. Nastavte set tuto proměnnou prostředí:

  1. Použijte úlohu Proměnné prostředí : Klikněte znovu na symbol plus v části úlohy agenta , proměnné prostředí úkol na kartě Utility a potom klikněte na Přidat.

    Poznámka:

    Pokud proměnné prostředí úkol není na kartě nástroje viditelný, zadejte do pole Vyhledávací a podle pokynů na obrazovce přidejte úkol na kartu Utility. To může vyžadovat, abyste opustili Azure DevOps a pak se vrátili k tomuto umístění, jste skončili.

  2. Do pole Proměnné prostředí (oddělené čárkami) zadejte následující definici: BUNDLE_ROOT=$(Agent.ReleaseDirectory)/$(Release.PrimaryArtifactSourceAlias)/Databricks.

    Poznámka:

    $(Agent.ReleaseDirectory) představuje alias vygenerovaný službou Azure DevOps pro identifikaci umístění adresáře vydané verze v agentu verze, například /home/vsts/work/r1/a. Kanál verze nastaví tuto hodnotu jako proměnnou AGENT_RELEASEDIRECTORY prostředí ve fázi inicializace úlohy agenta verze. Podívejte se na proměnné klasické verze a artefaktů. Informace o $(Release.PrimaryArtifactSourceAlias)aplikaci naleznete v poznámce v předchozím kroku.

  3. Set zobrazovaný názevSet BUNDLE_ROOT environment variable.

    Set BUNDLE_ROOT proměnné prostředí

  4. Klepněte na tlačítko Uložit > OK.

Krok 3.6 Instalace nástrojů pro sestavení kol v Databricks a Rozhraní příkazového řádku Pythonu

  1. Dále nainstalujte nástroje pro sestavení kol Databricks a Rozhraní příkazového řádku Databricks na agenta verze. Agent verze bude v několika dalších úlohách volat nástroje sestavení kol Databricks CLI a Pythonu. Chcete-li to provést, použijte Bash úkol: klikněte znovu na znaménko plus v úloha agenta oddíl, selectBash úkol na kartě Utility a potom klikněte na Přidat.

  2. Klikněte na úlohu skriptu Bash vedle úlohy agenta.

  3. Pro Typ, selectVložený.

  4. Obsah skriptu nahraďte následujícím příkazem, který nainstaluje nástroje databricks CLI a nástroje pro sestavení kol Pythonu:

    curl -fsSL https://raw.githubusercontent.com/databricks/setup-cli/main/install.sh | sh
    pip install wheel
    
  5. Set zobrazovaný názevInstall Databricks CLI and Python wheel build tools.

    Instalační balíčky kanálu verze Azure DevOps

  6. Klepněte na tlačítko Uložit > OK.

Krok 3.7: Ověření sady prostředků Databricks

V tomto kroku se ujistěte, že databricks.yml je soubor syntakticky správný.

  1. Použijte úlohu Bash: klikněte znovu na úlohu plus v úlohy agenta , úlohu Bash na kartě Utility a potom klikněte na Přidat.

  2. Klikněte na úlohu skriptu Bash vedle úlohy agenta.

  3. Pro Typ, selectVložený.

  4. Obsah skriptu nahraďte následujícím příkazem, který pomocí rozhraní příkazového řádku Databricks zkontroluje, jestli databricks.yml je soubor syntakticky správný:

    databricks bundle validate -t $(BUNDLE_TARGET)
    
  5. Set zobrazovaný názevValidate bundle.

  6. Klepněte na tlačítko Uložit > OK.

Krok 3.8: Nasazení sady

V tomto kroku sestavíte soubor kola Pythonu a nasadíte vytvořený soubor kola Pythonu, dva poznámkové bloky Pythonu a soubor Pythonu z kanálu verze do pracovního prostoru Azure Databricks.

  1. Použijte úlohu Bash: klikněte znovu na úlohu plus v úlohy agenta , úlohu Bash na kartě Utility a potom klikněte na Přidat.

  2. Klikněte na úlohu skriptu Bash vedle úlohy agenta.

  3. Pro Typ, selectVložený.

  4. Obsah skriptu nahraďte následujícím příkazem, který pomocí rozhraní příkazového řádku Databricks sestaví soubor kola Pythonu a nasadí ukázkové soubory tohoto článku z kanálu verze do pracovního prostoru Azure Databricks:

    databricks bundle deploy -t $(BUNDLE_TARGET)
    
  5. Set zobrazovaný název do Deploy bundle.

  6. Klepněte na tlačítko Uložit > OK.

Krok 3.9: Spuštění poznámkového bloku testu jednotek pro kolo Pythonu

V tomto kroku spustíte úlohu, která spustí poznámkový blok testu jednotek v pracovním prostoru Azure Databricks. Tento poznámkový blok spouští testy jednotek s logikou knihovny kol Pythonu.

  1. Použijte úlohu Bash: klikněte znovu na úlohu plus v úlohy agenta , úlohu Bash na kartě Utility a potom klikněte na Přidat.

  2. Klikněte na úlohu skriptu Bash vedle úlohy agenta.

  3. Pro Typ, selectVložený.

  4. Obsah skriptu nahraďte následujícím příkazem, který pomocí rozhraní příkazového řádku Databricks spustí úlohu v pracovním prostoru Azure Databricks:

    databricks bundle run -t $(BUNDLE_TARGET) run-unit-tests
    
  5. Set zobrazovaný názevRun unit tests.

  6. Klepněte na tlačítko Uložit > OK.

Krok 3.10: Spuštění poznámkového bloku, který volá kolo Pythonu

V tomto kroku spustíte úlohu, která v pracovním prostoru Azure Databricks spustí jiný poznámkový blok. Tento poznámkový blok volá knihovnu kol Pythonu.

  1. Použijte úlohu Bash: klikněte znovu na úlohu plus v úlohy agenta , úlohu Bash na kartě Utility a potom klikněte na Přidat.

  2. Klikněte na úlohu skriptu Bash vedle úlohy agenta.

  3. Pro Typ, selectVložený.

  4. Obsah skriptu nahraďte následujícím příkazem, který pomocí rozhraní příkazového řádku Databricks spustí úlohu v pracovním prostoru Azure Databricks:

    databricks bundle run -t $(BUNDLE_TARGET) run-dabdemo-notebook
    
  5. Set zobrazovaný název do Run notebook.

  6. Klepněte na tlačítko Uložit > OK.

Dokončili jste konfiguraci kanálu verze. Měl by vypadat takto:

Dokončení konfigurace kanálu verze Azure DevOps

Krok 4: Spuštění kanálů buildu a verze

V tomto kroku kanály spustíte ručně. Informace o tom, jak kanály spouštět automaticky, najdete v tématu Určení událostí, které aktivují kanály a aktivační události vydané verze.

Ruční spuštění kanálu buildu:

  1. V nabídce Pipelines na bočním panelu klikněte na Kanály.
  2. Klikněte na název kanálu buildu a potom klikněte na Spustit kanál.
  3. Pro větev/značkuselect název větve v úložišti Git, který obsahuje veškerý zdrojový kód, který jste přidali. Tento příklad předpokládá, že se jedná o release větev.
  4. Klepněte na položku Spustit. Zobrazí se stránka spuštění kanálu buildu.
  5. Pokud chcete zobrazit průběh kanálu buildu a zobrazit související protokoly, klikněte na ikonu otáčení vedle úlohy.
  6. Po zapnutí ikony úlohy na zelenou značku zaškrtnutí pokračujte spuštěním kanálu verze.

Ruční spuštění kanálu verze:

  1. Po úspěšném spuštění kanálu buildu v nabídce Pipelines na bočním panelu klikněte na Vydané verze.
  2. Klikněte na název kanálu verze a potom klikněte na Vytvořit verzi.
  3. Klikněte na Vytvořit.
  4. Pokud chcete zobrazit průběh nasazovacího kanálu, klikněte na název nejnovější verze v list seznamu vydání.
  5. V poli Fáze klikněte na Fáze 1 a klikněte na Protokoly.