Skip to Content
We are live but in Staging 🎉
WorkflowsWorkflow: Author, Test, and Publish an App

Workflow: Author, Test, and Publish an App

Last validated: 2026-05-20

Goal

Create a tenant app, iterate in draft, publish a version, and validate invocation.

Inputs

  • Org ID or org name
  • Valid token
  • API endpoint
  • App source code

Python Path (CLI-first)

export ORG=my-org # 1) Create app metadata dodil ignite app create hello --org "$ORG" --description "hello app" # 2) Save draft code dodil ignite draft save "$ORG:hello" --code ./hello.py --runtime python # 3) Test draft dodil ignite draft test "$ORG:hello" --payload '{"name":"world"}' # 4) Publish dodil ignite draft publish "$ORG:hello" # 5) Invoke published app dodil ignite invoke "$ORG:hello" --payload '{"name":"world"}'

Rust Path (CLI-first)

export ORG=my-org dodil ignite app create hello-rs --org "$ORG" dodil ignite draft save "$ORG:hello-rs" --code ./src --runtime rust --rust-target native dodil ignite draft compile "$ORG:hello-rs" --follow dodil ignite draft test "$ORG:hello-rs" --payload '{"name":"world"}' dodil ignite draft publish "$ORG:hello-rs" dodil ignite invoke "$ORG:hello-rs" --payload '{"name":"world"}'

Expected Outcomes

  • App exists and returns published invocation output
  • Version list shows at least one published version
  • App state indicates deployed/servable lifecycle posture

Troubleshooting

  1. If compile fails, run dodil ignite draft compile-logs <id> and inspect build/compile output.
  2. If publish succeeds but invoke fails, check app state and retry after readiness stabilization.
  3. If org resolution fails, pass explicit org:app format instead of relying on config fallback.