Udostępnij za pośrednictwem


Techniki ciągłej integracji/ciągłego wdrażania z folderami Git i Databricks Git (Repos)

Poznaj techniki używania folderów Git usługi Databricks w przepływach pracy ciągłej integracji/ciągłego wdrażania. Konfigurując foldery Git usługi Databricks w obszarze roboczym, możesz użyć kontroli źródła dla plików projektu w repozytoriach Git i zintegrować je z potokami inżynierii danych.

Na poniższej ilustracji przedstawiono przegląd technik i przepływu pracy.

Omówienie technik ciągłej integracji/ciągłego wdrażania dla folderów Git.

Aby zapoznać się z omówieniem ciągłej integracji/ciągłego wdrażania w usłudze Azure Databricks, zobacz Co to jest ciągła integracja/ciągłe wdrażanie w usłudze Azure Databricks?.

Przepływ programowania

Foldery usługi Git usługi Databricks mają foldery na poziomie użytkownika. Foldery na poziomie użytkownika są tworzone automatycznie, gdy użytkownicy najpierw klonują repozytorium zdalne. Foldery Git w Databricks można traktować jako "lokalne kopie robocze", indywidualne dla każdego użytkownika, w których użytkownicy wprowadzają zmiany w swoich kodach.

W folderze użytkownika w folderach Git usługi Databricks sklonuj repozytorium zdalne. Najlepszym rozwiązaniem jest utworzenie nowej gałęzi funkcjonalności lub wybranie wcześniej utworzonej gałęzi do pracy zamiast bezpośredniego zatwierdzania i wypychania zmian do gałęzi głównej. Możesz wprowadzać zmiany, zatwierdzać i wypychać zmiany w tej gałęzi. Gdy wszystko będzie gotowe do scalenia kodu, możesz to zrobić w interfejsie użytkownika folderów Git.

Wymagania

Ten przepływ pracy wymaga, abyś wcześniej skonfigurował integrację z usługą Git.

Uwaga

Usługa Databricks zaleca, aby każdy deweloper działał we własnej gałęzi funkcji. Aby uzyskać informacje na temat rozwiązywania konfliktów scalania, zobacz Rozwiązywanie konfliktów scalania.

Współpraca w folderach Git

Poniższy przepływ pracy używa gałęzi o nazwie feature-b , która jest oparta na gałęzi głównej.

  1. Sklonuj istniejące repozytorium Git do obszaru roboczego usługi Databricks.
  2. Użyj interfejsu użytkownika folderów Git, aby utworzyć gałąź funkcji z gałęzi głównej. W tym przykładzie użyto jednej gałęzi feature-b funkcji dla uproszczenia. Aby wykonać swoją pracę, możesz utworzyć i użyć wielu gałęzi funkcji.
  3. Wprowadź modyfikacje notesów usługi Azure Databricks i innych plików w repozytorium.
  4. Zatwierdź i wypchnij zmiany do dostawcy usługi Git.
  5. Współautorzy mogą teraz sklonować repozytorium Git do własnego folderu użytkownika.
    1. Pracując nad nową gałęzią, współpracownik wprowadza zmiany w notesach i innych plikach w folderze Git.
    2. Współautor zatwierdza i wypycha zmiany do dostawcy usługi Git.
  6. Aby scalić zmiany z innych gałęzi lub zmienić bazę gałęzi feature-b w usłudze Databricks, w interfejsie użytkownika folderów Git użyj jednego z następujących przepływów pracy:
  7. Gdy wszystko będzie gotowe do scalenia pracy ze zdalnym repozytorium Git i main gałęzią, użyj interfejsu użytkownika folderów Git, aby scalić zmiany z funkcji b. Jeśli wolisz, możesz zamiast tego scalić zmiany bezpośrednio z repozytorium Git z kopią zapasową folderu Git.

Przepływ pracy zadania produkcyjnego

Foldery Git usługi Databricks udostępniają dwie opcje uruchamiania zadań produkcyjnych:

  • Opcja 1. Podaj zdalne odwołanie do usługi Git w definicji zadania. Na przykład uruchom konkretny notes w main gałęzi repozytorium Git.
  • opcja 2: skonfiguruj produkcyjne repozytorium Git i wywołaj interfejsy API Repozytoria, aby zaktualizować je programowo. Uruchom zadania względem folderu Git usługi Databricks, który klonuje to repozytorium zdalne. Wywołanie interfejsu API repozytoriów powinno być pierwszym zadaniem w zadaniu.

Opcja 1. Uruchamianie zadań przy użyciu notesów w repozytorium zdalnym

Uprość proces definicji zadania i zachowaj pojedyncze źródło prawdy, uruchamiając zadanie usługi Azure Databricks przy użyciu notesów znajdujących się w zdalnym repozytorium Git. To odwołanie usługi Git może być zatwierdzeniem, tagiem lub gałęzią usługi Git i jest udostępniane przez Ciebie w definicji zadania.

Pomaga to zapobiec niezamierzonym zmianom w zadaniu produkcyjnym, na przykład wtedy, gdy użytkownik wprowadza zmiany lokalne w repozytorium produkcyjnym lub przełącza gałęzie. Automatyzuje również krok ciągłego wdrażania, ponieważ nie trzeba tworzyć oddzielnego produkcyjnego folderu Git w usłudze Databricks, zarządzać uprawnieniami i aktualizować go.

Zobacz Używanie usługi Git z zadaniami.

opcja 2: konfigurowanie produkcyjnego folderu Git i automatyzacji usługi Git

W tej opcji skonfigurujesz produkcyjny folder Git i automatyzację w celu zaktualizowania folderu Git podczas scalania.

Krok 1. Konfigurowanie folderów najwyższego poziomu

Administrator tworzy foldery najwyższego poziomu innego niż użytkownik. Najczęstszym przypadkiem użycia tych folderów najwyższego poziomu jest utworzenie folderów programistycznych, przejściowych i produkcyjnych zawierających foldery Usługi Git usługi Databricks dla odpowiednich wersji lub gałęzi na potrzeby programowania, przemieszczania i produkcji. Jeśli na przykład firma korzysta z gałęzi produkcyjnej main , folder "production" Git musi mieć main wyewidencjonowany gałąź.

Zazwyczaj uprawnienia do tych folderów najwyższego poziomu są tylko do odczytu dla wszystkich użytkowników niebędących administratorami w obszarze roboczym. W przypadku takich folderów najwyższego poziomu zalecamy dostarczanie tylko jednostek usługi z uprawnieniami CAN EDIT i CAN MANAGE, aby uniknąć przypadkowej edycji kodu produkcyjnego przez użytkowników obszaru roboczego.

Foldery Git najwyższego poziomu.

Krok 2. Konfigurowanie automatycznych aktualizacji folderów Git usługi Databricks przy użyciu interfejsu API folderów Git

Aby zachować folder Git w usłudze Databricks w najnowszej wersji, możesz skonfigurować automatyzację Git, aby wywołać API Repos. W dostawcy usługi Git skonfiguruj automatyzację, która po każdym pomyślnym scaleniu żądania ściągnięcia z gałęzią główną wywołuje punkt końcowy interfejsu API repozytoriów w odpowiednim folderze Git, aby zaktualizować go do najnowszej wersji.

Na przykład w usłudze GitHub można to osiągnąć za pomocą funkcji GitHub Actions. Aby uzyskać więcej informacji, zobacz interfejs API repozytoriów.

Aby wywołać dowolny interfejs API REST usługi Databricks z poziomu komórki notesu usługi Databricks, najpierw zainstaluj zestaw SDK %pip install databricks-sdk --upgrade usługi Databricks za pomocą (dla najnowszych interfejsów API REST usługi Databricks), a następnie zaimportuj ApiClient z databricks.sdk.coreusługi .

Uwaga

Jeśli %pip install databricks-sdk --upgrade zostanie zwrócony błąd "Nie można odnaleźć pakietu", databricks-sdk pakiet nie został wcześniej zainstalowany. Uruchom ponownie polecenie bez flagi --upgrade : %pip install databricks-sdk.

Możesz również uruchomić interfejsy API zestawu SDK usługi Databricks z notesu, aby pobrać jednostki usługi dla obszaru roboczego. Oto przykład użycia języka Python i zestawu SDK usługi Databricks dla języka Python.

Możesz również użyć narzędzi, takich jak curl lub Terraform. Nie można użyć interfejsu użytkownika usługi Azure Databricks.

Aby dowiedzieć się więcej na temat jednostek usługi w usłudze Azure Databricks, zobacz Zarządzanie jednostkami usługi. Aby uzyskać informacje na temat jednostek usługi i ciągłej integracji/ciągłego wdrażania, zobacz Jednostki usługi dla ciągłej integracji/ciągłego wdrażania. Aby uzyskać więcej informacji na temat korzystania z zestawu SDK usługi Databricks z notesu, przeczytaj Artykuł Use the Databricks SDK for Python from a Databricks notebook (Używanie zestawu SDK usługi Databricks dla języka Python z poziomu notesu usługi Databricks).

Używanie jednostki usługi z folderami Git usługi Databricks

Aby uruchomić wymienione powyżej przepływy pracy z jednostkami usługi:

  1. Tworzenie jednostki usługi za pomocą usługi Azure Databricks.
  2. Dodaj poświadczenia git: użyj identyfikatora PAT dostawcy usługi Git dla jednostki usługi.

Aby skonfigurować zasady usługi, a następnie dodać poświadczenia dostawcy Git:

  1. Tworzenie jednostki usługi. Zobacz Uruchamianie zadań z jednostkami usługi.
  2. Utwórz token identyfikatora entra firmy Microsoft dla jednostki usługi.
  3. Po utworzeniu jednostki usługi należy dodać ją do obszaru roboczego usługi Azure Databricks przy użyciu interfejsu API jednostki usługi.
  4. Dodaj poświadczenia dostawcy Git do środowiska roboczego za pomocą tokenu Microsoft Entra ID oraz interfejsu API Git Credentials .

Integracja z programem Terraform

Foldery Git usługi Databricks można również zarządzać w pełni zautomatyzowanym instalatorem przy użyciu narzędzia Terraform i databricks_repo:

resource "databricks_repo" "this" {
  url = "https://github.com/user/demo.git"
}

Aby przy użyciu narzędzia Terraform dodać poświadczenia Git do jednostki usługi, wprowadź następującą konfigurację:

  provider "databricks" {
    # Configuration options
  }

  provider "databricks" {
    alias = "sp"
    host = "https://....cloud.databricks.com"
    token = databricks_obo_token.this.token_value
  }

  resource "databricks_service_principal" "sp" {
    display_name = "service_principal_name_here"
  }

  resource "databricks_obo_token" "this" {
    application_id   = databricks_service_principal.sp.application_id
    comment          = "PAT on behalf of ${databricks_service_principal.sp.display_name}"
    lifetime_seconds = 3600
  }

  resource "databricks_git_credential" "sp" {
    provider = databricks.sp
    depends_on = [databricks_obo_token.this]
    git_username          = "myuser"
    git_provider          = "azureDevOpsServices"
    personal_access_token = "sometoken"
  }

Konfigurowanie zautomatyzowanego potoku ciągłej integracji/ciągłego wdrażania za pomocą folderów Git usługi Databricks

Oto prosta automatyzacja, którą można uruchomić jako akcję usługi GitHub.

Wymagania

  • Folder Git został utworzony w obszarze roboczym usługi Databricks śledzącym scalanie gałęzi podstawowej.
  • Masz pakiet języka Python, który tworzy artefakty do umieszczenia w lokalizacji systemu plików DBFS. Kod musi:
    • Zaktualizuj repozytorium powiązane z preferowaną gałęzią (na przykład development), aby zawierało najnowsze wersje notatników.
    • Skompiluj wszystkie artefakty i skopiuj je do ścieżki biblioteki.
    • Zastąp ostatnie wersje artefaktów kompilacji, aby uniknąć konieczności ręcznego aktualizowania wersji artefaktów w zadaniu.

Tworzenie zautomatyzowanego przepływu pracy ciągłej integracji/ciągłego wdrażania

  1. Skonfiguruj tajemnice, aby twój kod mógł uzyskać dostęp do obszaru roboczego Databricks. Dodaj następujące wpisy tajne do repozytorium Github:

  2. Przejdź do karty Akcje repozytorium Git i kliknij przycisk Nowy przepływ pracy . W górnej części strony wybierz pozycję Skonfiguruj przepływ pracy samodzielnie i wklej następujący skrypt:

    link

    # This is a basic automation workflow to help you get started with GitHub Actions.
    
    name: CI
    
    # Controls when the workflow will run
    on:
      # Triggers the workflow on push for main and dev branch
      push:
        paths-ignore:
          - .github
        branches:
          # Set your base branch name here
          - your-base-branch-name
    
    # A workflow run is made up of one or more jobs that can run sequentially or in parallel
    jobs:
      # This workflow contains a single job called "deploy"
      deploy:
        # The type of runner that the job will run on
        runs-on: ubuntu-latest
        environment: development
        env:
          DATABRICKS_HOST: ${{ secrets.DEPLOYMENT_TARGET_URL }}
          DATABRICKS_TOKEN:  ${{ secrets.DEPLOYMENT_TARGET_TOKEN }}
          REPO_PATH: /Workspace/Users/someone@example.com/workspace-builder
          DBFS_LIB_PATH: dbfs:/path/to/libraries/
          LATEST_WHEEL_NAME: latest_wheel_name.whl
    
        # Steps represent a sequence of tasks that will be executed as part of the job
        steps:
        # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
        - uses: actions/checkout@v3
    
        - name: Setup Python
          uses: actions/setup-python@v3
          with:
          # Version range or exact version of a Python version to use, using SemVer's version range syntax.
            python-version: 3.8
    
        # Download the Databricks CLI. See https://github.com/databricks/setup-cli
        - uses: databricks/setup-cli@main
    
        - name: Install mods
          run: |
            pip install pytest setuptools wheel
    
        - name: Extract branch name
          shell: bash
          run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})"
          id: extract_branch
    
        - name: Update Databricks Git folder
          run: |
            databricks repos update ${{env.REPO_PATH}} --branch "${{ steps.extract_branch.outputs.branch }}"
    
        - name: Build Wheel and send to Databricks DBFS workspace location
          run: |
            cd $GITHUB_WORKSPACE
            python setup.py bdist_wheel
            dbfs cp --overwrite ./dist/* ${{env.DBFS_LIB_PATH}}
            # there is only one wheel file; this line copies it with the original version number in file name and overwrites if that version of wheel exists; it does not affect the other files in the path
            dbfs cp --overwrite ./dist/* ${{env.DBFS_LIB_PATH}}${{env.LATEST_WHEEL_NAME}} # this line copies the wheel file and overwrites the latest version with it
    
  3. Zaaktualizuj poniższe wartości zmiennych środowiskowych na własne:

    • DBFS_LIB_PATH: ścieżka w systemie plików DBFS do bibliotek (kół) używanych w tej automatyzacji, która zaczyna się od dbfs:. Na przykładdbfs:/mnt/myproject/libraries.
    • REPO_PATH: ścieżka w obszarze roboczym usługi Databricks do teczki Git, w której notesy będą aktualizowane.
    • LATEST_WHEEL_NAME: nazwa ostatniego skompilowanego pliku koła języka Python (.whl). Służy to do unikania ręcznego aktualizowania wersji koła w zadaniach usługi Databricks. Na przykład your_wheel-latest-py3-none-any.whl.
  4. Wybierz pozycję Skommituj zmiany..., aby skommitować skrypt jako workflow GitHub Actions. Po scaleniu żądania ściągnięcia dla tego przepływu pracy przejdź do karty Akcje repozytorium Git i upewnij się, że akcje zakończyły się pomyślnie.