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 ...
随机推荐
- Python 條件式 Condition
除了重複使用Function,有時我們須檢查結果,依此判斷下個步驟該怎麼進行,如此就需要條件式 condition statement. if ... elif ... ese ( 或 if ... ...
- arcgis api 4.x for js 图层拓展篇之mapvLayer(附源码下载)
因为在项目开发过程中,使用的arcgis js api版本是4.7,并不能支持客户端渲染热力图,想到arcgis js api 4.x的渲染是基于canvas,故琢磨着是否能借助类似于mapV.ech ...
- requests---requests上传图片
我们在做接口测试的时候肯定会遇到一些上传图片,然后进行校验,今天我们一起学习通过requests上传图片,查看是否上传成功 抓取上传接口 这里我以百度为例子进行操作,为啥要用百度呢,主要上传文件比较简 ...
- LRU hashMap(拉链) + 双向链表 java实现
//基于 hash (拉链法) + 双向链表,LRUcache //若改为开放寻址,线性探测法能更好使用cpuCache public class LRU { private class Node { ...
- Mybatis整合Redis实现二级缓存
Mybatis集成ehcache . 为什么需要缓存 拉高程序的性能 . 什么样的数据需要缓存 很少被修改或根本不改的数据 业务场景比如:耗时较高的统计分析sql.电话账单查询sql等 . ehcac ...
- OSPF和ACL的应用
1.创建拓扑图 2.配置基本网络 3.配置OSPF (1)在R1上配置 (2)在R2上配置 (3)在R3上配置 (4)在IT上配置 4.配置ACL (1)在R3上配置 (2)在R2上配置 (3) ...
- leetcode 5199. 交换字符串中的元素
地址 https://leetcode-cn.com/contest/weekly-contest-155/problems/smallest-string-with-swaps/ 给你一个字符串 ...
- 简单App项目的运行
我和我的同伴两个人从网上下载一个仿微信登录源码,导入到eclipse中,两人结队练习这个源代码的操作, 运行项目到Android虚拟器上,显示效果为 我们还运行这个项目到手机设备上,显示效果为 接 ...
- NopCommerce 4.2的安装与运行
一.关于NopCommerce NopCommerce是国外ASP.Net领域一个高质量的B2C开源电商项目,最新版本4.2基于ASP.NET Core MVC 2.2和EF Core 2.2开发,其 ...
- Linux 部署vue项目(使用nginx)
1.部署Nginx 请参考Linux下部署nginx,此处不再重复 2.Vue项目打包 # 打包正式环境 npm run build:prod # 打包预发布环境 npm run build:stag ...