配置Bitbucket Pipelines时,如何让Stencil Push命令自动应答交互提示?
解决BigCommerce Stencil
stencil push 在Bitbucket Pipelines中的交互自动应答问题 我之前也遇到过CI/CD流程里命令行交互卡住的类似问题,给你几个实用的解决方案,按需选择就行:
方法1:用echo管道直接传递应答(最简单推荐)
因为你的两个交互问题都是固定应答,直接把答案按顺序通过管道传给stencil push就能搞定。命令如下:
echo -e "y\nLight" | stencil push
-e参数让echo识别换行符\n,保证两个答案分别对应两个问题- 第一个
y对应"是否应用到店铺"的确认 - 第二个
Light可以替换成你需要的变体(比如Bold或Warm)
这个方法不需要额外安装工具,适配大多数简单交互场景。
方法2:用expect脚本处理复杂交互(更灵活)
如果以后你的交互逻辑变复杂(比如需要根据不同输出做不同应答),可以用expect脚本实现更精细的控制:
先创建一个自动应答脚本stencil_push_auto.exp:
#!/usr/bin/expect -f # 设置超时时间,避免无响应时卡住 set timeout 30 # 启动stencil push命令 spawn stencil push # 匹配第一个确认问题,发送y应答 expect "是否要将主题应用到您的店铺http://xxxxxxx/?(y/N)" send "y\r" # 匹配变体选择问题,发送指定变体 expect "您想应用哪个变体?可选选项:Light、Bold、Warm。" send "Light\r" # 等待命令执行完成 expect eof
然后在Bitbucket Pipelines的步骤里这么使用:
# 给脚本添加执行权限 chmod +x stencil_push_auto.exp # 运行自动应答脚本 ./stencil_push_auto.exp
注意:如果你的Pipelines镜像里没有expect工具,需要先安装,基于Debian/Ubuntu的镜像可以加这一步:
apt-get update && apt-get install -y expect
额外提醒
在Pipelines里运行前,一定要确保已经正确配置了Stencil的认证环境变量(比如店铺API密钥、店铺URL等),不然stencil push可能会因为认证失败报错,这和交互问题是分开的哦。
内容的提问来源于stack exchange,提问作者rfvallina
相关产品推荐
相关产品推荐

