使用jq --arg结合模板JSON时进程挂起,求排查指导
问题分析与修复方案
1. 进程挂起的核心原因
你的jq命令缺少-n(或--null-input)参数。jq默认会从标准输入读取JSON数据进行处理,但你的场景是直接通过模板生成JSON,不需要处理输入数据。缺少这个参数时,jq会一直等待标准输入,导致进程挂起。
2. 命令修正
在原有命令开头添加-n参数,同时针对TEST_CASES(数字类型)改用--argjson传递,避免生成字符串类型的值:
jq -n --arg SUMMARY "Summary" --arg BUILD_ID "BUILD_ID" --arg BUILD_URL "BUILD_URL" --arg DURATION "DURATION" --arg USER_EMAIL "EMAIL" --arg USER_NAME "USER" --argjson TEST_CASES 3 --arg PX_VERSION "VERSION" --arg PX_BACKUP_VERSION "PX_VERSION" --arg STORK_IMAGE "IMAGE_STORK" --arg K8S_VERSION "1.23.0" --arg GITHUB_BRANCH "branch" --arg GITHUB_REPO "repo" --arg KIBANA_URL "url" -f template.jq
3. 模板的潜在问题检查
你的template.jq整体是合法的jq对象构造脚本,但需要注意:
- 所有通过
--arg传递的变量都是字符串类型,如果需要数字/布尔值等非字符串类型,必须用--argjson传递 - 模板中像
$GITHUB_REPO这类直接作为mrkdwn文本的变量,确保传递的值符合对应平台的语法要求,避免生成无效格式
内容的提问来源于stack exchange,提问作者Sumit Das
相关产品推荐
相关产品推荐

