Jira CLI 是一个通过命令行与 Atlassian Jira 交互的工具,使用 jira-cli 在终端中完成常见的 Jira 操作。
【何时使用】 当用户需要创建、查看、编辑或搜索 Jira 问题(issue/工单);需要通过工作流状态流转问题(例如 To Do → In Progress → Done);需要管理冲刺、史诗或看板;需要分配问题、添加评论或记录工时;或需要查看自己当前的任务与冲刺进度时,都可以使用该工具。
【前置条件】
- 安装 jira-cli:macOS 可运行 brew install ankitpokhrel/jira-cli/jira-cli,或从 releases 页面下载。
- 设置 API token:export JIRA_API_TOKEN="your-token"
- 初始化:运行 jira init 并按照提示操作。
【问题(Issue)命令】 列出问题:
- 列出当前项目的问题:jira issue list
- 列出分配给我的问题:jira issue list -a$(jira me)
- 按状态列出:jira issue list -s"In Progress"
- 列出高优先级问题:jira issue list -yHigh
- 组合多个过滤条件:jira issue list -a$(jira me) -s"To Do" -yHigh --created week
- 使用原始 JQL 查询:jira issue list -q "project = PROJ AND status = 'In Progress'"
- 便于脚本处理的纯文本输出:jira issue list --plain --columns key,summary,status --no-headers
创建问题:
- 交互式创建:jira issue create
- 指定全部选项创建:jira issue create -tBug -s"Login button not working" -b"Description here" -yHigh --no-input
- 创建 Story:jira issue create -tStory -s"Add user authentication" -yMedium
- 带标签与组件创建:jira issue create -tTask -s"Update dependencies" -lmaintenance -l"tech-debt" -Cbackend
- 创建并分配给自己:jira issue create -tBug -s"Fix crash on startup" -a$(jira me) --no-input
查看问题:
- 查看问题详情:jira issue view ISSUE-123
- 查看并显示评论:jira issue view ISSUE-123 --comments 10
- 纯文本查看:jira issue view ISSUE-123 --plain
- 在浏览器中打开问题:jira open ISSUE-123
编辑问题:
- 编辑摘要:jira issue edit ISSUE-123 -s"Updated summary"
- 编辑描述:jira issue edit ISSUE-123 -b"New description"
- 编辑优先级:jira issue edit ISSUE-123 -yHigh
- 添加标签:jira issue edit ISSUE-123 -lnew-label
流转问题:
- 移动到新状态:jira issue move ISSUE-123 "In Progress"
- 移动并添加评论:jira issue move ISSUE-123 "Done" --comment "Completed the task"
- 移动并设置解决方案:jira issue move ISSUE-123 "Done" -RFixed
分配问题:
- 分配给自己:jira issue assign ISSUE-123 $(jira me)
- 分配给指定用户:jira issue assign ISSUE-123 username
- 取消分配:jira issue assign ISSUE-123 x
评论:
- 添加评论:jira issue comment add ISSUE-123 "This is my comment"
- 从编辑器添加评论:jira issue comment add ISSUE-123
工时记录:
- 记录工时:jira issue worklog add ISSUE-123 "2h 30m"
- 记录工时并添加评论:jira issue worklog add ISSUE-123 "1d 4h" --comment "Completed feature implementation" --no-input
关联与克隆问题:
- 关联两个问题:jira issue link ISSUE-123 ISSUE-456 Blocks
- 取消关联:jira issue unlink ISSUE-123 ISSUE-456
- 克隆问题:jira issue clone ISSUE-123 -s"Cloned: New summary"
- 删除问题:jira issue delete ISSUE-123
【史诗(Epic)命令】
- 列出史诗:jira epic list
- 以表格格式列出史诗:jira epic list --table
- 创建史诗:jira epic create -n"Q1 Features" -s"Epic summary" -b"Epic description"
- 将问题加入史诗:jira epic add EPIC-1 ISSUE-123 ISSUE-456
- 从史诗移除问题:jira epic remove ISSUE-123 ISSUE-456
【冲刺(Sprint)命令】
- 列出冲刺:jira sprint list
- 列出当前/活动冲刺:jira sprint list --current
- 列出当前冲刺中我的问题:jira sprint list --current -a$(jira me)
- 将问题加入冲刺:jira sprint add SPRINT_ID ISSUE-123 ISSUE-456
【项目与看板命令】
- 列出项目:jira project list
- 列出看板:jira board list
- 列出发布/版本:jira release list
- 在浏览器中打开项目:jira open
【实用命令】
- 获取当前用户名:jira me
- 查看帮助:jira --help、jira issue --help
- 设置 shell 补全:jira completion bash(也支持 zsh、fish、powershell)
【常用标志】 --plain:纯文本输出(无交互界面);--raw:原始 JSON 输出;--csv:CSV 输出;--no-input:跳过交互提示;-t, --type:问题类型(Bug、Story、Task、Epic);-s, --summary:问题摘要/标题;-b, --body:问题描述;-y, --priority:优先级(Highest、High、Medium、Low、Lowest);-l, --label:标签(可重复);-a, --assignee:经办人用户名;-r, --reporter:报告人用户名;-C, --component:组件名称;-P, --parent:父问题/史诗键;-q, --jql:原始 JQL 查询;--created:按创建日期过滤(-7d、week、month);--order-by:排序字段;--reverse:反向排序。
【常见工作流】 开始处理某个问题:
- 分配给自己并移动到 In Progress:jira issue assign ISSUE-123 $(jira me);jira issue move ISSUE-123 "In Progress"
完成某个问题:
- 记录工时并关闭:jira issue worklog add ISSUE-123 "4h" --no-input;jira issue move ISSUE-123 "Done" --comment "Completed" -RFixed
每日站会回顾:
- 查看当前冲刺任务:jira sprint list --current -a$(jira me)
创建并跟踪 Bug:
- 创建 Bug:jira issue create -tBug -s"App crashes on login" -yHigh -lbug --no-input
- 记下返回的问题键,然后分配:jira issue assign BUG-123 $(jira me);jira issue move BUG-123 "In Progress"
【输出示例场景】
- jira issue list --plain:适合脚本的输出
- jira issue list --raw:便于解析的 JSON
- jira issue list --csv:导出到电子表格
【限制】
- 需要事先完成 jira init 配置。
- Jira Cloud 与 Server 之间某些功能可能存在差异。
- 复杂的自定义字段可能需要使用 --custom 标志并指定字段 ID。
- 实际使用受 Jira 实例配置的速率限制影响。