Jenkins pipeline执行aws elasticbeanstalk相关eb.sh脚本无输出如何排查
问题排查与解决方法
- 补充脚本输出逻辑
你当前提供的eb.sh仅将AWS查询结果赋值给了envstaus变量,没有任何打印输出的逻辑。你手动执行时大概率是额外执行了打印变量的操作才看到结果,Jenkins调用脚本时不会自动输出变量值,需要在eb.sh末尾添加echo $envstaus才能输出查询结果。 - 校验Jenkins运行环境的AWS凭证配置
你手动执行脚本时使用的用户已经完成了AWS CLI的凭证配置,而Jenkins任务默认以jenkins系统用户执行,该用户家目录下不存在.aws/credentials凭证配置文件,会导致aws命令执行失败无返回。你可以在pipeline的sh块中添加whoami和aws configure list命令验证用户和凭证配置情况。 - 修正脚本调用写法
你在pipeline的sh代码块中嵌套使用sh /var/lib/jenkins/devops-scripts/eb.sh属于冗余写法,直接写脚本绝对路径/var/lib/jenkins/devops-scripts/eb.sh即可执行。 - 开启执行日志排查隐藏报错
你可以在sh块开头添加set -x开启调试模式,同时将aws命令的错误输出重定向到标准输出,方便查看是否有权限、参数类报错,修改参考如下:
pipeline sh块修改示例:
sh''' set -x echo "Hello" /var/lib/jenkins/devops-scripts/eb.sh echo "End" '''
eb.sh修改示例:
envstaus=$(aws elasticbeanstalk describe-environments \ --environment-names test-environment \ --query 'Environments[*].[Health]' --output text 2>&1) echo $envstaus
内容的提问来源于stack exchange,提问作者pulkit
相关产品推荐
相关产品推荐

