CI/CD-technikák Git- és Databricks Git-mappákkal (Adattárak)
Ismerje meg a Databricks Git-mappák CI/CD-munkafolyamatokban való használatának technikáit. A Databricks Git-mappák munkaterületen való konfigurálásával forrásvezérlőt használhat a Git-adattárakban lévő projektfájlokhoz, és integrálhatja őket az adatmérnöki folyamatokba.
Az alábbi ábrán a technikák és a munkafolyamatok áttekintése látható.
A CI/CD és az Azure Databricks áttekintése: Mi a CI/CD az Azure Databricksben?
Fejlesztési folyamat
A Databricks Git-mappák felhasználói szintű mappákkal rendelkeznek. A rendszer automatikusan létrehozza a felhasználói szintű mappákat, amikor a felhasználók először klónoznak egy távoli adattárat. A felhasználói mappákban lévő Databricks Git-mappákat "helyi példányoknak" tekintheti, amelyek minden felhasználó számára egyediek, és ahol a felhasználók módosítják a kódjukat.
A Databricks Git-mappák felhasználói mappájában klónozza a távoli adattárat. Ajánlott eljárás, hogy a módosítások közvetlen véglegesítése és a főágba való közvetlen leküldése helyett hozzon létre egy új funkcióágat, vagy válasszon ki egy korábban létrehozott ágat a munkájához. Az ágban módosításokat végezhet, véglegesíthet és leküldhet. Ha készen áll a kód egyesítésére, ezt a Git-mappák felhasználói felületén teheti meg.
Követelmények
Ehhez a munkafolyamathoz már kell beállítania a Git-integrációs.
Feljegyzés
A Databricks azt javasolja, hogy minden fejlesztő a saját szolgáltatáságán működjön. Az egyesítési ütközések feloldásáról további információt az egyesítési ütközések feloldása című témakörben talál.
Együttműködés a Git-mappákban
Az alábbi munkafolyamat a fő ágon alapuló ágat feature-b
használja.
- Klónozza a meglévő Git-adattárat a Databricks-munkaterületre.
- A Git-mappák felhasználói felületén hozzon létre egy szolgáltatáságat a főágból. Ez a példa egyetlen funkcióágat
feature-b
használ az egyszerűség kedvéért. Több funkcióágat is létrehozhat és használhat a munkájához. - Módosítsa az Azure Databricks-jegyzetfüzeteket és más fájlokat az adattárban.
- Véglegesítse és küldje el a módosításokat a Git-szolgáltatónak.
- A közreműködők mostantól klónozhatják a Git-adattárat a saját felhasználói mappájukba.
- Egy új ágon dolgozva egy munkatárs módosítja a jegyzetfüzeteket és a Git mappában lévő egyéb fájlokat.
- A közreműködő véglegesíti és leküldi a módosításokat a Git-szolgáltatónak.
- Ha más ágak módosításait szeretné egyesíteni, vagy a Databricksben szeretné újrabázisba adni a feature-b ágat, a Git-mappák felhasználói felületén használja az alábbi munkafolyamatok egyikét:
-
Ágak egyesítése. Ha nincs ütközés, a rendszer leküldi az egyesítést a távoli Git-adattárba a használatával
git push
. - Újrabázis egy másik ágon.
-
Ágak egyesítése. Ha nincs ütközés, a rendszer leküldi az egyesítést a távoli Git-adattárba a használatával
- Ha készen áll arra, hogy a munkát a távoli Git-adattárba és
main
ágba egyesítse, a Git-mappák felhasználói felületével egyesítheti a b funkció módosításait. Ha szeretné, a módosításokat közvetlenül a Git-tárházba egyesítheti a Git-mappa háttérrendszerében.
Éles feladat munkafolyamata
A Databricks Git-mappák két lehetőséget biztosítanak az éles feladatok futtatására:
-
1. lehetőség: Adjon meg egy távoli Git-hivatkozást a feladatdefinícióban. Futtasson például egy adott jegyzetfüzetet egy
main
Git-adattár ágában. - 2. lehetőség: Állítson be egy éles Git-adattárat, és hívja meg a Repos API-kat, hogy programozott módon frissítse. Futtassa a feladatokat a távoli adattárat klónozó Databricks Git-mappán. A Feladat első feladatának a Repos API-hívásnak kell lennie.
1. lehetőség: Feladatok futtatása távoli adattárban lévő jegyzetfüzetek használatával
Egyszerűsítheti a feladatdefiníciós folyamatot, és egyetlen igazságforrást tarthat meg egy Azure Databricks-feladat futtatásával egy távoli Git-adattárban található jegyzetfüzetek használatával. Ez a Git-referencia lehet Egy Git-véglegesítés, címke vagy ág, amelyet Ön a feladatdefinícióban biztosít.
Ez segít megelőzni az éles feladat véletlen módosításait, például ha egy felhasználó helyi módosításokat végez egy éles adattárban, vagy ágakat vált. Emellett automatizálja a CD-lépést is, mivel nem kell külön éles Git-mappát létrehoznia a Databricksben, kezelnie kell az engedélyeket, és frissítenie kell.
Lásd: A Git használata feladatokkal.
2. lehetőség: Éles Git-mappa és Git Automation beállítása
Ebben a beállításban beállít egy éles környezetbeli Git-mappát, valamint az egyesítéskor a Git-mappa frissítésére szolgáló automatizálást.
1. lépés: Felső szintű mappák beállítása
A rendszergazda nem felhasználó legfelső szintű mappákat hoz létre. Ezeknek a legfelső szintű mappáknak a leggyakoribb használati esete, ha olyan fejlesztési, előkészítési és éles mappákat hoz létre, amelyek Databricks Git-mappákat tartalmaznak a fejlesztéshez, előkészítéshez és éles környezethez megfelelő verziókhoz vagy ágakhoz. Ha például a vállalat az main
éles ágat használja, a "production" Git mappában ki kell venni az main
ágat.
Ezekre a legfelső szintű mappákra vonatkozó engedélyek általában csak olvashatók a munkaterületen belüli összes nem rendszergazdai felhasználó számára. Az ilyen legfelső szintű mappák esetében azt javasoljuk, hogy csak a szolgáltatásnév(ek)et adja meg a CAN EDIT és a CAN MANAGE engedélyekkel, hogy elkerülje az éles kód munkaterület-felhasználók általi véletlen szerkesztését.
2. lépés: A Databricks Git-mappák automatikus frissítéseinek beállítása a Git-mappák API-val
Ha a Git-mappát a Databricksben a legújabb verzióban szeretné tartani, beállíthatja a Git Automationt a Repos APImeghívásához. Git szolgáltatójában állítson be olyan automatizálást, amely minden PR fő ágba való sikeres egyesítése után meghívja a megfelelő Git-mappában található Repos API-végpontot, hogy frissítse azt a legújabb verzióra.
A GitHubon például ez a GitHub Actions használatával érhető el. További információkért lásd a Repos API-t.
Szolgáltatási objektum használata automatizáláshoz a Databricks Git-mappákkal
Az Azure Databricks-fiókkonzol vagy a Databricks parancssori felület használatával létrehozhat egy szolgáltatásnevet, amely jogosult a munkaterület Git-mappáinak elérésére.
Új szolgáltatásnév létrehozásához lásd Szolgáltatásnevek kezelésecímű témakört. Ha szolgáltatásnévvel rendelkezik a munkaterületen, csatolhatja hozzá a Git-hitelesítő adatait, hogy az az automatizálás részeként hozzáférhessen a munkaterület Git-mappáihoz.
Szolgáltatásprincípálé engedélyezése a Git-mappák eléréséhez
Ha az Azure Databricks-fiókkonzol használatával jogosult hozzáférést szeretne biztosítani a Git-mappákhoz egy szolgáltatásnévhez:
Jelentkezzen be az Azure Databricks-munkaterületre. A lépések elvégzéséhez rendszergazdai jogosultságokkal kell rendelkeznie a munkaterületen. Ha nem rendelkezik rendszergazdai jogosultságokkal a munkaterülethez, kérje vagy forduljon a fiókadminisztrátorhoz.
A lap jobb felső sarkában kattintson a felhasználónévre, majd válassza a Beállításoklehetőséget.
A bal oldali navigációs panelen válassza a Identitás és hozzáférés elemet a Munkaterület-rendszergazda alatt, majd válassza a Kezelés gombot a Szolgáltatásfelelősökszámára.
A szolgáltatásnevek listájában válassza ki azt, amelyet Git-hitelesítő adatokkal szeretne frissíteni. Új szolgáltatásnevet is létrehozhat a Szolgáltatásnév hozzáadásalehetőséget választva.
Válassza a Git-integráció fület. (Ha nem hozta létre a szolgáltatási főszereplőt, vagy nem kapta meg rajta a szolgáltatási főszereplő-kezelő jogosultságot, az szürkén fog megjelenni.) Alatta válassza ki a hitelesítő adatokhoz tartozó Git-szolgáltatót (például GitHub), válassza az Git-fiók összekapcsolásalehetőséget, majd válassza az Összekapcsoláslehetőséget.
Személyes Git-hozzáférési jogkivonatot (PAT) is használhat, ha nem szeretné összekapcsolni a saját Git-hitelesítő adatait. Pat használatához válassza a Személyes hozzáférési jogkivonatot, és adja meg a Git-fiók jogkivonat-adatait a szolgáltatásnév hozzáférésének hitelesítése során. A PAT beszerzéséről Git-szolgáltatótól bővebb információ a Git-hitelesítő adatok konfigurálása, valamint a & távoli adattárnak az Azure Databrickshezvaló csatlakoztatása részben található.
A rendszer kérni fogja, hogy válassza ki a csatolandó Git-felhasználói fiókot. Válassza ki azt a Git-felhasználói fiókot, amelyet a szolgáltatásnév használni fog a hozzáféréshez, majd válassza a Folytatáslehetőséget. (Ha nem látja a használni kívánt felhasználói fiókot, válassza a Másik fiók használatalehetőséget.)
A következő párbeszédpanelen válassza A Databricks engedélyezéselehetőséget. Rövid időre megjelenik a "Fiók csatolása..." üzenet majd a szolgáltatásnév frissített részletei.
A kiválasztott szolgáltatásnév mostantól alkalmazza a csatolt Git-hitelesítő adatokat az Azure Databricks-munkaterület Git-mappaerőforrásainak elérésekor az automatizálás részeként.
Terraform-integráció
A Databricks Git-mappákat egy teljesen automatizált beállításban is kezelheti a Terraform és a databricks_repo használatával:
resource "databricks_repo" "this" {
url = "https://github.com/user/demo.git"
}
Ha a Terraform használatával szeretne Git-hitelesítő adatokat hozzáadni egy szolgáltatásnévhez, adja hozzá a következő konfigurációt:
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"
}
Automatizált CI/CD-folyamat konfigurálása Databricks Git-mappákkal
Íme egy egyszerű automatizálás, amely GitHub-műveletként futtatható.
Követelmények
- Létrehozott egy Git-mappát egy Databricks-munkaterületen, amely nyomon követi az egyesített alapágat.
- Van egy Python-csomagja, amely létrehozza az összetevőket egy DBFS-helyre való elhelyezéshez. A kódnak a következőnek kell lennie:
- Frissítse az előnyben részesített ághoz (például
development
) társított adattárat a jegyzetfüzetek legújabb verzióinak tárolására. - Hozza létre az összetevőket, és másolja őket a tár elérési útjára.
- Cserélje le a buildösszetevők utolsó verzióit, hogy ne kelljen manuálisan frissítenie az összetevőverziókat a feladatban.
- Frissítse az előnyben részesített ághoz (például
Automatizált CI/CD-munkafolyamat létrehozása
Állítson be titkos kulcsokat, hogy a kód hozzáférhessen a Databricks-munkaterülethez. Adja hozzá a következő titkos kódokat a GitHub-adattárhoz:
-
DEPLOYMENT_TARGET_URL: Állítsd be ezt a munkaterületed URL-címére. Ne foglalja bele a
/?o
részszúrást. -
DEPLOYMENT_TARGET_TOKEN: Állítsa be ezt egy Databricks személyes hozzáférési jogkivonatra (PAT). A Databricks PAT-t az Azure Databricks személyes hozzáférési jogkivonat-hitelesítési
utasításait követve hozhatja létre.
-
DEPLOYMENT_TARGET_URL: Állítsd be ezt a munkaterületed URL-címére. Ne foglalja bele a
Lépjen a Git-adattár Műveletek lapjára, és kattintson az Új munkafolyamat gombra. Az oldal tetején válassza az Állítson be egy munkafolyamatot saját maga lehetőséget, és illessze be ezt a szkriptet:
# 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
Frissítse a következő környezeti változóértékeket a sajátjával:
-
DBFS_LIB_PATH: A DBFS-ben az ebben az automatizálásban használt kódtárakhoz (kerekekhez) vezető útvonal, amely a következővel
dbfs:
kezdődik: . Például:dbfs:/mnt/myproject/libraries
- REPO_PATH: A Databricks-munkaterület elérési útja annak a Git-mappának, ahol a jegyzetfüzetek frissülnek.
-
LATEST_WHEEL_NAME: Az utoljára lefordított Python-kerékfájl neve (
.whl
). Ezzel elkerülheti, hogy a Databricks-feladatok kerékverziói manuálisan frissüljenek. Például:your_wheel-latest-py3-none-any.whl
.
-
DBFS_LIB_PATH: A DBFS-ben az ebben az automatizálásban használt kódtárakhoz (kerekekhez) vezető útvonal, amely a következővel
Válassza Módosítások véglegesítése... a szkript GitHub Actions-munkafolyamatként való véglegesítéséhez. A munkafolyamat lekéréses kérésének egyesítése után lépjen a Git-adattár Műveletek lapjára, és győződjön meg arról, hogy a műveletek sikeresek.