Consolidate the redmine-cli source into tooling-cli/redmine/
(CLI source, Dockerfile, README, AGENTS.md) with all documentation
rewritten to invoke the container via raw docker run and credentials
from the centralized ~/.creds/redmine.env store. No bin/ wrapper, no
system-dependent paths in the docs.
Removes the old redmine-cli/ subdirectory, updates the
KNELCredsManager consumer table, and updates STATUS.md + AGENTS.md
to reference the new location and registry image.
💘 Generated with Crush
Assisted-by: Crush:glm-5.2
103 lines
3.9 KiB
Markdown
103 lines
3.9 KiB
Markdown
# redmine-cli
|
|
|
|
A Docker container that lets an AI agent (or a human) access, edit, and close
|
|
Redmine issues through the Redmine REST API. Built on the
|
|
[`python-redmine`](https://python-redmine.com) library with a small command-line
|
|
wrapper.
|
|
|
|
## Requirements
|
|
|
|
- Docker on the host.
|
|
- A Redmine instance with REST web services enabled
|
|
(Administration → Settings → API → Enable REST API).
|
|
- A Redmine API key for the user the agent will act as
|
|
(My account → API access key → Show / Reset).
|
|
|
|
## Configuration
|
|
|
|
Credentials live in the **centralized credential store** at
|
|
`~/.creds/redmine.env` (see `tooling-cli/KNELCredsManager`). It holds:
|
|
|
|
```
|
|
REDMINE_URL=https://your-redmine.example.com
|
|
REDMINE_API_KEY=abc123...
|
|
```
|
|
|
|
Use `.env.example` in this directory as a template if you need to create one.
|
|
Permissions: directory `700`, the env file `600` (owner read/write only).
|
|
|
|
## Build
|
|
|
|
```bash
|
|
docker build -t kneldevstack-aimiddleware-redmine-cli:latest .
|
|
```
|
|
|
|
A prebuilt image is also available in the Gitea registry:
|
|
|
|
```
|
|
git.knownelement.com/reachableceo/redmine-cli:latest
|
|
```
|
|
|
|
## Usage
|
|
|
|
Invoke the container directly with `docker run`. Pass credentials from the
|
|
centralized store via `--env-file`:
|
|
|
|
```bash
|
|
docker run --rm --env-file ~/.creds/redmine.env \
|
|
git.knownelement.com/reachableceo/redmine-cli:latest whoami
|
|
|
|
docker run --rm --env-file ~/.creds/redmine.env \
|
|
git.knownelement.com/reachableceo/redmine-cli:latest list --assigned-to-me
|
|
|
|
docker run --rm --env-file ~/.creds/redmine.env \
|
|
git.knownelement.com/reachableceo/redmine-cli:latest show 123
|
|
|
|
docker run --rm --env-file ~/.creds/redmine.env \
|
|
git.knownelement.com/reachableceo/redmine-cli:latest close 123 --notes "work complete"
|
|
```
|
|
|
|
To use a locally built image instead of the registry image, either set
|
|
`REDMINE_CLI_IMAGE` or swap the image tag for `kneldevstack-aimiddleware-redmine-cli:latest`.
|
|
|
|
## Commands
|
|
|
|
| Command | Description |
|
|
| -------------------------------- | ------------------------------------------------------ |
|
|
| `whoami` | Show the authenticated user (also a connection test). |
|
|
| `projects` | List projects (id, identifier, name). |
|
|
| `statuses` | List issue statuses and which are "closed". |
|
|
| `list` (`ls`) | List issues. Filters below. |
|
|
| `show <id>` | Show full issue detail incl. note history. |
|
|
| `create` | Create an issue (`--project`, `--subject`, ...). |
|
|
| `update <id>` | Update an issue (status, notes, assignee, done, ...). |
|
|
| `close <id>` | Close an issue (first closed status, done ratio 100%). |
|
|
|
|
### `list` filters
|
|
|
|
- `-m, --assigned-to-me` — only issues assigned to the current user
|
|
- `-a, --assigned-to <id>` — filter by assignee user id
|
|
- `-p, --project <id|identifier>` — filter by project
|
|
- `-s, --status <name|id|open|closed>` — filter by status
|
|
- `-l, --limit <n>` — max results (default 50)
|
|
- `--sort <spec>` — Redmine sort spec
|
|
(default `priority:desc,updated_on:desc`)
|
|
|
|
### `update` / `create` options
|
|
|
|
- `--status <name|id>` — status name (case-insensitive) or numeric id
|
|
- `-n, --notes <text>` — add a journal note
|
|
- `-a, --assigned-to <id>` — assignee user id
|
|
- `--done-ratio <0-100>` — percent complete
|
|
- `--subject <text>` — change the subject (`update`/`create`)
|
|
- `--priority <id>` — priority id
|
|
- `-d, --description <text>` — description (`create` only)
|
|
- `-t, --tracker <id>` — tracker id (`create` only)
|
|
|
|
## Environment variables
|
|
|
|
| Variable | Required | Description |
|
|
| ----------------- | -------- | ------------------------------------ |
|
|
| `REDMINE_URL` | yes | Base URL of the Redmine instance. |
|
|
| `REDMINE_API_KEY` | yes | API key of the acting user. |
|