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

《jenkins构建Maven项目远程发布到服务器》 Maven Integration plugin

Filter:输入publish
安装:Publish Over SSH

《jenkins构建Maven项目远程发布到服务器》 Publish Over SSH

Filter:输入email
安装:Email Extension Plugin

《jenkins构建Maven项目远程发布到服务器》 Email Extension Plugin

系统配置:

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

《jenkins构建Maven项目远程发布到服务器》 填入管理员邮箱

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

《jenkins构建Maven项目远程发布到服务器》 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

《jenkins构建Maven项目远程发布到服务器》 Publish over SSH

最后
test configuration 链接成功就ok

Global Tool Configuration配置

系统管理->Global Tool Configuration

Maven Configuration

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

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

配置服务器已安装jdk

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

maven 目录

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

新建一个构建发布任务

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

选择ok
进入配置:

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

《jenkins构建Maven项目远程发布到服务器》 输入图片说明
《jenkins构建Maven项目远程发布到服务器》 输入图片说明

《jenkins构建Maven项目远程发布到服务器》 输入图片说明
《jenkins构建Maven项目远程发布到服务器》 输入图片说明

这里有个远程服务器执行的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)问题

    原文作者:小阳撒
    原文地址: https://www.jianshu.com/p/ff1c09091a58
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞