Validate and render documents offline before giving an automation job access to a deployment target. See Deploy a schema safely for dry runs and destructive-operation flags.

Consume structured results

GitHub Actions or another CI shell can consume the stable JSON envelope:

- name: Validate database schema
  shell: bash
  run: duburl schema validate schema.yaml --output-format json > schema-validation.json

Python can invoke the tool without a shell:

import json
import subprocess

completed = subprocess.run(
    ["duburl", "schema", "validate", "schema.yaml", "--output-format", "json"],
    check=True,
    capture_output=True,
    text=True,
)
result = json.loads(completed.stdout)

Use duburl capabilities --json to discover supported document versions, commands, renderable dialect aliases, active connectors, deployable schemes, and whether deployment is available. Rendering only requires a registered dialect; deployment additionally requires an installed connector containing the corresponding DubUrl module and ADO.NET driver.

Deployment in CI

Provide the target connection URL through the CI environment and select its variable name with --connection-env. Run a dry run first. Live deployment requires the corresponding connector to be installed and active; render-only jobs require only the dialect.

Persistent clients

For repeated operations without starting a process each time, use the JSON-RPC worker and its Python client example.