一、启动时出现错误:Exception in thread "Jenkins initialization thread" java.lang.NoClassDefFoundError: hudson/util/HudsonFailedToLoad

这个出现的原因是因为启动命令出现错误,应该输入“java -jar jenkins.war --httpPort=8180”,但是却输入了“java -jar jenkins.war -httpPort=8180”,而8080端口本身已经被占用了,所以出现了这个问题。

二、在本机部署jenkins项目时,jenkins会在post-build actions之后自动关闭衍生的进程,因此若是直接使用java -jar命令,在jenkins部署后会失败,因为这个进程被杀死了。可以使用ssh来自己连接自己并exec部署命令。

部署时通过SSH来发送文件和命令

其中jenkins-in.sh的文件内容如下:

#!/bin/bash

JARFILE=easyopen-server.jar

ORIGINFILE=easyopen-server-1.0.0.jar

DEPLOYDIR=/home/zhaochao


if [ -f $DEPLOYDIR/$ORIGINFILE ];

then

        echo "file is prepared already"

        processItemNum=`ps aux|grep $JARFILE|wc -l`

        if [ $processItemNum -gt 1 ]; then

                echo "the old project is running"

                processItem=`ps aux|grep $JARFILE|grep -v grep`

                echo "$processItem"|awk '{print $2}'|xargs kill -9

                echo 'the old project has been killed'

        fi

        rm -f $DEPLOYDIR/$JARFILE

        echo 'the old project has been moved'

        mv $DEPLOYDIR/$ORIGINFILE $DEPLOYDIR/$JARFILE

        nohup java -jar $DEPLOYDIR/$JARFILE>$DEPLOYDIR/output 2>&1 &

else

        echo "newly build file can not be found"

fi

jenkins中SSH的配置为:

 

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐