如何忽略CodeDeploy钩子中的错误?Node应用部署遇进程未找到问题
解决AppSpec BeforeInstall钩子中
killall node的错误问题 方案一:修改脚本强制返回成功码
当目标服务器上没有Node进程时,killall node会返回错误码1,直接导致部署中断。可以通过以下两种方式修改脚本,让其始终返回成功状态:
方式1:强制忽略错误
在命令后追加|| true,即使killall执行失败,整个命令也会返回成功码0,同时保留错误输出屏蔽:
killall node 2>/dev/null || true
方式2:先检查进程再执行
更严谨的做法是先判断是否存在Node进程,仅当进程存在时才执行kill操作:
if pgrep node > /dev/null; then killall node fi
方案二:在AppSpec配置中忽略钩子错误
AWS CodeDeploy支持在钩子配置里添加ignoreErrors: true,直接忽略该脚本的所有错误返回,即使脚本执行返回非0码,部署流程也会继续推进:
BeforeInstall: - location: deploy/killallnode.sh timeout: 30 runas: root ignoreErrors: true
注意:此配置会忽略该脚本的所有错误(包括权限不足等真实执行失败场景),若需要区分“无进程”和“真实错误”,优先选择方案一。
内容的提问来源于stack exchange,提问作者Yossi G.
相关产品推荐
相关产品推荐

