jenkins构建Maven项目远程发布到服务器

开始

https://jenkins.io/ 到官网直接下载个最新版本的war包
服务器搭建tomcat,将jenkins.io 丢到tomcat 的发布目录:

参考tomcat配置

    <Connector port="18080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" URIEncoding="UTF-8" />

... ...
<Host name="localhost"  appBase="/home/wwwroot/jenkins"
            unpackWARs="true" autoDeploy="true">
... ...

jenkins.war 放置目录

    [root@localhost jenkins]# pwd
    /home/wwwroot/jenkins
    [root@localhost jenkins]# ls
    jenkins  jenkins.war

启动tomcat

访问 http://[ip]:18080/jenkins/

安装必要的插件

系统管理->管理插件->可选插件
Filter:输入maven
安装:Maven Integration plugin

Maven Integration plugin
Maven Integration plugin

Filter:输入publish
安装:Publish Over SSH

Publish Over SSH
Publish Over SSH

Filter:输入email
安装:Email Extension Plugin

Email Extension Plugin
Email Extension Plugin

系统配置:

Jenkins Location->系统管理员邮件地址 填入管理员邮箱;

填入管理员邮箱
填入管理员邮箱

Extended E-mail Notification配置我这里以QQ邮箱为例:

Extended E-mail Notification
Extended E-mail Notification

注意:邮箱记得打开smtp 服务
jdk1.8下有可能报错:

javax.mail.MessagingException: Could not connect to SMTP host: smtp.***.com, port: 465;
... ...

第一种解决方法:

导入证书

$JAVA_HOME/bin/keytool -import -alias mail.****.com -file mail.****.com.cer -keystore $JAVA_HOME/jre/lib/security/cacerts

测试链接

java SSLPoke smtp.*****.com 465

第二种解决方法

下载 jce-7

%JAVA_HOME%/jre/lib/security

替换jdk1.8下的两个包
Publish over SSH

Publish over SSH
Publish over SSH

最后test configuration 链接成功就ok

Global Tool Configuration配置

系统管理->Global Tool Configuration

Maven Configuration

我这里直接配置服务器安装好的setting.xml


Maven Configuration
Maven Configuration

配置服务器已安装jdk

jdk
jdk

maven 目录

maven
maven

新建一个构建发布任务

构建发布任务
构建发布任务

选择ok
进入配置:


输入图片说明
输入图片说明
输入图片说明
输入图片说明

输入图片说明
输入图片说明
输入图片说明
输入图片说明

这里有个远程服务器执行的shell,放在远程服务器上,需要加上 BUILD_ID=DONTKILLME 防止停止构建之后中断执行shell。shell主要是完成 复制上传的war包到tomcat下的目录,然后重启tomcat,下面我给出简单示例:

    #!/bin/sh
    projname=项目名字
    deployPath=/home/webroot/default
    tomcatUnzipPath=/home/webroot/[tomcat解压路径]/
    uploadPath=/[war 上传路径]/${projname}.war

    restartShell="[tomcat 重启脚本]"

    if [ -f "${uploadPath}" ]; then

    rm -f ${deployPath}/${projname}.war
    cp ${uploadPath} ${deployPath}/${projname}.war

    rm -rf ${tomcatUnzipPath}
    #重启jetty
    echo ${restartShell}
    ${restartShell}
    
    else
        echo "war 包不存在"
        exit 1
    fi
        echo "success"
        exit 0

参考:
Jenkins-邮箱配置及问题解决
解决jdk1.8中发送邮件失败(handshake_failure)问题

推荐阅读更多精彩内容