1.Jenkins简单配置

Jenkins服务器连接配置

进入Jenkins,点击管理Jenkins,系统配置,进入系统配置页面;

下拉到ssh的位置,点击新增;

填写服务器ip等,点击高级,勾选使用密码选项,填写密码,完成后点击测试连接按钮,查看连接情况。

Jenkins通过git拉取代码,使用maven构建项目配置

新建item,选择构建maven项目,并填写构建项目的名称。Jenkins服务器要提前安装好maven和git。

如果Jenkins没有maven插件,可以联网自行下载,如果国内下载不了,可以参考导入插件的方式安装:https://blog.csdn.net/tcy1429920627/article/details/108850273

点击确定后,进入修改项目配置的页面,下拉到源码管理,填写源码拉取地址,并配置访问用户。

配置完成后,会自动识别用户,效果如下。

如果还有错误,可能是Jenkins的git路径不正确,需要到 "系统管理" -> "Global Tool Configuration" 全局工具配置-> "Git" -> "Path to Git executable",在此处填入 Jenkins所在的服务器 "whereis git"查询出的地址 + "/bin/git" (如上面"whereis git"的地址为"/usr/local/git",则应该填入 "/usr/local/git/bin/git") 并保存。

项目构建时其他的参数根据自己的情况选择。

配置maven条件及参数

Root POM选项为构建时的pom文件,可以在项目中添加多个pom,适用于不同情况maven构建打包。

Goals and options选项是maven构建时的命令,根据自己项目情况填写。

构建完成后,传输文件到指定服务器,并执行命令操作

Run only if build succeeds:只有在构建成功后才会执行;选择图中的选项,添加服务器。

Name:通过上文配置服务器的位置,获取到服务器列表,然后进行选择。

Source files:是项目构建完jar包的相对路径(可以先构建查看构建后文件的位置,自行修改)
                        在jenkins打包服务器上面的绝对路径是:/root/.jenkins/workspace/test/eureka/target/eureka.jar

Remove prefix:是当上传到目标服务器时,需要移除jar包之前的路径。

Remote directory:是打算把文件上传到服务器什么位置。

Exec command:是传输完文件后,执行什么命令行及操作。

命令行说明(适用于java项目,其他项目可以参考进行改造)

进入指定的文件夹:cd /app/xxxx/dev/jar/test
启动jar(jar_start.sh 是自己编写的shell脚本,脚本中引用到了jar_stop.sh<启动之前先杀死旧的进程>):sh bin/jar_start.sh /app/xxxx/dev/jar/test eureka.log eureka.jar 

#!/bin/bash
#jar_start.sh
echo -n  " " > $1/$2
echo '-----$1--$2--$3------'
echo "-----$1--$2--$3------"
echo '---------------------'
basepath=$(cd `dirname $0`; pwd)
sh ${basepath}/jar_stop.sh $1 $2 $3
echo '---------------------'
echo "启动$3" 
echo '-------启动ing-------' 
source /etc/profile
javaHome=${JAVA_HOME}
echo 'java_home'${javaHome}

nohup ${javaHome}bin/java -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=512m -Xms512m -Xmx512m -Xmn512m -Xss512k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC -jar $1/$3 > $1/$2 2>&1 &

pid=`ps -ef |grep java|grep $3|awk '{print $2}'`
echo '进程启动成功!!!进程pid:'${pid}
exit 0
#!/bin/bash
#jar_stop.sh 
echo "停止$3!!!"
echo '-----$1--$2--$3------'
echo "-----$1--$2--$3------"
pid=`ps -ef |grep java|grep $3|awk '{print $2}'`
for var in ${pid};
do
  echo "强制停止pid:$var"
  kill -9 $var
done

exit 0

打印启动日志(如果启动成功自动停止,否则超时自动停止,stop_tailf.sh命令后的&重要,表示后台执行,不需要等该命令执行完成后再执行下一条命令):

sh bin/stop_tailf.sh /app/xxxx/dev/jar/test eureka.log &

sh bin/tailf.sh /app/xxxx/dev/jar/test eureka.log

#!/bin/sh
#@Author chengyu
#@Name stop_tailf.sh
#@Description 用于检测 jar是否成功启动 配合tailf.sh一起使用
# 参数说明$1 项目路径;$2 日志文件名称

log_uri=$1/$2
echo "项目日志文件:${log_uri}"
sec=0

echo "" > $1/bin/boole_$2
while true
do
    is_fin=`cat ${log_uri} |grep 'JVM running for' |wc -l`
    echo "[tags] second: ${sec} is_fin: ${is_fin}"
    echo "${is_fin}" > $1/bin/boole_$2
    if [ ${sec} -ge 46 ]; then
        echo "部署等待时间过长 退出"
        `ps -ef |grep "tail -f ${log_uri}" |grep -v grep|awk '{print $2}' |xargs kill`
        break
    fi
    if [ ${is_fin} -gt 0 ]; then
        echo "[tags] is_fin: ${is_fin} "
        `ps -ef |grep "tail -f ${log_uri}" |grep -v grep|awk '{print $2}' |xargs kill`
        echo "[tags] 项目启动花费 ${sec} 秒"
        break
    fi
    sec=$((sec + 2))
    sleep 2
    echo "[tags] 启动时长second ${sec} ; 启动中......"
done
#!/bin/sh
# @Author: chengyu
# @Name: tailf.sh
# @Description: 判断此次部署是否成功 并打印java日志

# $1为项目部署的位置
# $2为日志文件名称

# 后台执行杀死
#basepath=$(cd `dirname $0`; pwd)
#echo "basepath:${basepath}"
#echo "执行kill_tailf命令: sh ../bin/check.sh $1 $2 &"
#sh ../bin/check.sh $1 $2 &
# 执行tailf 查看日志
echo "执行shell命令: tail -f $1/$2"
tail -f $1/$2
echo [tags] tailf 命令已经成功退出

# 判断是否捕获到 Started .* second
is_fin=`cat $1/bin/boole_$2`

if [ ${is_fin} -gt 0 ]; then
    echo [tags] ------------
    echo [tags] 本次部署成功
    echo [tags] ------------
else 
    echo [tags] ------------
    echo [tags] 本次部署结束
    echo [tags] ------------
fi

2.Jenkins动态传参,联动下拉选择条件

Jenkins添加下拉选项,动态传参数

下拉参数配置、动态传参(其他选项动态传参类似):在项目配置中选择下图中的选项,编辑自己想要的信息。编辑好之后,效果如下。

​    

该参数可以通过maven打包传到项目中(-DportTest接收到数据后,会修改pom.xml中的<portTest></portTest>中,供项目使用),也可以在执行命令时动态使用。

 

联动下拉、选择上传服务器

首先先创建普通的下拉,参考上文,然后选择下图参数选项,配置参数和效果如下图

​   

选择条件控制上传服务器,到ssh配置的位置,最下边有个‘高级’,点击。

勾选Parameterized publishing,并填写选择的变量名称

点击服务器配置中的高级。

勾选Label,填写选项对应的值(当配置多台服务器时,通过选择的选项对应的值,可以判断选择,构建完成后会对哪台服务器进行操作)

希望本文对你有帮助。