Jenkins部署java项目

简单说明

  • 服务器环境:maven, JDK, jenkins使用maven的插件, 部署war包的插件
    maven用于将java源码编译成war包
  • 客户机环境(需要部署web程序的机器,可以是远程的也可以是jenkins本机):tomcat, JDK
  • 其他git,java项目源码

源码准备

  • 模拟真实的情况需要有一个私有git保存着代码
  • jenkins使用私有库时需要用密码或密钥
  • 这里使用github库
  • 源码为zrlog源代码,需要修改代码,设置数据库信息(让编译好的程序可以跟客户机的数据库对应上)需要修改zrlog源码的pom,或根据pom建立相应的数据库;
源码:
https://github.com/tanyyinyu/mzrlog.git
需导入的数据库初始设置(在上面的git里)
[root@iZwz9hctpdhmfmjaa93skoZ mzrlog]# ls /root/mzrlog/zrlog/data/zrlog.sql #初始设置跟上面的源码匹配,使用新版本的源码,这个数据库数据文件应该是不合适的;
/root/mzrlog/zrlog/data/zrlog.sql
[root@iZwz9hctpdhmfmjaa93skoZ mzrlog]# cat src/main/webapp/WEB-INF/db.properties
driverClass=com.mysql.cj.jdbc.Driver
user=zr
password=password
jdbcUrl=jdbc\:mysql\://127.0.0.1\:3306/zr?characterEncoding\=UTF-8&useSSL\=false&serverTimezone\=GMT

需要新建zr库,用户zr,密码password,host127.0.0.1
编译完成,数据库信息对不上,错误代码404,找不到内容

需要部署的机器安装tomcat和设置好tomcat管理功能

  • https://blog.csdn.net/tanyyinyu/article/details/102700704 安装tomcat
  • https://blog.csdn.net/tanyyinyu/article/details/102718491 tomcat管理功能

jenkins机器部署jdk

  • 下载JDK和使用JDK而不是openjdk, 使用openjdk支持maven会有问题
  • 下载后解压缩到 /usr/local/jdk1.8.0_101
  • 修改环境变量,确保系统会使用JDK(虽然jenkins可另外指定JDK和maven的目录)
  • shell部署jdk,tomcat, maven
    https://github.com/tanyyinyu/tomcat.git
<root@linux0 ~>$ vi /etc/profile  #后面加上这两句;
export JAVA_HOME=/usr/local/jdk1.8.0_101
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

<root@linux0 ~>$ source /etc/profile   #使配置生效,也可以退出ssh,再登陆一次;
<root@linux0 ~>$ ln -s /usr/local/jdk1.8.0_101/bin/java /bin/java  #可能还要做软链接;

安装maven

  • maven使用上来说有很多功能,这个实验里,个人看到的,是按照源码的需求找到源码需要的类(每个人用的类的版本可能不一样,不方便管理而产生的工具),类会通过标准的库下载,所以编译有很多下载过程(外国服务器,很难下载完全,需要建立库的镜像),将这些类打包在一起,让程序可以调用
  • 下载地址 https://maven.apache.org/download.cgi
  • wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.5.2/binaries/apache-maven-3.5.2-bin.tar.gz
  • tar zxvf apache-maven-3.5.2-bin.tar.gz
  • mv apache-maven-3.5.2 /usr/local/
  • /usr/loca/apache-maven-3.5.2/bin/mvn --version
<root@linux0 ~>$ /usr/local/apache-maven-3.6.3/bin/mvn -version  #这里也可以看到使用的java来自哪个目录;
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /usr/local/apache-maven-3.6.3
Java version: 1.8.0_101, vendor: Oracle Corporation, runtime: /usr/local/jdk1.8.0_101/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-957.el7.x86_64", arch: "amd64", family: "unix"

Maven私有仓库搭建以及使用

  • 配置好以后下载编译时,下载各种文件才会快和顺畅
  • https://www.cnblogs.com/wuwei928/p/10338307.html
  • Repositories 则用来配置远程资源和本地资源,其中支持Proxy类型资源,表示远程资源的镜像,host类型的资源表示本地资源,用于保存第三方资源或团队内部共享的资源等。group类型资源是组,可以将多个proxy或host类型的资源构建成一个组,供Maven使用等
    安装nexus,添加几个常用的库,然后把库加到public组里面;
    设置maven setting使用mirror为public组,后面还跟着profile的设置,一并使用上;
  • Maven配置使用Nexus, 文章里的配置文件可直接使用,把6个IP和端口号要修改好;
    <mirror>
      <id>HolliParkMirror</id>  #mirror id;
      <mirrorOf>*</mirrorOf>   #代理所有远程资源;
      <name>HolliPark Repository Mirror.</name> #可省略;
      <url>http://47.113.112.37:8081/nexus/repository/maven-public/</url>  #本地nexus服务器地址;
    </mirror>

  </mirrors>
<root@linux0 ~>$ vim /usr/local/apache-maven-3.6.3/conf/settings.xml
:1,$s/localhost:8082/192.168.87.150:8081/g #配置成你容器的IP;如果nexus安装在本地(将要部署java的机器上),可使用localhost或127.0.0.1;
  • 其他信息

  • docker WARNING: IPv4 forwarding is disabled. Networking will not work.
    https://www.jianshu.com/p/53681806c753
    处理docker 容器不能访问的问题,打开转发

  • distributionManagement

  • 修改项目源码的pom.xml, 此pom.xml是项目源代码里的文件也需要修改IP和端口号
    这里用于管理发布的war包,快照保存非正式版,releases保存正式版,可以在pom文件里修改version实现这个目标,这个实验里,不设置应该也是可以的,设置了没有看到效果。

<distributionManagement>
    <repository>
        <id>releases</id>
        <name>Nexus Release Repository</name>
        <url>http://192.168.87.150:8081/nexus/repository/maven-releases/</url>
    </repository>
    <snapshotRepository>
        <id>snapshots</id>
        <name>Nexus Snapshot Repository</name>
        <url>http://192.168.87.150:8081/nexus/repository/maven-snapshots/</url>
    </snapshotRepository>
</distributionManagement>

jenkins部署java项目,综合使用以上的环境

  • 系统管理 -> 管理插件,检查是否已经安装 Maven Integration plugin 和 Deploy to container Plugin,若没有安装>则需要安装这两个插件,安装好插件重启后再新建项目
  • deploy会把编译好的war包放到webapps里,可以通过IP+8080/包名 访问
    在这里插入图片描述

在这里插入图片描述

  • 设置maven路径和JDK路径,在jenkins本地配置项目
    在这里插入图片描述
    在这里插入图片描述

  • 安装完插件后,需要重启jenkins
    systemctl restart jenkins

  • 创建新任务
    登录jenkins,点击“新建”,任务名称自定义(我的叫做java-test)
    选择“构建一个maven项目”
    点击“确定”

  • 源码管理
    选择 “git”, Repository URL填写你的git地址,并配置对应的key,大家最好事前先在jenkins这台机器上能够直接远程
    git操作私有仓库

  • 构建触发器、构建环境、Pre Steps保持默认

  • Build
    “Root POM”为pom.xml, Goals and options 填写 clean install -D maven.test.skip=true
    在这里插入图片描述

  • Post Steps、构建设置保持默认

  • 构建后操作
    点击“增加构建后操作步骤”选择“Deploy war/ear to a container”,“WAR/EAR files”填写“**/*.war”,Contex path留空
    ,Containers选择Tomcat 8.x(选择你的tomcat版本),Tomcat URL填写要把war包发布到的那台机器的url,如http://172.7.15.114:8080
    Credentials这里需要点击右侧的Add,添加用户名和密码(tomcat管理功能的帐号和密码)
    在这里插入图片描述

  • 继续点击“增加构建后操作步骤”选择“Editable Email Notification”
    Project Recipient List,改为$DEFAULT_RECIPIENTS,aming_test@163.com, 意思是增加额外一个收件人

  • 点击右下角的“Advanced settings”,定位到“Triggers”,然后点击下方的“Add Trigger”,可以增加发邮件的条件。

  • 最后点左下角的“保存”

  • 之后就可以点左侧的“立即构建”,然后查看对应任务的“Console Output”

成功信息:
Waiting for Jenkins to finish collecting data
[JENKINS] Archiving /var/lib/jenkins/workspace/maven/pom.xml to com.zrlog/zrlog/1.8.0/zrlog-1.8.0.pom
[JENKINS] Archiving /var/lib/jenkins/workspace/maven/target/zrlog-1.8.0.war to com.zrlog/zrlog/1.8.0/zrlog-1.8.0.war
channel stopped
[DeployPublisher][INFO] Attempting to deploy 1 war file(s)
[DeployPublisher][INFO] Deploying /var/lib/jenkins/workspace/maven/target/zrlog-1.8.0.war to container Tomcat 9.x Remote with context null
  Redeploying [/var/lib/jenkins/workspace/maven/target/zrlog-1.8.0.war]
  Undeploying [/var/lib/jenkins/workspace/maven/target/zrlog-1.8.0.war]
  Deploying [/var/lib/jenkins/workspace/maven/target/zrlog-1.8.0.war]
Finished: SUCCESS
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值