通过Jenkins部署java项目
部署java项目-创建私有仓库
Jenkins大多数情况下都是用来部署Java项目,Java项目有一个特点是需要编译和打包的,一般情况下编译和打包都是用maven完成,所以系统环境中需要安装maven。
本次实验,我们采用git私有仓库的形式,涉及到配置密钥,以zrlog来作为本次实验需要部署的java项目。
实验环境:
- 192.168.77.128 作为项目的线上服务器,具有JDK1.8+Tomcat8.5环境
- 192.168.77.130 Jenkins服务器
准备工作:
- 自行在免费的代码托管平台申请一个私有的git仓库,我这里使用的是国内的一个免费托管平台:码云
- 生成密钥对,把公钥放到git服务端,也就是配置仓库的密钥认证,常规操作就不演示了
克隆创建好的私有仓库:
[root@server ~]# cd /home/
[root@server /home]# git clone git@gitee.com:Zero-One/Test-Zrlog.git
[root@server /home]# cd Test-Zrlog/
[root@server /home/Test-Zrlog]# ls
README.md
[root@server /home/Test-Zrlog]# vim README.md // 随便更改一下内容
[root@server /home/Test-Zrlog]# git add .
[root@server /home/Test-Zrlog]# git commit -m "first"
[root@server /home/Test-Zrlog]# git push
push成功则代表没问题。
部署java项目-下载zrlog源码
下载zrlog的源码,并解压:
[root@server /home/Test-Zrlog]# cd ../
[root@server /home]# wget https://codeload.github.com/94fzb/zrlog/zip/master
[root@server /home]# du -sh master
2.1M master
[root@server /home]# unzip master
然后把解压后的文件都移到git仓库里,并提交到远程仓库上:
[root@server /home]# mv zrlog-master/* Test-Zrlog/
mv: overwrite ‘Test-Zrlog/README.md’? y
[root@server /home]# cd Test-Zrlog/
[root@server /home/Test-Zrlog]# git add .
[root@server /home/Test-Zrlog]# git commit -m "zrlog source"
[root@server /home/Test-Zrlog]# git push
配置tomcat
在线上服务器上需要安装好jdk + tomcat,其中jdk最好不要使用openjdk,使用openjdk容易出问题,我这里使用的jdk版本为1.8,tomcat版本则为8.23。
准备好JDK+Tomcat环境并且Tomcat能够正常服务后,还需要配置Tomcat的用户文件:
[root@client ~]# vim /usr/local/tomcat/conf/tomcat-users.xml # 在文件末尾加入以下内容
<role rolename="admin"/> # role配置角色
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<role rolename="manager"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user name="admin" password="your_password" roles="admin,manager,admin-gui,admin-script,manager-gui,manager-script,manager-jmx,manager-status" /> # user配置用户及用户的角色
</tomcat-users> # 注意以上内容是写在tomcat-users标签内的
接着配置Tomcat的Context文件,只需要配置白名单ip即可,不然默认只允许本地ip访问:
[root@client ~]# vim /usr/local/tomcat/webapps/manager/META-INF/context.xml
<Context antiResourceLocking="false" privileged="true" >
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|192.168.77.*" /> # 这里可以根据你自己的机器ip进行配置
<Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>
完成以上编辑后,重启tomcat:
[root@client ~]# sh /usr/local/tomcat/bin/shutdown.sh
[root@client ~]# sh /usr/local/tomcat/bin/startup.sh
打开浏览器进入到Tomcat的web页面,然后点击 “manager webapp” 进入到管理页面:
然后会进入到管理页面:
在这个页面我们可以对发布的web项目进行管理,而且Jenkins也需要通过这个管理页面的接口来发布我们的Java项目,所以才需要配置这个管理页面的用户及白名单ip。
部署java项目-安装maven
因为我们需要通过maven来帮我们编译并打包Java项目,所以这一步是安装好maven,注意这一步是在Jenkins服务器上完成的,官网下载地址:
下载并解压:
[root@client ~]# cd /usr/local/
[root@client /usr/local]# wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.5.2/binaries/apache-maven-3.5.2-bin.tar.gz
[root@client /usr/local]# tar -zxvf apache-maven-3.5.2-bin.tar.gz
[root@client /usr/local]# rm -rf apache-maven-3.5.2-bin.tar.gz
[root@client /usr/local]# ls apache-maven-3.5.2/
bin boot conf lib LICENSE NOTICE README.txt
[root@client /usr/local]# apache-maven-3.5.2/bin/mvn --version
Apache Maven 3.5.2 (138edd61fd100ec658bfa2d307c43b76940a5d7d; 2017-10-18T15:58:13+08:00)
Maven home: /usr/local/apache-maven-3.5.2
Java version: 1.8.0_111, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-1.b15.el7_2.x86_64/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-327.el7.x86_64", arch: "amd64", family: "unix"
[root@client /usr/local]#
安装完成后,到Jenkins的web页面上进行配置,jenkins页面 -> 系统管理 -> 全局工具配置:
先配置maven的setting.xml文件的路径:
然后往下拉,找到Maven那一栏,配置maven的安装路径:
点击 “Saven” 之后,我们的maven也就配置完了
安装插件
系统管理 -> 管理插件,检查是否已经安装 Maven Integration和 Deploy to container,若没有安装则需要安装这两个插件:
安装Maven Integration:
- 安装Deploy to container:
安装完成:
Maven Integration是用于构建Maven项目的,而Deploy to container则是用于发布远程war包的。
如果没有安装Maven Integration的话,构建任务时是没有Maven项目的选项的:
重启Jenkins服务:
systemctl restart jenkins
然后点击 “新建任务” ,这时会发现多了一个Maven项目的选项,这就证明maven插件安装成功了:
构建job
点击 “新建任务” ,创建一个Maven项目:
填写项目信息:
源码管理,配置远程的私有git仓库:
构建触发器、构建环境、Pre Steps这几项保持默认节即可,
然后配置Build那一栏,Build的过程是在编译源码并打包:
接下来的Post Steps以及构建设置这两项也保持默认。
构建后操作需要配置,这一步我这里目前只是配置一下邮件通知,目的是先进行测试能否成功构建Maven项目,测试成功后一会再配置发布war包:
配置完保存之后,就可以点击立即构建来构建这个maven项目了,我这里是构建成功的:
而且邮箱也成功收到了邮件通知:
这时进入控制台输出页面,由于是第一次构建Maven的项目,所以会看到下载了很多Maven相关的东西:
而第二、第三次构建Maven的项目就不会再下载这么多东西了,如上我们的测试构建Maven项目就成功了,接下来就可以远程发布war包了。
发布war包
回到项目的配置,在构建后操作那一栏点击 “增加构建后操作步骤” 选择 “Deploy war/ear to a container” :
Containers选择Tomcat 8.x,Tomcat URL填写要把war包发布到的那台机器的url:
Credentials这里需要点击右侧的Add,添加用户名和密码:
配置完之后点击保存即可。
然后就可以构建任务了,我这里是构建成功的:
并且也收到了邮件通知:
这时候到目标机器上,看看war包是否已发布到tomcat上了:
[root@client ~]# ls /usr/local/tomcat/webapps/
docs examples host-manager manager ROOT zrlog-1.9.0 zrlog-1.9.0.war
[root@client ~]#
如上,可以看到war已成功发布到tomcat上了。
浏览器上也成功登录了zrlog:
到此为止,我们的Java项目就发布成功了。
通过Jenkins部署java项目的更多相关文章
- jenkins部署java项目,脚本文件放在远程仓库中 和jar一起打包(六)
jenkins部署java项目到远程linux上,脚本文件和项目一起上传到gogs上,直接执行gogs上的脚本文件来执行项目 (1)新建maven项目 pom.xml的配置 <project x ...
- git jenkins 部署java项目
1.Java项目部署基本概述: 1.什么是Java项目? 2.为什么Java项目需要使用Maven编译? 3.手动实现Java项目构建? 4.手动实现Java项目架构图? 源码包 jar包 ...
- Win10搭建Jenkins部署Java项目(本机和远程Win10部署)
目录 一.前言&背景 二.环境准备 三.插件安装 四.全局配置 Maven JDK Git Maven 五.新建项目并配置 新建项目 配置 1.Discard old builds 2.Thi ...
- Docker使用jenkins部署java项目到远程linux(三)
实现功能:从本地提交代码到gogs上,本地的代码会被检测一遍 如果检测通过才能commit成功 然后可以继续执行push命令 .push后在gogs上使用web钩子自动推送到jenkins触发构建,j ...
- jenkins部署java项目到远程linux(四)
(1)新建java项目(maven构建) pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:x ...
- jenkins部署java项目
#########################################jenkins部署#################################3 一.jenkins是什么? J ...
- jenkins部署java项目在本地(三)
(1)新建maven构建的java项目 pom.xml的配置 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns ...
- jenkins部署java项目(五)
一.web server安装jdk+tomcat其中jdk可以为openjdk,版本1.8 1.1 安装jdk环境 方式一:直接使用yum安装openjdk # * 方式二:本地安装在oracle官网 ...
- jenkins部署web项目到webogic
注: Docker容器里安装的jenkins,Docker容易里安装的weblogic 在jenkins里面直接将打包好的 war 包通过 Publish over SSH插件 放入 weblogic ...
随机推荐
- Oralce聚合多行
拼接的字符串长度满足varchar2(4000)时, 可以用 LISTAGG(NAME, '_') WITHIN GROUP(ORDER BY LEVEL_T DESC) 当拼接大段文本时,采用 10 ...
- ACM-ICPC国际大学生程序设计竞赛北京赛区(2017)网络赛
编号 名称 通过率 通过人数 提交人数 A√水题(队友写的 Visiting Peking University 91% 1122 1228 B— Reverse Suffix Array 57% 6 ...
- 51nod 多重背包问题(动态规划)
多重背包问题 一个背包,承量有限为W,有n种物体,第i种物体,价值Vi,占用重量为 Wi,且有Ci件,选择物品若干放入背包,使得总重量不超过背包的承重.总价值最大? 输入 第1行,2个整数,N和W中间 ...
- 安装mongodb插件
1.安装mngodb模块 wget http://pecl.php.net/get/mongodb-1.2.4.tgz tar zxf mongodb-1.2.4.tgz cd mongodb-1.2 ...
- String和StringBuffer的机制差别
String是不可变的,StringBuffer是可变的:StringBuffer是线程安全的,StringBuilder是非线程安全的. 因而在大部分情况下字符串的拼接速度为:StringBuild ...
- Hibernate4 No Session found for current thread
Hibernate4 与 spring3 集成之后, 如果在取得session 的地方使用了getCurrentSession, 可能会报一个错:“No Session found for curre ...
- [BZOJ 1072] 排列perm
Link: BZOJ 1072 传送门 Solution: 一道直接next_permutation纯暴力就能过的题? 难道2007年时大家都不知道next_permutation这个函数吗 还是用复 ...
- 【二分答案】【最短路】bzoj1614 [Usaco2007 Jan]Telephone Lines架设电话线
对于二分出的答案x而言,验证答案等价于将所有边权>x的边赋成1,否则赋成0,然后判断从1到n的最短路是否<=K. #include<cstdio> #include<cs ...
- 【点分治】【乘法逆元】hdu4812 D Tree
思路比较裸,但是要把答案存到哈希表里面,这里需要一定技巧,否则会被K=1且点权全是1的数据卡飞.预处理乘法逆元.TLE了一天.换了种点分治的姿势…… #pragma comment(linker,&q ...
- 【bzoj1296】【[SCOI2009]粉刷匠】多次背包dp及小小的优化
先放题面 Description windy有 N 条木板需要被粉刷. 每条木板被分为 M 个格子. 每个格子要被刷成红色或蓝色. windy每次粉刷,只能选择一条木板上一段连续的格子,然后涂上一种颜 ...