---
id: gh-redmine-cli
name: "redmine-cli"
url: https://skills.yangsir.net/skill/gh-redmine-cli
author: diskd-ai
domain: automation
tags: ["redmine", "cli", "issue-tracking", "project-management", "automation"]
install_count: 1
rating: 4.00 (20 reviews)
github: https://github.com/diskd-ai/redmine-cli
---

# redmine-cli

> 通过Redmine REST API自动化管理Redmine问题和工单，实现终端快速创建、编辑与查看，提高效率。

**Stats**: 1 installs · 4.0/5 (20 reviews)

## Before / After 对比

### Redmine 问题管理效率

**Before**:

在网页界面中手动点击、填写表单来创建、查看和更新 Redmine 问题，操作流程繁琐，尤其在需要批量处理或快速查询时效率低下。

**After**:

通过命令行工具，用户可以直接在终端快速执行 Redmine 操作，如创建、编辑、评论问题，实现自动化脚本，显著提升问题管理和日常工作效率。

| Metric | Before | After | Change |
|---|---|---|---|
| 效率 | 0 | 0 | 0% |

## Readme

# Redmine CLI

Use the bundled `scripts/redmine_cli.py` (no external dependencies) to interact with Redmine from the terminal. It reads auth/config from `~/.red/config.json` (and optionally `./.red/config.json` as an override).

## Quick start

1. Create a Redmine API key (Redmine UI: *My account* -> *API access key*).
2. Create `~/.red/config.json` (v1 / single-instance format):

```json
{
  "api-key": "YOUR_API_KEY",
  "editor": "",
  "pager": "",
  "project": "",
  "project-id": 0,
  "server": "https://redmine.example.com",
  "user-id": 0
}
```

3. Verify connectivity:

```bash
python scripts/redmine_cli.py project list --json | head
```

## Multi-instance (`--rid`) (optional)

If your `~/.red/config.json` uses a v2 / multi-server structure (like the reference `red-cli`), select a server with `--rid`:

```bash
python scripts/redmine_cli.py issue list --rid prod
python scripts/redmine_cli.py issue list --rid 1
```

## Common tasks

List projects (default output is TSV; use `--json` for automation):

```bash
python scripts/redmine_cli.py project list
python scripts/redmine_cli.py project list --json
```

List issues (uses `project-id` from config unless `--all` or `issue list all`):

```bash
python scripts/redmine_cli.py issue list
python scripts/redmine_cli.py issue list --json --limit 10 --page 1
python scripts/redmine_cli.py issue list --query "login fails" --status_id 1 --sort priority
python scripts/redmine_cli.py issue list --issue-urls
python scripts/redmine_cli.py issue list --project   # include project column in output
```

List available projects, trackers, statuses, and priorities (useful before creating issues):

```bash
python scripts/redmine_cli.py issue meta
```

Create an issue (defaults to "Task" tracker; use `--tracker` to override by name):

```bash
python scripts/redmine_cli.py issue create --project-id 1 --subject "New feature request" --json
python scripts/redmine_cli.py issue create --subject "Bug fix" --description "Details here" --json
python scripts/redmine_cli.py issue create --subject "Subtask" --parent-id 123 --json
python scripts/redmine_cli.py issue create --subject "A bug" --tracker Bug --priority-id 3 --json
```

Get an issue:

```bash
python scripts/redmine_cli.py issue view 12345
python scripts/redmine_cli.py issue view 12345 --journals
```

List all issues across projects:

```bash
python scripts/redmine_cli.py issue list all
python scripts/redmine_cli.py issue list --all
```

List only issues assigned to the current user:

```bash
python scripts/redmine_cli.py issue list me
```

Add a journal note to an issue:

```bash
python scripts/redmine_cli.py issue note 12345 -m "Fixed in commit abc123"
python scripts/redmine_cli.py issue note 12345 -m "Customer-visible" --private
python scripts/redmine_cli.py issue note 12345 --message-file ./notes.md
python scripts/redmine_cli.py issue note 12345 --message-file - < ./notes.md
```

Edit issue fields (subject, description, status, priority, tracker, parent, assigned-to):

```bash
python scripts/redmine_cli.py issue edit 12345 --description "New description"
python scripts/redmine_cli.py issue edit 12345 --description-file ./description.md
python scripts/redmine_cli.py issue edit 12345 --subject "Renamed" --status-id 2
python scripts/redmine_cli.py issue edit 12345 --parent-id 100       # make it a subtask
python scripts/redmine_cli.py issue edit 12345 --assigned-to-id 5 --priority-id 3
```

Manage issue relations (relates, blocks, duplicates, precedes, follows):

```bash
python scripts/redmine_cli.py issue relate add 12345 67890                    # relates (default)
python scripts/redmine_cli.py issue relate add 12345 67890 --type blocks      # 12345 blocks 67890
python scripts/redmine_cli.py issue relate list 12345                          # list relations
python scripts/redmine_cli.py issue relate list 12345 --json
python scripts/redmine_cli.py issue relate remove 42                           # delete by relation id
```

Update/remove an existing comment (journal):

1. Find the journal id in `issue view --journals` output: `issue.journals[].id`
2. Update or remove:

```bash
python scripts/redmine_cli.py issue comment update 5993 -m "Updated comment text"
python scripts/redmine_cli.py issue comment update 5993 --message-file ./comment.md
python scripts/redmine_cli.py issue comment remove 5993
```

Show current user info:

```bash
python scripts/redmine_cli.py user me
```

## Troubleshooting

- `HTTP 401/403`: API key missing/invalid, REST API disabled, or insufficient permissions.
- `HTTP 404`: wrong base URL (ensure it is the Redmine root, not a sub-path like `/projects`).
- Config not found: ensure `~/.red/config.json` exists and is valid JSON.

## References

- Redmine REST API notes (endpoints, payloads, filters): `references/rest-api.md`

---
*Source: https://skills.yangsir.net/skill/gh-redmine-cli*
*Markdown mirror: https://skills.yangsir.net/api/skill/gh-redmine-cli/markdown*