Jenkins配置远程服务器构建

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" :

看个小程序:
  1. #include <stdio.h>  
  2. #include <unistd.h>  
  3.   
  4. int main ()  
  5. {  
  6.     int x = 0;  
  7.     while(1)  
  8.     {  
  9.         printf("hello %d, pid %u, ppid %d\n", x++, getpid(), getppid());  
  10.         sleep(1);  
  11.     }  
  12.    
  13.     return 0;  
  14. }  
       生成可执行程序a.out,  下面, 我会在我的linux机器上进行测试!!!


       &的意思是在后台运行, 什么意思呢?  意思是说, 当你在执行 ./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成为守护进程的感觉。


猜你喜欢

转载自blog.csdn.net/l05199179/article/details/80318206