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 usługi Databricks można traktować jako "lokalne wyewidencjonowania", które są indywidualne dla każdego użytkownika i gdzie użytkownicy wprowadzają zmiany w kodzie.

W folderze użytkownika w folderach Git usługi Databricks sklonuj repozytorium zdalne. Najlepszym rozwiązaniem jest utworzenie nowej gałęzi funkcji lub wybranie wcześniej utworzonej gałęzi dla 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 już skonfigurowania integracji 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 repozytoriów Repos, 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 kodu źródłowego kontrolowanego przez wersję w zadaniu usługi Azure Databricks.

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ę usługi Git w celu wywołania interfejsu API repozytoriów. 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, Postman 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ć jednostki 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 obszaru roboczego przy użyciu tokenu identyfikatora Entra firmy Microsoft i interfejsu API poświadczeń usługi Git.

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 dodać poświadczenia usługi Git do jednostki usługi przy użyciu narzędzia Terraform, dodaj 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

  1. Folder Git został utworzony w obszarze roboczym usługi Databricks śledzącym scalanie gałęzi podstawowej.
  2. Masz pakiet języka Python, który tworzy artefakty do umieszczenia w lokalizacji systemu plików DBFS. Kod musi:
    • Zaktualizuj repozytorium skojarzone z preferowaną gałęzią (na przykład development), aby zawierało najnowsze wersje notesó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.

Kroki

Uwaga

Krok 1 musi zostać wykonany przez administratora repozytorium Git.

  1. Skonfiguruj wpisy tajne, aby kod mógł uzyskiwać dostęp do obszaru roboczego usługi 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:
          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
          env:
            DBFS_LIB_PATH: dbfs:/path/to/libraries/
            REPO_PATH: /Repos/path/here
            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@v2
    
          - name: Setup Python
            uses: actions/setup-python@v2
            with:
            # Version range or exact version of a Python version to use, using SemVer's version range syntax.
              python-version: 3.8
    
          - name: Install mods
            run: |
              pip install databricks-cli
              pip install pytest setuptools wheel
    
          - name: Configure CLI
            run: |
              echo "${{ secrets.DEPLOYMENT_TARGET_URL }} ${{ secrets.DEPLOYMENT_TARGET_TOKEN }}" | databricks configure --token
    
          - 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 --path ${{env.REPO_PATH}} --branch "${{ steps.extract_branch.outputs.branch }}"
    
          - name: Build Wheel and send to Databricks workspace DBFS 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. Zaktualizuj następujące wartości zmiennych środowiskowych własnymi:

    • 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 folderu Git, w którym zostaną zaktualizowane notesy. Na przykład /Repos/Develop.
    • 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ę Zatwierdź zmiany, aby zatwierdzić skrypt jako przepływ pracy funkcji 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.