Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Penting
Fitur ini ada di Pratinjau Publik.
GitHub Actions memicu eksekusi alur CI/CD dari repositori GitHub Anda dan memungkinkan Anda mengotomatiskan alur CI/CD build, pengujian, dan penyebaran Anda.
Artikel ini menyediakan informasi tentang GitHub Actions yang dikembangkan oleh Databricks dan contoh untuk kasus penggunaan umum. Untuk informasi tentang fitur CI/CD dan praktik terbaik lainnya di Databricks, lihat CI/CD di Azure Databricks dan Praktik terbaik dan alur kerja CI/CD yang direkomendasikan di Databricks.
Tindakan Databricks GitHub
Databricks telah mengembangkan GitHub Actions berikut untuk alur kerja CI/CD Anda di GitHub. Tambahkan file YAML GitHub Actions ke direktori repositori .github/workflows Anda.
Nota
Artikel ini membahas GitHub Actions, yang dikembangkan oleh pihak ketiga. Untuk menghubungi penyedia, lihat Dukungan Tindakan GitHub.
| Tindakan GitHub | Deskripsi |
|---|---|
| databricks/setup-cli | Tindakan komposit yang menyiapkan Databricks CLI dalam alur kerja GitHub Actions. |
Menjalankan alur kerja CI/CD yang memperbarui folder Git
File YAML GitHub Actions berikut ini memperbarui folder Git di ruang kerja saat branch jarak jauh diperbarui. Untuk informasi tentang pendekatan folder Git untuk CI/CD, lihat Alat lain untuk kontrol sumber.
Persyaratan
Contoh ini menggunakan federasi identitas beban kerja untuk GitHub Actions untuk keamanan yang ditingkatkan, dan mengharuskan Anda membuat kebijakan federasi. Lihat Mengaktifkan federasi identitas beban kerja untuk GitHub Actions.
Membuat Tindakan
Sekarang tambahkan file .github/workflows/sync_git_folder.yml ke repositori Anda dengan YAML berikut:
name: Sync Git Folder
concurrency: prod_environment
on:
push:
branches:
# Set your base branch name here
- git-folder-cicd-example
permissions:
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 }}
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
Menjalankan alur kerja CI/CD dengan bundel yang menjalankan pembaruan pipeline
Contoh file GITHub Actions YAML berikut memicu penyebaran pengujian yang memvalidasi, menyebarkan, dan menjalankan pekerjaan yang ditentukan dalam bundel dalam target pra-produksi bernama dev sebagaimana didefinisikan dalam file konfigurasi bundel.
Persyaratan
Contoh ini mengharuskan ada:
File konfigurasi bundel di akar repositori, yang secara eksplisit dideklarasikan melalui pengaturan
working-directory: .file YAML GitHub Actions File konfigurasi bundel ini harus menentukan alur kerja Azure Databricks bernamasample_jobdan target bernamadev. Contohnya:# 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_MANAGEUntuk informasi selengkapnya tentang konfigurasi bundel, lihat Konfigurasi Bundel Aset Databricks.
Rahasia GitHub bernama
SP_TOKEN, mewakili token akses Azure Databricks untuk perwakilan layanan Azure Databricks yang terkait dengan ruang kerja Azure Databricks tempat bundel ini disebarkan dan dijalankan. Untuk membuat token:- Buat Service Principal Databricks. Lihat Menambahkan perwakilan layanan ke akun Anda.
- Buat rahasia untuk prinsipal layanan. Lihat Langkah 1: Membuat rahasia OAuth. Salin nilai kunci rahasia dan ID klien.
- Buat token akses Databricks secara manual (akun atau ruang kerja) menggunakan nilai rahasia dan ID klien yang disalin. Lihat Membuat token akses tingkat akun.
-
access_tokenSalin nilai dari respons JSON. Tambahkan rahasia GitHub bernamaSP_TOKENke Tindakan di repositori Anda dan gunakan token akses Databricks sebagai nilai rahasia. Lihat Rahasia terenkripsi.
Membuat Tindakan
Sekarang tambahkan file .github/workflows/pipeline_update.yml ke repositori Anda dengan YAML berikut:
# 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
Anda mungkin juga ingin memulai penerapan produksi. File YAML GitHub Actions berikut dapat ada di repositori yang sama dengan file sebelumnya. File ini memvalidasi, menyebarkan, dan menjalankan bundel yang ditentukan dalam target produksi bernama "prod" seperti yang didefinisikan dalam file konfigurasi bundel.
# 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
Menjalankan alur kerja CI/CD yang membangun JAR dan menyebarkan bundel
Jika Anda memiliki ekosistem berbasis Java, GitHub Action Anda perlu membuat dan mengunggah JAR sebelum menyebarkan bundel. Contoh file GITHub Actions YAML berikut memicu penyebaran yang membangun dan mengunggah JAR ke volume, lalu memvalidasi dan menyebarkan bundel ke target produksi bernama "prod" seperti yang didefinisikan dalam file konfigurasi bundel. Ini mengkompilasi JAR berbasis Java, tetapi langkah-langkah kompilasi untuk proyek berbasis Scala serupa.
Persyaratan
Contoh ini mengharuskan ada:
- File konfigurasi bundel di akar repositori, yang secara eksplisit dideklarasikan melalui pengaturan file YAML GitHub Actions
working-directory: . -
DATABRICKS_TOKENVariabel lingkungan yang mewakili token akses Azure Databricks yang terkait dengan ruang kerja Azure Databricks tempat bundel ini disebarkan dan dijalankan. -
DATABRICKS_HOSTVariabel lingkungan yang mewakili ruang kerja host Azure Databricks.
Membuat Tindakan
Sekarang tambahkan file .github/workflows/build_jar.yml ke repositori Anda dengan YAML berikut:
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