jenkins构建本身是为了方便打包测试, 但往往会有在公司中有多台服务器 多个项目进行构建,但每个服务器都安装一遍jenkins 是很耗时耗力的.
所以,只需要在一台服务器上安装jenkins 远程构建其他服务器项目会更快捷一些
一,配置
1配置与本地相同
2 源码管理
3 构建环境
4 构建
因为是远程构建,配置好后 需要shell 指定远程服务器执行脚本
二 远程脚本配置
#!/bin/bash
PROJECT='ebs-rd'
JENKINES_PROJECT_NAME='ebs-rd'
PROJECT_TARGET='ebs-rd-1.0.1.1.war'
ROOTDIR="/opt/jenkins/2.7.4/workspace/"${JENKINES_PROJECT_NAME}/${PROJECT}"/target"
TOMCAT_NAME="apache-tomcat-8.0.41"
TOMCAT_HOME="/usr/soft/"${TOMCAT_NAME}
SRC_IP='192.168.12.27'
SRC_USERNAME='root'
#ps -ef | grep \'apache-tomcat-8.0.41\' | grep -v grep| awk \'{print \$2}\' | xargs kill -9
pidlist=`ps -ef |grep 'apache-tomcat-8.0.41' |grep -v "grep"|awk '{print $2}'`
echo "------------"
echo $pidlist
kill -9 $pidlist
rm -rf ${TOMCAT_HOME}/webapps/${PROJECT}.war
rm -rf ${TOMCAT_HOME}/webapps/${PROJECT}
scp ${SRC_USERNAME}@${SRC_IP}:${ROOTDIR}/${PROJECT_TARGET} ${TOMCAT_HOME}/webapps/${PROJECT}.war
#$TOMCAT_HOME/bin/startup.sh
echo "################### "
nohup /usr/soft/apache-tomcat-8.0.41/bin/startup.sh &
#tail -f /usr/soft/apache-tomcat-8.0.41/logs/catalina.out
sleep 5
echo "========= end ============"
因为也是第一次远程服务器构建, 中途遇到很多问题. kill掉远程服务器tomcat时,语法不对 ,配置startup.sh时 不执行,等问题
后来经过高人指点,使用nohup
三 题外话
脚本中 "&" 和 "nohup" :
看个小程序:- #include <stdio.h>
- #include <unistd.h>
- int main ()
- {
- int x = 0;
- while(1)
- {
- printf("hello %d, pid %u, ppid %d\n", x++, getpid(), getppid());
- sleep(1);
- }
- return 0;
- }
&的意思是在后台运行, 什么意思呢? 意思是说, 当你在执行 ./a.out & 的时候, 即使你用ctrl C, 那么a.out照样运行(因为对SIGINT信号免疫)。 但是要注意, 如果你直接关掉shell后, 那么, a.out进程同样消失。 可见, &的后台并不硬(因为对SIGHUP信号不免疫)。
nohup的意思是忽略SIGHUP信号, 所以当运行nohup ./a.out的时候, 关闭shell, 那么a.out进程还是存在的(对SIGHUP信号免疫)。 但是, 要注意, 如果你直接在shell中用Ctrl C, 那么, a.out进程也是会消失的(因为对SIGINT信号不免疫)
所以, &和nohup没有半毛钱的关系, 要让进程真正不受shell中Ctrl C和shell关闭的影响, 那该怎么办呢? 那就用nohua ./a.out &吧, 两全其美。
如果你懂守护进程, 那么nohup ./a.out &颇有点让a.out成为守护进程的感觉。