Releases: alexander-zierhut/agent-tool-drone-cli
Release list
v0.1.3
Add `report` command — where and how to file an issue, offline New top-level `<cmd> report` prints this tool's repo, a pre-filled GitHub issues/new link (running version inlined into the body) and a `gh issue create` one-liner. Like `guide` it needs no network, token or config. After `pipx install` there is no README or AGENTS.md beside the binary, so the tool must carry its own "report a problem" answer. Needs shared-cli>=0.1.4. Claude-Session: https://claude.ai/code/session_017feobGd32Ftk7p4X4JqDKC
v0.1.2
docs: unify README chrome + add LICENSE, bump 0.1.2 - add MIT LICENSE file (pyproject already declared MIT) - README: embed the CLI 'command surface' (--help), add the 'Part of the family' cross-link table, link LICENSE Part of the cross-repo agent-tool CLI doc standardization.
v0.1.1
chore: release v0.1.1 — pin the chassis fix, ship the pending commits Pins agent-tool-shared-cli >=0.1.2, which carries the `-o table` / `-o csv` / `-o markdown` columns fix. Drone's `deploy history`, `auth status` and `server version` all pass bare-string columns and therefore crashed under those formats on 0.1.0 (json was unaffected, so it went unnoticed). A fresh install already resolved the fix transitively; this makes the requirement explicit. Also folds in the two commits sitting on main since 0.1.0: the domain scrub (example.com, not a real hostname) and the release-workflow skip-existing fix. Claude-Session: https://claude.ai/code/session_017feobGd32Ftk7p4X4JqDKC
v0.1.0 — agent-ready Drone CI CLI
The first release of drone-cli — a Drone CI client built to be driven by an AI agent.
This is not the official drone binary. Both coexist: drone is the official Go client; drone-cli is this tool. The name drone is deliberately not claimed.
pipx install agent-tool-drone-cli
drone-cli auth login # asks for your server, then shows you where to get a token
drone-cli guide # the whole playbook, offline, no config neededWhy it exists
Drone's API refuses to answer the questions you actually have. This CLI derives them.
Address builds by commit, not number. Build numbers are racy — if a colleague pushes while you do, "the latest build" may be theirs, and you'd report their failure as yours. You already know your SHA:
drone-cli wait --commit HEAD # did MY push pass?
drone-cli wait --commit HEAD --exit-code && ./deploy.shIt distinguishes three outcomes an agent must never conflate: finished (outcome in the JSON), blocked (a human must approve — it tells you the command), and never appeared (exit 10 — the webhook may be broken, which is not "the tests are red").
log failed — just the failing step. Otherwise: GET the build → walk stages[] → know that stage/step are 1-based ordinals (not names, not ids) → GET that step's logs → strip the {pos,out,time} envelope. Four calls, three pieces of tribal knowledge, and an unbounded wall of apt-get noise.
Deployment questions the UI can't answer:
drone-cli deploy status # which commit is on prod RIGHT NOW
drone-cli deploy of --commit HEAD # has my commit shipped, and is it still live?
drone-cli promote --commit HEAD # --to defaults to prod (configurable)"On prod" means the newest successful promote — a failed promote deployed nothing, and reporting its commit as live would be the most dangerous wrong answer this tool could give.
Verified gotchas it protects you from
Every one of these was confirmed against a real Drone + Forgejo + runner stack, and several contradict the official docs:
- Cron is seconds-first.
"0 3 * * *"parses fine and fires every hour at :03, not daily at 3am. Silent, 24× wrong. Usecron add --at "3am daily". build.linkis not a commit link — it's a compare URL for pushes and an API URL for API-triggered builds.--linksderives a real one.- Secret values can never be read back. By design. A
getreturning only a name is success, not failure. - A 500 saying "Unauthorized" means the server's link to your git provider is broken — not your token.
server doctorsays so in plain words. restartmints a new build number.GET /api/versiondoesn't exist (it's/version). Org secrets live at/api/secrets/{namespace}.
The contract
JSON on stdout, JSON errors on stderr, stable exit codes (0 ok · 4 auth · 5 not-found · 8 not-implemented · 9 wait timed out · 10 no build for that commit). --dry-run previews any write. --fields/--stream for token thrift. drone-cli install claude registers a Claude Code skill.
Full API coverage: builds, repos, secrets, org secrets, crons, templates, users, logs, deployments — 18 groups, 76 commands.
Install
pipx install agent-tool-drone-cli # or pipOr grab a self-contained binary below (no Python needed).
Built on agent-tool-shared-cli. 501 hermetic tests — pip install -e '.[test]' && pytest needs no server, no Docker, no token.