Databricks Apps aracınız için CI/CD'yi ayarlama

CI/CD işlem hattı, kod incelemesi ve otomatik dağıtım aracılığıyla aracınızda yapılan her değişikliği çalıştırdığından üretim dağıtımları herhangi bir geliştiricinin dizüstü bilgisayarına bağımlı olmaz. İşlem hattı yapılandırıldıktan sonra ana dalınıza yapılan her birleştirme Databricks Apps'te aracınızı dağıtır ve yeniden başlatır.

Bu sayfa aracıya özgü parçaları kapsar. GitHub Actions ile Databricks Uygulamaları için CI/CD, temel iş akışı kurulumunu açıklar: iş yükü kimliği federasyonu, GitHub ortamı ve dağıtım YAML dosyası. Önce bu sayfayı tamamlayın, ardından aracı uygulamalarına uygulanan eklemeler için buraya dönün.

Gereksinimler

1. Adım. Başlangıç iş akışını kullanma

databricks/app-templates içindeki çeşitli aracı şablonları kullanıma .github/workflows/deploy.ymlhazır bir gönderir, böylece iş akışını sıfırdan yazmanız gerekmez.

  1. databricks/app-templates'dan, örneğin agent-langgraph veya agent-openai-agents-sdk gibi bir ajan şablonu seçin.
  2. Kopyalanan şablon dizininizde var olup olmadığını .github/workflows/deploy.yml denetleyin.
  3. İş akışını ayarlayın:
    • deploy.yml varsa: Onu açın, databricks bundle run adımının paketinizin databricks.yml içindeki kaynak anahtarına başvurduğunu doğrulayın ve dosyanın üstbilgi yorumundaki önkoşulları izleyin.
    • deploy.yml yoksa: Bunu, mevcut olan bir şablondan veya 4. Adım: Dağıtım iş akışını ekleyin bölümünden kopyalayın. Ardından databricks bundle run <key> adımını, paketinizin kaynak anahtarıyla eşleşecek şekilde güncelleştirin.

2. Adım. MLflow deneme kimliğini önceden doldurma

Aracı şablonları, MLFLOW_EXPERIMENT_ID içinde databricks.yml alanını boş bırakır. quickstart betik bunu ilk kurulumda yerel olarak doldurur, ancak yeni bir CI çalıştırıcısı doldurmaz. experiment_id boşsa, databricks bundle deploy bir Terraform tür hatasıyla (For input string: "") başarısız olur.

Bunu düzeltmek için doldurulan değeri kaydedin:

  1. uv run quickstart --profile <your-profile> aracıyı yazdığınız makinede yerel olarak çalıştırın.
  2. databricks.yml içindeki deneme kaynağının (name: 'experiment' altındaki resources.apps.<key>.resources girdisinin) artık sayısal bir experiment_id değeri olduğunu doğrulayın.
  3. Değişikliği kaydedin.

Deneme çalışma alanı kapsamında olduğundan, bu çalışma alanını hedefleyen her CI dağıtımı için aynı kimlik geçerlidir. Birden çok çalışma alanına dağıtım yapıyorsanız, databricks.yml içinde hedef başına bir deney tanımlayın (her targets.<env> bloğu için bir tane) veya bir paket değişkeni kullanın.

Lakebase bellek şablonları için Postgres izinleri verme

Gelişmiş ajan şablonları (agent-langgraph-advanced, agent-openai-advanced), otomatik ölçeklenen bir Lakebase Postgres kaynağını doğrudan databricks.yml içinde tanımlar. Databricks CLI v0.295.0 ve üzeri sürümleriyle, databricks bundle deploy uygulamanın yanı sıra kaynağı da sağlar.

DAB postgres kaynağı, uygulamanın hizmet aslına Lakebase projesine çalışma alanı düzeyinde erişim sağlar, ancak Lakebase veritabanı erişimi için ayrı bir Postgres rolü katmanı tutar (şemalar, tablolar ve diziler). Ajanın bellek tablolarını okuyup yazabilmesi için, service principal’ın öncelikle doğru ayrıcalıklara sahip bir Postgres rolüne sahip olması gerekir. bkz. İki katmanlı model için kimlik doğrulama mimarisi .

Bu Postgres düzeyi ayrıcalıkları vermek tek seferlik bir kurulumdur. İlk bundle deploy ve bundle runarasında yerel olarak çalıştırın. Hizmet sorumlusunun Postgres rolü uygulamanın ömrü boyunca geçerliliğini koruduğundan, CI bu akışın ardından standart deploy ardından run yolundan yeniden dağıtılır.

  1. Lakebase kaynağını sağlamak için paketi dağıtın:

    databricks bundle deploy --target prod
    
  2. Hizmet sorumlusuna ihtiyaç duyduğu Postgres düzeyi ayrıcalıkları verin:

    uv run python scripts/grant_lakebase_permissions.py \
      "$(databricks apps get <app-name> --output json | jq -r '.service_principal_client_id')" \
      --memory-type openai \
      --autoscaling-endpoint <endpoint>
    

    LangGraph şablonu için --memory-type langgraph iletin. Betik ayrıca otomatik ölçeklendirmeli Lakebase için --project <project> --branch <branch> veya tahsis edilmiş Lakebase için --instance-name <name> seçeneğini de destekler.

  3. Uygulamayı başlatın:

    databricks bundle run <bundle-key> --target prod
    

Adım 3. Dağıtılan aracıda duman testi

databricks bundle run çalıştırıcı aracıya başlatma sinyali verir vermez döndürür, ancak aracı işlemi önyükleme sırasında yine başarısız olabilir. 5. Adım: Uygulamanın sağlıklı olmasını bekleyin bölümündeki durum denetiminden sonra, deploy.yml konumuna bir canary isteği gönderen aşağıdaki smoke test adımını /invocations bölümüne ekleyin:

- name: Smoke test invocations
  env:
    APP_NAME: my-agent
  run: |
    APP_URL=$(databricks apps get "$APP_NAME" --output json | jq -r '.url')
    TOKEN=$(databricks auth token | jq -r '.access_token')
    STATUS=$(curl -sS -o /tmp/canary.json -w "%{http_code}" \
      -X POST "$APP_URL/invocations" \
      -H "Authorization: Bearer $TOKEN" \
      -H "Content-Type: application/json" \
      -d '{"input": [{"role": "user", "content": "ping"}], "stream": false}')
    if [ "$STATUS" != "200" ]; then
      echo "Smoke test failed with status $STATUS:" >&2
      cat /tmp/canary.json >&2
      exit 1
    fi
    echo "Smoke test passed."

Note

Databricks Uygulamaları çağrı için yalnızca OAuth belirteçlerini kabul eder. databricks auth token içindeki çalışma alanı OAuth belirtecini kullanın; Databricks Apps diğer tüm belirteç türlerini reddeder.

Ek kaynaklar