go构建脚本ansible分发时出现的问题总结“non-zero return code”
背景介绍:
在Jenkins服务器配置go项目发布脚本,编译完成后,使用ansible分发到部署服务器上,然后将启动项目脚本start_coachcore.sh发布到目标服务器上,执行启动,目标服务器上另有监控项目运行的脚本。
脚本的名字如下;
deploy_coachcore.sh
.......省去100行....
#分发启动脚本到远程服务器
/usr/local/bin/ansible ${ansible_host} -m shell -a "mkdir -p /data/shell"
/usr/local/bin/ansible ${ansible_host} -m copy -a "src=/data/shell/go/dev/${binpath} mode=755 dest=/data/shell"
/usr/local/bin/ansible ${ansible_host} -m shell -a "/bin/bash /data/shell/${binpath}/${start_script}"
.........
start_coachcore.sh /*
#!/bin/bash
proj=coach_core
mv /data/${proj}/news/${proj} /data/${proj}/
mv /data/${proj}/news/conf/* /data/${proj}/conf/
chmod a+x /data/${proj}/${proj}
pid=`ps -ef|egrep -v 'grep'|egrep "${proj}"| awk -F '[ ]+' '{ print $2 }'`
#查询进程
ps aux | egrep -v "grep | /bin/sh" | grep /data/${proj}/${proj}
if [ $? -eq 0 ]; then
kill -USR2 $pid
else
nohup /data/${proj}/${proj} &
fi
*/
上面脚本拿出来到目标服务器上执行,每一步都没有任何问题,但是通过ansible执行就会报下面的错误。
by setting deprecation_warnings=False in ansible.cfg.
172.168.109.89 | FAILED | rc=-12 >>
root 14602 0.2 0.4 1093812 35572 ? Sl 00:55 2:09 /data/user-zeus/user-zeusnon-zero return code
Build step 'Execute shell' marked build as failure
Finished: FAILURE
尝试:在脚本的每一步加上echo 或者执行结果,pid=`ps -ef|egrep -v 'grep'|egrep "${proj}"| awk -F '[ ]+' '{ print $2 }'` 查看到4个进程号。
解决思路:
由于发布脚本和执行脚本也是一个进程,所以在脚本查询进程的那一步会查询出不止一个进程号,于是脚本进行了下面改进
pid=`ps -ef|grep "$proj"|egrep -v "grep|monitor|deploy|start"|awk -F '[ ]+' '{ print $2 }'`
go构建脚本ansible分发时出现的问题总结“non-zero return code”的更多相关文章
- 约定Jenkins构建脚本
对于Jenkins的使用,我感觉只用到其中一小部分功能,但也就是这一小部分功能,也推动了整个CI/CD的过程,Jenkins的使用方式有很多中,可能我用到的只是其中一种,但是已经满足我的需求,便不再贪 ...
- Gradle 1.12 翻译——第十三章 编写构建脚本
有关其它已翻译的章节请关注Github上的项目:https://github.com/msdx/gradledoc/tree/1.12,或訪问:http://gradledoc.qiniudn.com ...
- 构建现代Web应用时究竟是选择传统web应用还是SPA
在大前端盛行的今天,似乎前后端分离的开发模式才是大势所趋,而SPA的概念更是应运而生.现在随便构建一个web应用程序如果你不是使用SPA的话,就会感觉有点low,但是真的是这样吗?今天这篇文章我们就来 ...
- [原]Jenkins(八)---jenkins构建项目报错时发送错误报告邮件
/** * lihaibo * 文章内容都是根据自己工作情况实践得出. * 版权声明:本博客欢迎转发,但请保留原作者信息! http://www.cnblogs.com/horizonli/p/533 ...
- ansible分发密钥
http://www.361way.com/ansible-cfg/4401.html 修改host_key_checking(默认是check的):改为false, host_key_ch ...
- ssh密钥分发之二:使用sshpass配合ssh-kopy-id编写脚本批量分发密钥:
使用sshpass配合ssh-kopy-id编写脚本批量分发密钥: 首先sshpass是一个ssh连接时的免交互工具,首先要安装一下: yum install sshpass -y 接下来我们就可以使 ...
- Gradle:构建脚本概要
一.构建块 1.每一个构建块都包括三个基本构建块:project.task和property: 2.每一个构建块包括至少一个project,进而又包括一个或多个task: 3.project和task ...
- SqlServer 使用脚本创建分发服务及事务复制的可更新订阅
原文:SqlServer 使用脚本创建分发服务及事务复制的可更新订阅 [创建使用本地分发服务器] /************************[使用本地分发服务器配置发布]*********** ...
- 【转载】Gradle学习 第六章:构建脚本基础
转载地址:http://ask.android-studio.org/?/article/11 6.1. Projects and tasks 项目和任务Everything in Gradle si ...
随机推荐
- ES6中Class的用法及在微信小程序中的应用实例
1.ES6的基本用法 ES6 提供了更接近传统语言的写法,引入了 Class(类)这个概念,作为对象的模板.通过class关键字,可以定义类.基本上,ES6 的class可以看作只是一个语法糖,它的绝 ...
- elasticsearch failed to obtain node locks
0x00 事件 重启服务器后,启动 elasticsearch 失败,在日志中观察到以下错误: [2019-10-25T17:29:54,639][WARN ][o.e.b.Elasticsearch ...
- Android 查看项目依赖树的四种方式
Android 查看项目依赖树的四种方式: 方式一: ./gradlew 模块名:dependencies //查看单独模块的依赖 ./gradlew :app:dependencies --conf ...
- oracle表空间设置自动扩展
开启自动扩展功能语法: alter database datafile '对应的数据文件路径信息' autoextend on; 关闭自动扩展功能语法: alter database datafile ...
- Linux自动同步时间
一.安装时间同步工具 yum -y install ntp 二.同步时间 1.修改时区 cp -y /usr/share/zoneinfo/Asia/Shanghai /etc/localtime v ...
- TensorFlow从1到2(十三)图片风格迁移
风格迁移 <从锅炉工到AI专家(8)>中我们介绍了一个"图片风格迁移"的例子.因为所引用的作品中使用了TensorFlow 1.x的代码,算法也相对复杂,所以文中没有仔 ...
- jt格式文件与3D数据压缩
介绍 JT是西门子公司推出的PLM通用三维格式,设计为一个开放.高效率的.紧凑,持久性存储的产品数据格式,用于产品可视化.协作和CAD数据共享.JT文件格式包括多方面的数据,以及对曲面边的精准表示,产 ...
- 201871010111-刘佳华《面向对象程序设计(java)》第十四周学习总结
201871010111-刘佳华<面向对象程序设计(java)>第十四周学习总结 实验十二 Swing图形界面组件(一) 实验时间 2019-11-29 第一部分:基础知识总结 1.设计 ...
- 02. Go 语言基本语法
Go语言基本语法 变量.数据类型和常量是编程中最常见,也是很好理解的概念.本章将从 Go 语言的变量开始,逐步介绍各种数据类型及常量. Go 语言在很多特性上和C语言非常相近.如果读者有C语言基础,那 ...
- 2个ajax的相互调用解决异步问题