Git ve Databricks Git klasörleriyle CI/CD teknikleri (Depolar)
CI/CD iş akışlarında Databricks Git klasörlerini kullanma tekniklerini öğrenin. Çalışma alanında Databricks Git klasörlerini yapılandırarak Git depolarındaki proje dosyaları için kaynak denetimini kullanabilir ve bunları veri mühendisliği işlem hatlarınızla tümleştirebilirsiniz.
Aşağıdaki şekilde tekniklere ve iş akışına genel bir bakış gösterilmektedir.
Azure Databricks ile CI/CD'ye genel bakış için bkz . Azure Databricks'te CI/CD nedir?.
Geliştirme akışı
Databricks Git klasörlerinin kullanıcı düzeyinde klasörleri vardır. Kullanıcılar uzak bir depoyu ilk kopyaladığında kullanıcı düzeyi klasörler otomatik olarak oluşturulur. Kullanıcı klasörlerindeki Databricks Git klasörlerini, her kullanıcıya özgü "yerel çıkarmalar" ve kullanıcıların kodlarında değişiklikler yaptığı alanlar olarak düşünebilirsiniz.
Databricks Git klasörlerindeki kullanıcı klasörünüzde uzak deponuzu kopyalayın. En iyi yöntem, değişiklikleri doğrudan ana dala işleyip göndermek yerine, çalışmanız için yeni bir özellik dalı oluşturmak veya daha önce oluşturulmuş bir dalı seçmektir. Bu dalda değişiklik yapabilir, işleyebilir ve gönderebilirsiniz. Kodunuzu birleştirmeye hazır olduğunuzda, bunu Git klasörleri kullanıcı arabiriminde yapabilirsiniz.
Gereksinimler
Bu iş akışı, Git tümleştirmesinizaten
Not
Databricks, her geliştiricinin kendi özellik dalında çalışmasını önerir. Birleştirme çakışmalarını çözme hakkında bilgi için bkz . Birleştirme çakışmalarını çözme.
Git klasörlerinde işbirliği yapma
Aşağıdaki iş akışı, ana dalı temel alan adlı feature-b
bir dal kullanır.
- Mevcut Git deponuzu Databricks çalışma alanınıza kopyalayın.
- Ana daldan bir özellik dalı oluşturmak için Git klasörleri kullanıcı arabirimini kullanın. Bu örnek basitlik için tek bir özellik dalı
feature-b
kullanır. İşinizi yapmak için birden çok özellik dalı oluşturabilir ve kullanabilirsiniz. - Azure Databricks not defterlerinde ve depodaki diğer dosyalarda değişikliklerinizi yapın.
- Değişikliklerinizi işleyin ve Git sağlayıcınıza gönderme.
- Katkıda bulunanlar artık Git deposunu kendi kullanıcı klasörüne kopyalayabilir.
- Yeni bir dal üzerinde çalışan bir iş arkadaşı, Git klasöründeki not defterlerinde ve diğer dosyalarda değişiklik yapar.
- Katkıda bulunan , değişiklikleri işler ve Git sağlayıcısına iletir.
- Diğer dallardaki değişiklikleri birleştirmek veya Databricks'teki feature-b dalını yeniden temel almak için Git klasörleri kullanıcı arabiriminde aşağıdaki iş akışlarından birini kullanın:
-
Dalları birleştirin. Çakışma yoksa, birleştirme kullanılarak
git push
uzak Git deposuna gönderilir. - Başka bir dalda yeniden temel oluşturma.
-
Dalları birleştirin. Çakışma yoksa, birleştirme kullanılarak
- Çalışmanızı uzak Git deposu ve
main
dalı ile birleştirmeye hazır olduğunuzda, feature-b'den değişiklikleri birleştirmek için Git klasörleri kullanıcı arabirimini kullanın. İsterseniz, bunun yerine değişiklikleri doğrudan Git klasörünüzü yedekleyerek Git deposuyla birleştirebilirsiniz.
Üretim işi iş akışı
Databricks Git klasörleri, üretim işlerinizi çalıştırmak için iki seçenek sağlar:
-
1. Seçenek: İş tanımında bir uzak Git başvurusu sağlayın. Örneğin, Git deposunun
main
dalında belirli bir not defterini çalıştırın. - Seçenek 2: Bir üretim Git deposu ayarlayın ve program aracılığıyla güncelleştirmek için Depo API'lerini çağırın. Bu uzak depoyu kopyalayan Databricks Git klasöründe işleri çalıştırın. Repos API çağrısı işin ilk görevi olmalıdır.
1. Seçenek: Uzak depodaki not defterlerini kullanarak işleri çalıştırma
Uzak git deposunda bulunan not defterlerini kullanarak bir Azure Databricks işi çalıştırarak iş tanımı işlemini basitleştirin ve tek bir gerçek kaynağı tutun. Bu Git başvurusu bir Git işlemesi, etiketi veya dalı olabilir ve iş tanımında sizin tarafınızdan sağlanır.
Bu, kullanıcının üretim deposunda yerel düzenlemeler yapması veya dalları değiştirmesi gibi, üretim işinizde yanlışlıkla yapılan değişiklikleri önlemeye yardımcı olur. Ayrıca, Databricks'te ayrı bir üretim Git klasörü oluşturmanız, izinlerini yönetmeniz ve güncel tutmanız gerekmediğinden CD adımını otomatikleştirir.
Bkz . Git'i işlerle kullanma.
Seçenek 2: Üretim Git klasörü ve Git otomasyonu ayarlama
Bu seçenekte, birleştirmede Git klasörünü güncelleştirmek için bir üretim Git klasörü ve otomasyonu ayarlarsınız.
1. Adım: Üst düzey klasörleri ayarlama
Yönetici, kullanıcı dışı üst düzey klasörler oluşturur. Bu üst düzey klasörlerin en yaygın kullanım örneği, geliştirme, hazırlama ve üretim için uygun sürümler veya dallar için Databricks Git klasörleri içeren geliştirme, hazırlama ve üretim klasörleri oluşturmaktır. Örneğin, şirketiniz üretim için dalı kullanıyorsa main
, "üretim" Git klasörünün dalını main
kullanıma almış olması gerekir.
Bu üst düzey klasörlerdeki izinler genellikle çalışma alanı içindeki yönetici olmayan tüm kullanıcılar için salt okunur olur. Bu tür üst düzey klasörler için, çalışma alanı kullanıcıları tarafından üretim kodunuzda yanlışlıkla yapılan düzenlemeleri önlemek için yalnızca CAN EDIT ve CAN MANAGE izinlerine sahip hizmet sorumluları sağlamanızı öneririz.
2. Adım: Git klasörleri API'siyle Databricks Git klasörlerine yönelik otomatik güncelleştirmeleri ayarlama
Databricks'te bir Git klasörünü en son sürümde tutmak için Git otomasyonunu Repos API'siniçağıracak şekilde ayarlayabilirsiniz. Git sağlayıcınızda, PR'ın ana daldan başarılı bir şekilde birleştirilmesinden sonra, ilgili Git klasöründeki Repos API endpoint'ini çağırarak en son sürüme güncellemek için otomasyonu ayarlayın.
Örneğin, GitHub'da bu, GitHub Actions ile elde edilebilir. Daha fazla bilgi için repos API'sine bakın.
Databricks Git klasörleriyle otomasyon için hizmet sorumlusu kullanma
Çalışma alanınızın Git klasörlerine erişme yetkisine sahip bir hizmet sorumlusu oluşturmak için Azure Databricks hesap konsolunu veya Databricks CLI'yi kullanabilirsiniz.
Yeni bir hizmet sorumlusu oluşturmak için bkz. hizmet sorumlularını yönetme. Çalışma alanınızda bir hizmet sorumlusu olduğunda, git kimlik bilgilerinizi buna bağlayabilir ve böylece otomasyonunuzun bir parçası olarak çalışma alanınızın Git klasörlerine erişebilirsiniz.
Git klasörlerine erişmek için hizmet sorumlusunu yetkilendirme
Azure Databricks hesap konsolunu kullanarak bir hizmet sorumlusu için Git klasörlerinize yetkili erişim sağlamak için:
Azure Databricks çalışma alanınızda oturum açın. Bu adımları tamamlamak için çalışma alanınızda yönetici ayrıcalıklarına sahip olmanız gerekir. Çalışma alanınız için yönetici ayrıcalıklarınız yoksa, bu ayrıcalıkları isteyin veya hesap yöneticinize başvurun.
Herhangi bir sayfanın sağ üst köşesinde kullanıcı adınıza tıklayın ve ayarlar seçin.
Sol gezinti bölmesinde Çalışma Alanı Yöneticisi altında Kimlik ve erişim'i seçin ve ardından Hizmet Sorumlularıiçin Yönet düğmesini seçin.
altındaki hizmet sorumlusu sayfası
Hizmet sorumluları listesinden Git kimlik bilgileriyle güncelleştirmek istediğiniz kimlik bilgilerini seçin. Ayrıca hizmet sorumlusu ekleseçerek yeni bir hizmet sorumlusu oluşturabilirsiniz.
Git tümleştirme sekmesini seçin. (Hizmet ilkesini oluşturmadıysanız veya hizmet ilkesi yönetici ayrıcalığınız yoksa, bu sekme gri renkte görünecektir.) Bunun altında, kimlik bilgileri için Git sağlayıcısını seçin (GitHub gibi), Git hesabını bağla'yi seçin ve ardından Bağla'yi seçin.
Kendi Git kimlik bilgilerinizi bağlamak istemiyorsanız git kişisel erişim belirteci (PAT) de kullanabilirsiniz. Bunun yerine PAT kullanmak için kişisel erişim belirteci seçin ve hizmet sorumlusunun erişiminin kimliğini doğrularken kullanılacak Git hesabının belirteç bilgilerini sağlayın. Git sağlayıcısından PAT alma hakkında daha fazla bilgi için bkz. Git kimlik bilgilerini yapılandırma & uzak bir deposunu Azure Databricks'ne bağlama.
Bağlantı kurulacak Git kullanıcı hesabını seçmeniz istenir. Hizmet sorumlusunun erişim için kullanacağı Git kullanıcı hesabını seçin ve Devam Et'i seçin. (Kullanmak istediğiniz kullanıcı hesabını görmüyorsanız Farklı bir hesap kullanseçin.)
Sonraki iletişim kutusunda Databricks Yetkilendirseçeneğini seçin. Kısa bir süre "Hesap bağlanıyor..." iletisini göreceksiniz ve ardından güncellenmiş hizmet ilkesi ayrıntıları.
için Onay ekranı
Seçtiğiniz hizmet sorumlusu artık otomasyonunuzun bir parçası olarak Azure Databricks çalışma alanı Git klasör kaynaklarınıza erişirken bağlı Git kimlik bilgilerini uygulayacak.
Terraform tümleştirmesi
Terraform ve databricks_repo kullanarak databricks Git klasörlerini tam otomatik bir kurulumda da yönetebilirsiniz:
resource "databricks_repo" "this" {
url = "https://github.com/user/demo.git"
}
Terraform kullanarak hizmet sorumlusuna Git kimlik bilgilerini eklemek için aşağıdaki yapılandırmayı ekleyin:
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"
}
Databricks Git klasörleriyle otomatik CI/CD işlem hattı yapılandırma
GitHub Action olarak çalıştırabileceğiniz basit bir otomasyon aşağıdadır.
Gereksinimler
- Databricks çalışma alanında, birleştirilmekte olan temel dalı izleyen bir Git klasörü oluşturdunuz.
- DBFS konumuna yerleştirecek yapıtları oluşturan bir Python paketiniz var. Kodunuz:
- Tercih ettiğiniz dalla ilişkili depoyu (
development
gibi) not defterlerinizin en son sürümlerini içerecek şekilde güncelleştirin. - Herhangi bir yapıt oluşturun ve bunları kitaplık yoluna kopyalayın.
- İşinizdeki yapıt sürümlerini el ile güncelleştirmek zorunda kalmamak için derleme yapıtlarının son sürümlerini değiştirin.
- Tercih ettiğiniz dalla ilişkili depoyu (
Otomatik CI/CD iş akışı oluşturma
Kodunuzun Databricks çalışma alanına erişebilmesi için gizli anahtarları ayarlayın. Github deposuna aşağıdaki gizli dizileri ekleyin:
-
DEPLOYMENT_TARGET_URL: Bunu çalışma alanı URL'niz olarak ayarlayın. Alt dizeyi eklemeyin
/?o
. - DEPLOYMENT_TARGET_TOKEN: Bunu Databricks Kişisel Erişim Belirteci (PAT) olarak ayarlayın. Azure Databricks kişisel erişim belirteci kimlik doğrulaması yönergelerini izleyerek bir Databricks PAT oluşturabilirsiniz.
-
DEPLOYMENT_TARGET_URL: Bunu çalışma alanı URL'niz olarak ayarlayın. Alt dizeyi eklemeyin
Git deponuzun Eylemler sekmesine gidin ve Yeni iş akışı düğmesine tıklayın. Sayfanın üst kısmında İş akışını kendiniz ayarlayın'ı seçin ve bu betiği yapıştırın:
# 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
Aşağıdaki ortam değişkeni değerlerini kendi değerlerinizle güncelleyin:
-
DBFS_LIB_PATH: DBFS'de, ile başlayan
dbfs:
bu otomasyonda kullanacağınız kitaplıklara (tekerlekler) giden yol. Örneğin, .dbfs:/mnt/myproject/libraries
- REPO_PATH: Databricks çalışma alanınızdaki, not defterlerinin güncelleştirileceği Git klasörüne giden yol.
-
LATEST_WHEEL_NAME: Son derlenmiş Python tekerlek dosyasının (
.whl
) adı. Bu, Databricks işlerinizdeki tekerlek sürümlerini el ile güncelleştirmekten kaçınmak için kullanılır. Örneğin,your_wheel-latest-py3-none-any.whl
.
-
DBFS_LIB_PATH: DBFS'de, ile başlayan
Betiği bir GitHub Actions iş akışı olarak göndermek için 'Değişiklikleri işle'yi seçin.... Bu iş akışı için çekme isteği birleştirildikten sonra Git deposunun Eylemler sekmesine gidin ve eylemlerin başarılı olduğunu onaylayın.