Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Fontos
Ez a funkció nyilvános előzetes verzióban van.
A GitHub Actions aktiválja a CI-/CD-folyamatok futtatását a GitHub-adattárakból, és lehetővé teszi a CI/CD-folyamat összeállításának, tesztelésének és üzembe helyezésének automatizálását.
Ez az oldal információkat nyújt a Databricks által kifejlesztett GitHub Actions-műveletekről, valamint példákat a gyakori használati esetekre. A Databricks egyéb CI/CD-funkcióiról és bevált gyakorlatokról további információt a CI/CD az Azure Databricks platformon és a Databricks ajánlott CI/CD-munkafolyamatai és bevált gyakorlatai címen talál.
Databricks GitHub Actions
A Databricks a következő GitHub Actionst fejlesztette ki a CI-/CD-munkafolyamatokhoz a GitHubon. GitHub Actions YAML-fájlokat vehet fel az adattár könyvtárába .github/workflows .
Megjegyzés:
Ez a cikk egy harmadik fél által fejlesztett GitHub Actionst ismerteti. Ha kapcsolatba szeretne lépni a szolgáltatóval, tekintse meg GitHub Actions támogatási.
| GitHub-művelet | Leírás |
|---|---|
| databricks/setup-cli | Összetett művelet, amely beállítja a Databricks parancssori felületét egy GitHub Actions-munkafolyamatban. |
Ci/CD-munkafolyamat futtatása Git-mappa frissítésére
Az alábbi példában a GitHub Actions YAML-fájlja frissít egy munkaterületi Git-mappát, amikor egy távoli ág frissül. A CI/CD Git-mappa megközelítéséről további információt az Egyéb forrásvezérlő eszközök című témakörben talál.
Requirements
Ez a példa számítási feladat identitás-összevonást használ a GitHub Actions esetében a fokozott biztonság érdekében, és megköveteli, hogy legyen egy GitHub Actions összevonási szabályzattal rendelkező szolgáltatási főszereplő hozzáadva a fiókjához. Lásd: Számítási feladatok identitás-összevonásának engedélyezése a GitHub Actionshez.
Fontos
Az összevonási szabályzat tárgyának (az összevont jogkivonat identitásának) pontosan meg kell egyeznie a várt jogkivonat-tulajdonossal. Ebben a példában az entitás típusa és neve Környezet és Prod. A létrehozott tárgynak formában repo:my-github-org-or-user/my-repo:environment:Prodkell lennie.
Miután szövetségi szabályzattal létrehozott egy szolgáltatási megbízottat, állítsa be a DATABRICKS_HOST környezeti változót az Azure Databricks-gazdagép munkaterületére, majd a DATABRICKS_CLIENT_ID környezeti változót a szolgáltatási megbízott UUID azonosítójához. A DATABRICKS_AUTH_TYPE környezeti változó a műveletben van beállítva. A Databricks környezeti változóiról további információt az egyesített hitelesítés környezeti változói és mezői című témakörben talál.
A művelet létrehozása
Most vegyen fel egy fájlt .github/workflows/sync_git_folder.yml az adattárba a következő YAML-lel:
name: Sync Git Folder
concurrency: prod_environment
on:
push:
branches:
# Set your base branch name here
- git-folder-cicd-example
permissions:
# These permissions are required for workload identity federation.
id-token: write
contents: read
jobs:
deploy:
runs-on: ubuntu-latest
name: 'Update git folder'
environment: Prod
env:
DATABRICKS_AUTH_TYPE: github-oidc
DATABRICKS_HOST: ${{ vars.DATABRICKS_HOST }}
DATABRICKS_CLIENT_ID: ${{ secrets.DATABRICKS_CLIENT_ID }} # This is the service principal UUID.
steps:
- uses: actions/checkout@v3
- uses: databricks/setup-cli@main
- name: Update git folder
# Set your workspace path and branch name here
run: databricks repos update /Workspace/<git-folder-path> --branch git-folder-cicd-example
CI/CD-munkafolyamat futtatása folyamatfrissítést futtató csomaggal
Az alábbi példában a GitHub Actions YAML-fájl egy teszttelepítést indít el, amely ellenőrzi, telepíti és futtatja a megadott feladatot a csomagban egy, a csomagkonfigurációs fájlban definiált dev , éles üzem előtti célon belül.
Requirements
Ehhez a példához a következőre van szükség:
Felhasználó által definiált környezeti változó
DATABRICKS_BUNDLE_ENV.Az adattár gyökerében található csomagkonfigurációs fájl, amely kifejezetten deklarálva van a GitHub Actions YAML-fájl beállításával
working-directory: .. A csomagkonfigurációs fájlnak meg kell határoznia egy Azure Databricks-munkafolyamatot és egy elnevezettsample_jobcélhelyetdev. Például:# This is a Databricks asset bundle definition for pipeline_update. bundle: name: pipeline_update include: - resources/*.yml variables: catalog: description: The catalog to use schema: description: The schema to use resources: jobs: sample_job: name: sample_job parameters: - name: catalog default: ${var.catalog} - name: schema default: ${var.schema} tasks: - task_key: refresh_pipeline pipeline_task: pipeline_id: ${resources.pipelines.sample_pipeline.id} environments: - environment_key: default spec: environment_version: '4' pipelines: sample_pipeline: name: sample_pipeline catalog: ${var.catalog} schema: ${var.schema} serverless: true root_path: '../src/sample_pipeline' libraries: - glob: include: ../src/sample_pipeline/transformations/** environment: dependencies: - --editable ${workspace.file_path} targets: dev: mode: development default: true workspace: host: <dev-workspace-url> variables: catalog: my_catalog schema: ${workspace.current_user.short_name} prod: mode: production workspace: host: <production-workspace-url> root_path: /Workspace/Users/someone@example.com/.bundle/${bundle.name}/${bundle.target} variables: catalog: my_catalog schema: prod permissions: - user_name: someone@example.com level: CAN_MANAGETovábbi információ a csomagkonfigurációról: Databricks Asset Bundle configuration.
Egy GitHub-titkos kód,
SP_TOKENamely az Azure Databricks hozzáférési jogkivonatát jelöli egy Azure Databricks-szolgáltatásnévhez , amely ahhoz az Azure Databricks-munkaterülethez van társítva, amelyhez a csomagot üzembe helyezik és futtatják. Token létrehozása:- Hozzon létre egy Databricks szolgáltatásfőt. Lásd: Szolgáltatásnevek hozzáadása a fiókhoz.
- Hozzon létre egy titkos kulcsot a szolgáltatási azonosító számára. Lásd : 1. lépés: OAuth-titkos kód létrehozása. Másolja ki a titkos kód és az ügyfélazonosító értékeit.
- Hozzon létre manuálisan egy Databricks hozzáférési jogkivonatot (fiókot vagy munkaterületet) a másolt titkos kód és az ügyfélazonosító értékeinek használatával. Lásd: Fiókszintű hozzáférési jogkivonat létrehozása.
- Másolja ki az
access_tokenértéket a JSON-válaszból. Adjon hozzá egySP_TOKENnevű GitHub-titkos elemet a adattár Actions részéhez, és használja a Databricks hozzáférési tokent titkos értékként. Lásd Titkosított titkok.
Az
DATABRICKS_TOKENegyesített hitelesítési környezeti változó a műveletben arra aSP_TOKENértékre van beállítva, amelyet Ön konfigurált.
A művelet létrehozása
Most vegyen fel egy fájlt .github/workflows/pipeline_update.yml az adattárba a következő YAML-lel:
# This workflow validates, deploys, and runs the specified bundle
# within a pre-production target named "dev".
name: 'Dev deployment'
# Ensure that only a single job or workflow using the same concurrency group
# runs at a time.
concurrency: 1
# Trigger this workflow whenever a pull request is opened against the repo's
# main branch or an existing pull request's head branch is updated.
on:
pull_request:
types:
- opened
- synchronize
branches:
- main
jobs:
# Used by the "pipeline_update" job to deploy the bundle.
# Bundle validation is automatically performed as part of this deployment.
# If validation fails, this workflow fails.
deploy:
name: 'Deploy bundle'
runs-on: ubuntu-latest
steps:
# Check out this repo, so that this workflow can access it.
- uses: actions/checkout@v3
# Download the Databricks CLI.
# See https://github.com/databricks/setup-cli
- uses: databricks/setup-cli@main
# Deploy the bundle to the "dev" target as defined
# in the bundle's settings file.
- run: databricks bundle deploy
working-directory: .
env:
DATABRICKS_TOKEN: ${{ secrets.SP_TOKEN }}
DATABRICKS_BUNDLE_ENV: dev
# Validate, deploy, and then run the bundle.
pipeline_update:
name: 'Run pipeline update'
runs-on: ubuntu-latest
# Run the "deploy" job first.
needs:
- deploy
steps:
# Check out this repo, so that this workflow can access it.
- uses: actions/checkout@v3
# Use the downloaded Databricks CLI.
- uses: databricks/setup-cli@main
# Run the Databricks workflow named "sample_job" as defined in the
# bundle that was just deployed.
- run: databricks bundle run sample_job --refresh-all
working-directory: .
env:
DATABRICKS_TOKEN: ${{ secrets.SP_TOKEN }}
DATABRICKS_BUNDLE_ENV: dev
Előfordulhat, hogy éles rendszer telepítéseket is kezdeményezni szeretne. A következő GitHub Actions YAML-fájl ugyanabban az adattárban létezhet, mint az előző fájl. Ez a fájl ellenőrzi, telepíti és futtatja a megadott csomagot egy "prod" nevű éles célon belül a csomagkonfigurációs fájlban definiált módon.
# This workflow validates, deploys, and runs the specified bundle
# within a production target named "prod".
name: 'Production deployment'
# Ensure that only a single job or workflow using the same concurrency group
# runs at a time.
concurrency: 1
# Trigger this workflow whenever a pull request is pushed to the repo's
# main branch.
on:
push:
branches:
- main
jobs:
deploy:
name: 'Deploy bundle'
runs-on: ubuntu-latest
steps:
# Check out this repo, so that this workflow can access it.
- uses: actions/checkout@v3
# Download the Databricks CLI.
# See https://github.com/databricks/setup-cli
- uses: databricks/setup-cli@main
# Deploy the bundle to the "prod" target as defined
# in the bundle's settings file.
- run: databricks bundle deploy
working-directory: .
env:
DATABRICKS_TOKEN: ${{ secrets.SP_TOKEN }}
DATABRICKS_BUNDLE_ENV: prod
# Validate, deploy, and then run the bundle.
pipeline_update:
name: 'Run pipeline update'
runs-on: ubuntu-latest
# Run the "deploy" job first.
needs:
- deploy
steps:
# Check out this repo, so that this workflow can access it.
- uses: actions/checkout@v3
# Use the downloaded Databricks CLI.
- uses: databricks/setup-cli@main
# Run the Databricks workflow named "sample_job" as defined in the
# bundle that was just deployed.
- run: databricks bundle run sample_job --refresh-all
working-directory: .
env:
DATABRICKS_TOKEN: ${{ secrets.SP_TOKEN }}
DATABRICKS_BUNDLE_ENV: prod
Futtasson egy CI/CD munkafolyamatot, amely JAR-t épít és üzembe helyez egy csomagot
Ha Java-alapú ökoszisztémával rendelkezik, a GitHub-műveletnek JAR-t kell létrehoznia és feltöltenie a csomag üzembe helyezése előtt. Az alábbi példában a GitHub Actions YAML-fájl elindít egy üzembe helyezést, amely létrehoz és feltölt egy JAR-t egy kötetre, majd ellenőrzi és telepíti a csomagot egy "prod" nevű éles célhoz a csomagkonfigurációs fájlban definiált módon. Java-alapú JAR-t fordít le, de a Scala-alapú projektek fordítási lépései hasonlóak.
Requirements
Ehhez a példához a következőre van szükség:
- Csomagkonfigurációs fájl az adattár gyökerénél, amely a GitHub Actions YAML-fájl beállításával explicit módon deklarálva van
working-directory: . - Egy
DATABRICKS_TOKENkörnyezeti változó, amely az Azure Databricks hozzáférési jogkivonatát jelöli, amely ahhoz az Azure Databricks-munkaterülethez van társítva, amelyhez a csomag üzembe helyezése és futtatása folyamatban van. - Az
DATABRICKS_HOSTAzure Databricks gazdagépként szolgáló munkaterületet képviselő környezeti változó.
A művelet létrehozása
Most vegyen fel egy fájlt .github/workflows/build_jar.yml az adattárba a következő YAML-lel:
name: Build JAR and deploy with bundles
on:
pull_request:
branches:
- main
push:
branches:
- main
jobs:
build-test-upload:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
java-version: '17' # Specify the Java version used by your project
distribution: 'temurin' # Use a reliable JDK distribution
- name: Cache Maven dependencies
uses: actions/cache@v4
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-
- name: Build and test JAR with Maven
run: mvn clean verify # Use verify to ensure tests are run
- name: Databricks CLI Setup
uses: databricks/setup-cli@v0.9.0 # Pin to a specific version
- name: Upload JAR to a volume
env:
DATABRICKS_TOKEN: ${{ secrets.DATABRICKS_TOKEN }}
DATABRICKS_HOST: ${{ secrets.DATABRICKS_HOST }} # Add host for clarity
run: |
databricks fs cp target/my-app-1.0.jar dbfs:/Volumes/artifacts/my-app-${{ github.sha }}.jar --overwrite
validate:
needs: build-test-upload
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Databricks CLI Setup
uses: databricks/setup-cli@v0.9.0
- name: Validate bundle
env:
DATABRICKS_TOKEN: ${{ secrets.DATABRICKS_TOKEN }}
DATABRICKS_HOST: ${{ secrets.DATABRICKS_HOST }}
run: databricks bundle validate
deploy:
needs: validate
if: github.event_name == 'push' && github.ref == 'refs/heads/main' # Only deploy on push to main
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Databricks CLI Setup
uses: databricks/setup-cli@v0.9.0
- name: Deploy bundle
env:
DATABRICKS_TOKEN: ${{ secrets.DATABRICKS_TOKEN }}
DATABRICKS_HOST: ${{ secrets.DATABRICKS_HOST }}
run: databricks bundle deploy --target prod