Nastavte CI/CD pro vašeho agenta Databricks Apps

CI/CD pipeline zajistí, že každá změna vašeho agenta projde code review a automatizovaným nasazením, takže nasazení do produkce nezávisí na notebooku žádného konkrétního vývojáře. Jakmile je pipeline nakonfigurována, každé sloučení do hlavní větve nasadí a restartuje vašeho agenta v aplikaci Databricks Apps.

Tato stránka popisuje části specifické pro agenta. CI/CD for Databricks Apps s GitHub Actions dokumentuje základní nastavení pracovního postupu: federaci identit úloh, prostředí GitHub a nasazení YAML. Nejprve dokončete tuto stránku a pak se sem vraťte kvůli doplňkům, které se vztahují na aplikace agentů.

Požadavky

Krok 1. Použijte výchozí pracovní postup

Několik šablon agentů v databricks/app-templates dodává připravenou k použití .github/workflows/deploy.yml, takže pracovní postup nemusíte psát úplně od začátku.

  1. Vyberte šablonu agenta z databricks/app-templates, například agent-langgraph nebo agent-openai-agents-sdk.
  2. V adresáři klonované šablony zkontrolujte, jestli .github/workflows/deploy.yml existuje.
  3. Nastavte pracovní postup:
    • Pokud deploy.yml existuje: Otevřete ho, ověřte, že krok databricks bundle run odkazuje na klíč prostředku vašeho balíčku z databricks.yml, a postupujte podle předpokladů uvedených v komentáři v záhlaví souboru.
    • Pokud deploy.yml neexistuje: Zkopírujte ho ze šablony, kde existuje, nebo z Kroku 4. Přidejte pracovní postup nasazení. Potom aktualizujte krok databricks bundle run <key> tak, aby odpovídal klíči prostředku vašeho balíčku.

Krok 2. Předvyplňte ID experimentu MLflow

Šablony agentů ponechávají MLFLOW_EXPERIMENT_ID prázdné v databricks.yml. Skript quickstart jej při prvním nastavení doplní lokálně, ale nový CI runner nikoli. Pokud experiment_id je prázdný, databricks bundle deploy selže s chybou typu Terraform (For input string: "").

Pokud ji chcete opravit, potvrďte vyplněnou hodnotu:

  1. Spusťte uv run quickstart --profile <your-profile> místně na počítači, na kterém jste vytvořili agenta.
  2. Ověřte, že zdroj experimentu ( databricks.yml položka s name: 'experiment' položkou resources.apps.<key>.resources) má nyní číselnou hodnotu experiment_id.
  3. Potvrďte změnu.

Experiment je omezen na pracovní prostor, takže stejné ID je platné pro každé nasazení CI směřující do daného pracovního prostoru. Pokud nasazujete do více pracovních prostorů, deklarujte v databricks.yml experiment pro každý cíl (jeden pro každý blok targets.<env>) nebo použijte proměnnou bundlu.

Udělení oprávnění Postgres pro šablony paměti Lakebase

Pokročilé šablony agentů (agent-langgraph-advanced, agent-openai-advanced) přímo v databricks.yml definují prostředek Lakebase Postgres s automatickým škálováním. S Rozhraním příkazového řádku Databricks v0.295.0 a novějším databricks bundle deploy zřídíte prostředek společně s aplikací.

Prostředek DAB postgres uděluje instančnímu objektu aplikace přístup k projektu Lakebase na úrovni pracovního prostoru, ale Lakebase udržuje samostatnou vrstvu role Postgres pro přístup k databázi (schémata, tabulky a sekvence). Instanční objekt služby potřebuje roli Postgres se správnými oprávněními předtím, než agent bude moct číst z jeho paměťových tabulek nebo do nich zapisovat. Viz Architektura ověřování pro dvouvrstvý model.

Udělení těchto oprávnění na úrovni Postgres je jednorázové nastavení. Spusťte ho místně mezi prvním bundle deploy a bundle run. CI se po tomto průchodu znovu nasadí standardní cestou deploy a poté run, protože role Postgres instančního objektu služby přetrvává po celou dobu životnosti aplikace.

  1. Nasaďte balíček za účelem zřízení prostředku Lakebase:

    databricks bundle deploy --target prod
    
  2. Udělte instančnímu objektu služby oprávnění na úrovni systému Postgres, která potřebuje:

    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>
    

    Pro šablonu LangGraph předejte --memory-type langgraph. Skript také přijímá --project <project> --branch <branch> pro automatické škálování Lakebase nebo --instance-name <name> pro zřízené Lakebase.

  3. Spusťte aplikaci:

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

Krok 3. Proveďte základní test nasazeného agenta

databricks bundle run se vrátí, jakmile runner dá agentovi signál ke spuštění, ale proces agenta může během spouštění stále selhat. Po kontrole stavu z kroku 5. Počkejte, až bude aplikace v pořádku, přidejte následující krok orientačního testu, do deploy.yml kterého publikuje kanárný požadavek na /invocations:

- 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 Apps přijímá pouze tokeny OAuth pro vyvolání. Použijte token OAuth pracovního prostoru z databricks auth token: Databricks Apps odmítají jakýkoli jiný typ tokenu.

Další zdroje informací