Jenkins远程部署

本文详细介绍了如何在Linux上进行Jenkins的安装,并通过Publish Over SSH插件实现项目的远程部署。内容包括插件安装、系统设置、项目配置,以及解决远程部署执行shell脚本时遇到的问题。重点强调了Source files和Remote directory的正确配置,并提供了针对环境变量问题的解决方案。

linux上Jenkins安装以及本机项目自动部署请参考Jenkins安装+部署,此处不再赘述。

jenkins远程部署流程:本机jenkins maven打包——》远程cp至目标服务器——》在目标服务器上执行脚本。

1,插件安装:publish over ssh

 

2,系统管理—系统设置中,添加远程主机信息:

3,项目配置

在现有本机项目基础上,copy一份即可。只需修改post build操作.

配置如下(当前项目所在目录为/var/lib/jenkins/workspace/cb-channel-app-707):

  • Source files **/* 表示cb-channel-app-707这个job的工作目录下所有的文件和目录。
  • Remove prefix 该操作是针对上面的source files目录,会移除匹配的目录。通常留空。
  • Remote directory 该操作是基于设定的服务器目录进行(系统设置中的Remote Directory值)。这里我的服务器配置是的/root. 因此这里应该写sites/sskzmz即可。
  • Exec command 远程服务器执行的命令。例如可以输出 service nginx restart 或者/www/xx. sh 均可。

重点一: source files 要基于任务的目录进行。不支持绝对路径。如果配置不对,则找不到文件。上例中/var/lib/jenkins/workspace/cb-channel-app-707 是任务目录。最终jenkins会选择 /var/lib/jenkins/workspace/cb-channel-app-707/**/* 查询所要传送的文件。

重点二: Remote directory 要基于你远程服务器的目录配置。你远程服务器配置的基准是/root 。则最终的文件目录是 /root+ Remote directory的配置参数。不支持绝对路径。

4,remote-jenkins.sh脚本内容:

#!/bin/sh
if [ ! -n "$JAVA_HOME" ]; then
      export JAVA_HOME="/root/soft/jdk1.8.0_144"
fi

#进程名称(jar包名称)
PROCESS_NAME=$1
#进程ID
PID=0
#jenkins远程部署-jar临时存放位置
JENKINS_JAR_TEMP="/root/"
#jar包放置的目标位置
JAR_TAGET_PATH="/root/project-name/"
#jar备份位置
JAR_BACKUP_PATH="/root/project-name/backup"

#杀掉已有进程
javaps=`$JAVA_HOME/bin/jps -l | grep $PROCESS_NAME`
if [ -n "$javaps" ]; then
   PID=`echo $javaps | awk '{print $1}'`
else
    PID=0
fi
echo 'running PID:'$PID
if [ $PID -ne 0 ]; then
    echo -n "Stopping $PROCESS_NAME(PID=$PID)..."
    kill -9 $PID
    echo "[kill process success-PID:$PID]"
else
    echo "$PROCESS_NAME is not running"
fi
echo "===================================================KILL PROCESS SUCCESSFUL==========================================================="

#jar包备份,移动至标的位置
today=$(date +%Y-%m-%d-%H%M%S)
mv $JAR_TAGET_PATH/$PROCESS_NAME.jar $JAR_BACKUP_PATH/$PROCESS_NAME-$today.jar
mv $JENKINS_JAR_TEMP/$PROCESS_NAME.jar $JAR_TAGET_PATH
echo "jar包部署路径:$JAR_TAGET_PATH/$PROCESS_NAME.jar"
echo "jar包备份路径:$JAR_BACKUP_PATH/$PROCESS_NAME-$today.jar"
echo "===================================================MANAGE JAR SUCCESSFUL============================================================="

#启动jar包
export BUILD_ID=dontKillMe
nohup java -jar -Xms512m -Xmx512m -jar $JAR_TAGET_PATH/$PROCESS_NAME.jar >/dev/null 2>&1 &
sleep 5s
echo "$PROCESS_NAME start success!"
echo "===================================================START JAR SUCCESSFUL=======

后记补充

每台服务器的环境有差异,若出现以下情况:

1,jenkins远程部署无法执行shell脚本;

2,执行脚本后,找不到java命令;

3,脚本内其他命令正常执行,但是java进程 起不来;

上述情况是由于jenkins是非交互式执行shell脚本,执行脚本时不会读取环境变量/etc/profile。可以在启动命令中直接使用环境变量来指定具体命令:

nohup $JAVA_HOME/bin/java -jar -Xms512m -Xmx512m -jar $JAR_TAGET_PATH/$PROCESS_NAME.jar >/dev/null 2>&1 

此代码替换上述remote-jenkins.sh脚本中的对应地方。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值