背景介绍:

在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”的更多相关文章

  1. 约定Jenkins构建脚本

    对于Jenkins的使用,我感觉只用到其中一小部分功能,但也就是这一小部分功能,也推动了整个CI/CD的过程,Jenkins的使用方式有很多中,可能我用到的只是其中一种,但是已经满足我的需求,便不再贪 ...

  2. Gradle 1.12 翻译——第十三章 编写构建脚本

    有关其它已翻译的章节请关注Github上的项目:https://github.com/msdx/gradledoc/tree/1.12,或訪问:http://gradledoc.qiniudn.com ...

  3. 构建现代Web应用时究竟是选择传统web应用还是SPA

    在大前端盛行的今天,似乎前后端分离的开发模式才是大势所趋,而SPA的概念更是应运而生.现在随便构建一个web应用程序如果你不是使用SPA的话,就会感觉有点low,但是真的是这样吗?今天这篇文章我们就来 ...

  4. [原]Jenkins(八)---jenkins构建项目报错时发送错误报告邮件

    /** * lihaibo * 文章内容都是根据自己工作情况实践得出. * 版权声明:本博客欢迎转发,但请保留原作者信息! http://www.cnblogs.com/horizonli/p/533 ...

  5. ansible分发密钥

    http://www.361way.com/ansible-cfg/4401.html 修改host_key_checking(默认是check的):改为false,      host_key_ch ...

  6. ssh密钥分发之二:使用sshpass配合ssh-kopy-id编写脚本批量分发密钥:

    使用sshpass配合ssh-kopy-id编写脚本批量分发密钥: 首先sshpass是一个ssh连接时的免交互工具,首先要安装一下: yum install sshpass -y 接下来我们就可以使 ...

  7. Gradle:构建脚本概要

    一.构建块 1.每一个构建块都包括三个基本构建块:project.task和property: 2.每一个构建块包括至少一个project,进而又包括一个或多个task: 3.project和task ...

  8. SqlServer 使用脚本创建分发服务及事务复制的可更新订阅

    原文:SqlServer 使用脚本创建分发服务及事务复制的可更新订阅 [创建使用本地分发服务器] /************************[使用本地分发服务器配置发布]*********** ...

  9. 【转载】Gradle学习 第六章:构建脚本基础

    转载地址:http://ask.android-studio.org/?/article/11 6.1. Projects and tasks 项目和任务Everything in Gradle si ...

随机推荐

  1. js截取两个字符串之间的子字符串

    // 截取两个字符串之间的子字符串,返回第一个 function subStringOne(text, begin, end) { var regex; if (end == '\\n') regex ...

  2. 数据库在线导出工具:Adminer

    数据库在线导出工具:Adminer Adminer是一个类似PhpMyAdmin的MySQL客户端的"页面PHP",它只有一个PHP文件,包括:数据库的普通和函数操作等功能,是一个 ...

  3. TypeScript 学习笔记(四)

    函数: 1.函数是一组一起执行一个任务的语句 2.我们可以把一段可复用的代码放到一起组成函数,从而提高效率 3.函数声明(通过关键字 function 来声明)告诉编译器函数的名称.返回类型和参数 4 ...

  4. MySQL第四课

    CREATE TABLE biao(    name VARCHAR(20) PRIMARY KEY,    age INT(11) NOT NULL,    sex CHAR(11)DEFAULT ...

  5. 以特定用户和组来执行某个程序 - linux

    运行cockpit 服务时,我们指定运行此程序的用户和组:cockpit-ws cockpit-ws 我们使用 sudo -u -g 命令来进行运行: sudo -u cockpit-ws -g co ...

  6. JVM-5-GC(Garbage Collection) 垃圾回收机制

    GC(Garbage Collection)  垃圾回收机制   什么是垃圾回收机制 垃圾回收是一种动态存储管理技术,它自动地释放不再被程序引用的对象,按照特定的垃圾收集算法来实现资源自动回收的功能. ...

  7. jango rest-framework page_size更新

    老项目是三年前写的, 这周的新项目要用上DRF的分页功能时,发现老的写法无效了. 于是看了一些文档,原来写法变了. https://blog.csdn.net/dqchouyang/article/d ...

  8. JavaScript实现点击复制按钮复制文本框的内容,兼容IOS

    <lable> <input type="text" id="txt"> <a href="javascript:;&q ...

  9. LG2145 「JSOI2007」祖码 区间DP

    问题描述 LG2145 题解 把颜色相同的一段看做一个点. 然后类似于合唱队区间DP即可. 但是这题好像出过一些情况,导致我包括题解区所有人需要特判最后一个点. \(\mathrm{Code}\) # ...

  10. docker修改系统时间总结

    最近弄docker烦躁的一笔,时区问题踩了不少坑,为了以后再遇到类似问题再花时间查资料,特记录一下... Ubuntu: echo "Asia/Shanghai" > /et ...