美文网首页
jenkins踩坑之部署war包到远程服务器

jenkins踩坑之部署war包到远程服务器

作者: Cheysen | 来源:发表于2019-08-02 00:44 被阅读0次

    最近在学习使用Jenkins+Github+Maven部署spring boot项目,这其中踩了巨多坑,跟大家分享下,希望出现同样问题可以做个参考。

    我这里不对如和结合Jenkins和Github使用介绍,网上一堆教程参考,我也是看网上教程来的。另外我的Jenkins是跑在docker里面的,而不是以war包形式跑在web服务器里,所以就遇到了很多问题,以下遇到的问题也仅对使用docker方式启动Jenkins提供参考。

    1、工具问题

    有三个重要工具:Git、JDK、Maven。其中Git新版Jenkins貌似在你选择安装推荐插件时就已经安装,所以我们需要配置JDK和Maven,开始我选择的是自动安装,然后构建的时候就一直出很奇怪的问题,多次尝试无果后换成自己去下载。因为启动docker是配置了数据卷,所以把安装好的JDK8(我的项目JDK也是8)和maven3放在挂载在宿主机上的数据卷里,而且我替换了原来的setting.xml,改了一些镜像源。

    换成自己的工具后,再次构建发现还是报错,错误提示是说JDK8不适配maven3.3.9,要我换更高版本的JDK。这里有些奇怪,我在本地就是JDK8,照样编译的好好的,始终不明白为啥,后来直接换了JDK12。

    这下倒是能开始执行package操作了,可是又报了个maven jvm terminated unexpectedly with exit code 137的错误。网上一查说是内存不足,马上回到服务器上用free -h查看内存,果然,我那1G内存的垃圾服务器就只有十几兆可用了,又花了点钱升级到了2G,然后就打包编译成功啦。

    2、war包上传到远程服务器

    在全局工具配置里面配置远程ssh的主机。注意这里的配置里面的Remote Directory就是你要把文件上传到远程服务器的目录,如果这里做了配置,那么在项目的配置里就不需要再配置,否则会在这目录下再建立一次这样的目录结构。

    下面是项目配置里面的发送文件或者执行远程shell的配置。这里的Remote directory为空是因为在全局工具里面已经配置过了。而且我们还需要去掉前缀target,这样文件传过去就不会分目录,就是一个war包。

    Exec command是需要执行的放在远程服务器上的脚本。

    3、执行远程脚本

    脚本写得比较烂,因为在这里卡了很久。总之在这里需要注意的是你用账号密码ssh进来远程服务器执行脚本时,环境变量是用不了的,比如java -version,其次要使用绝对路径,就比如projectname我一开始写成projectname=./wechatocr-1.0.0-SNAPSHOT.war,下面的if判断就一直是false,用相对路径就找不到此文件。

    #!/bin/sh
    deployPath=/usr/local/tomcat9/apache-tomcat-9.0.22/webapps
    projectname=/usr/local/tomcat9/wechatocr-1.0.0-SNAPSHOT.war
    echo "执行部署脚本"
    echo ${projectname}
    if [ -f "${projectname}" ]
    then
            rm -rf ${deployPath}/wechatocr.war
            rm -rf ${deployPath}/wechatocr
            echo "删除原war包"
            mv ${projectname} /usr/local/tomcat9/wechatocr.war
            echo "将新的war包部署到webapps目录下"
            mv /usr/local/tomcat9/wechatocr.war ${deployPath}
    else
            echo "war包不存在"
            exit 1
    fi
            echo "success"
            exit 0
    
    

    折腾许久后,终于构建部署成功,刚开始用Jenkins必然会踩很多坑,以后再去熟悉他的更高级的应用,比如分布式部署等。

    相关文章

      网友评论

          本文标题:jenkins踩坑之部署war包到远程服务器

          本文链接:https://www.haomeiwen.com/subject/kpahdctx.html