logo
0
0
WeChat Login
chunlinle<chunlinle@tencent.com>
docs: 更新仓库克隆地址

tapd-cli

TAPD OpenAPI 命令行工具,将 TAPD 平台的全量 OpenAPI 封装为 tapd-cli 命令,适用于终端脚本、自动化管线和 AI Agent(NPC Bot)调用。

功能覆盖

实体支持操作
storyadd / list / update / count / fields / related-bugs / link
bugadd / list / update / count / fields / link-tcase
taskadd / list / update / count
commentadd / list / count
iterationlist
wikiadd / list / update / count
tcaseadd / batch-add / list / update / count / fields / categories / add-category / execute / assign / result / link-plan / remove-from-plan / unlink-story / count-by-category / category-count / custom-fields / story-by-tcase
testplanadd / list / update / count / details / progress / tcases / bugs / stories / link-story / unlink-story / by-iteration / fields
timesheetadd / list / update / count
attachmentlist / by-entity / download / upload / upload-image / upload-image-base64 / get-image
documentdownload
userinfo / workspaces

安装

# 克隆仓库 git clone https://cnb.cool/tapd.cn/skills/tapd-cli cd tapd-cli # 安装依赖 npm install

环境变量

使用前需配置以下环境变量:

变量必填说明
TAPD_API_ENDPOINTTAPD API 端点,如 https://api.tapd.cn
TAPD_TOKENBearer Token,从 TAPD 开放平台获取
TAPD_WORKSPACE_IDS建议项目 ID,逗号分隔多个,第一个为默认值
TAPD_NPC_ROLENPC 登录名,作为默认 author/creator
TAPD_SITE_URLTAPD 前端域名,用于拼接实体链接
TAPD_COMPANY_ID公司 ID
TAPD_USER_NAME触发操作的用户名
TAPD_CONTEXT当前上下文链接或描述
TAPD_ENTRY_TYPE当前实体类型(如 storiesbugtasks
TAPD_ENTRY_ID当前实体 ID
TAPD_COMMENT_ID触发评论 ID
TAPD_COMMENT_ROOT_ID根评论 ID(用于回复时定位根楼层)
TAPD_COMMENT_LOCATION评论来源位置标识
TAPD_NPC_QUERYNPC 收到的原始用户输入
TAPD_CLI_LOG日志模式:1/text(文本)、json(JSON)、silent(关闭,默认)
export TAPD_API_ENDPOINT=https://api.tapd.cn export TAPD_TOKEN=your_token_here export TAPD_WORKSPACE_IDS=12345678

使用

直接运行(无需编译)

npx tsx src/index.ts <entity> <subcommand> [key=value ...] # 或添加别名 alias tapd-cli="npx tsx /path/to/tapd-cli/src/index.ts"

参数格式

所有参数使用 key=value 格式传入,workspaceid 可省略(自动读取 TAPD_WORKSPACE_IDS 第一个值)。

示例

# 查询需求列表 tapd-cli story list workspaceid=12345678 v_status=规划中 limit=20 # 创建需求 tapd-cli story add workspaceid=12345678 name="新功能需求" priority_label=High owner=user1 # 更新需求状态 tapd-cli story update workspaceid=12345678 id=1149629175001000001 status=developing # 查询缺陷 tapd-cli bug list workspaceid=12345678 status=new severity=fatal # 创建缺陷 tapd-cli bug add workspaceid=12345678 title="登录页崩溃" severity=serious current_owner=user1 # 添加评论 tapd-cli comment add workspaceid=12345678 entry_type=stories entry_id=1149629175001000001 description="已处理" # 批量创建测试用例 tapd-cli tcase batch-add workspaceid=12345678 names="用例1,用例2,用例3" category_id=456 # 上传附件 tapd-cli attachment upload workspaceid=12345678 type=bug entry-id=789 file=/tmp/screenshot.png # 查询工时 tapd-cli timesheet list workspaceid=12345678 owner=user1

查看帮助

# 查看所有实体 tapd-cli --help # 查看某实体的子命令 tapd-cli story --help tapd-cli tcase --help # 查看子命令详细参数 tapd-cli story add --help

构建

构建 bundle(必须)

修改 src/ 下的源码后,必须重新构建并将产物一起提交,否则 skill 实际运行的仍是旧版本:

npm run build:bundle # 产出:skills/tapd-cli/scripts/tapd-cli.cjs

提交时需同时包含源码和产物:

git add src/ skills/tapd-cli/scripts/tapd-cli.cjs git commit -m "feat: ..."

pre-push hook 会在每次 push 前自动执行构建,并在产物有未提交变更时阻止 push。

构建独立二进制(可选)

使用 Node.js SEA(Single Executable Application)打包为无需安装 Node.js 的独立二进制:

npm run build # 产出:dist/tapd-cli-bin

技术栈

  • 语言:TypeScript 5.3
  • 运行时:Node.js v18+(使用内置 fetch,无需额外 HTTP 库)
  • CLI 框架commander v11
  • 开发运行tsx(无需预编译直接运行 TS)
  • 打包:esbuild + Node.js SEA

description 字段说明

所有 description 参数支持纯文本输入,工具会自动包裹为 HTML(<p>内容</p>)。如需传入已有 HTML 则直接传入,不会二次处理。