Jenkins--pipline 流水线部署Java后端项目
写在前面
之前我的博客里面写过Jenkins自动化部署Java项目,可参考博客 https://blog.51cto.com/13760351/2382103
这里写的是使用流水线部署java后端项目。
实验环境
ip地址 | 角色 | 部署的软件 |
---|---|---|
192.168.0.117 | Jenkins 服务器 | Jenkins、maven、jdk、git |
192.168.0.120 | Tomcat 服务器 | gitlab、git、mysql、Tomcat、jdk |
1.安装配置好maven打包插件
2.安装好gitlab仓库,及本地Java代码上传gitlab
3.CentOS 7系统,可连接外网
4.关闭防火墙,增强性
实验步骤
1.安装打包工具--maven
maven 安装及配置参考 https://www.geek-share.com/detail/2766642729.html
注意:
安装maven要先安装jdk, 如果系统有openjdk需要先卸载,Jenkins可以使用自己安装的jdk,但需要设置!
vim /etc/init.d/jenkins
candidates=" /usr/local/java/bin/java #插入自己安装java路径 /usr/java/jdk1.7.0_75/bin/java /etc/alternatives/java /usr/lib/jvm/java-1.8.0/bin/java /usr/lib/jvm/jre-1.8.0/bin/java /usr/lib/jvm/java-1.7.0/bin/java /usr/lib/jvm/jre-1.7.0/bin/java /usr/bin/java "
2.代码仓库gitlab准备
代码上传gitlab参考 https://blog.51cto.com/13760351/2526052
3.jenkins服务器和Tomcat服务器免密交互
1.修改2台服务器hosts文件
vim /etc/hosts
在末尾加入:
192.168.0.117 jenkins 192.168.0.120 tomcat
2,3,4步都在Jenkins服务器上面操作
2.生成ssh key
ssh-keygen
3.将ssh公钥发送tomcat服务器
ssh-copy-id -i .ssh/id_rsa.pub root@tomcat
4.免密登录测试
ssh root@tomcat
4.Jenkinsfile编写
pipeline { agent { node { label 'master' } } //拉取代码 stages { stage('GetCode') { steps { sleep 5 } } //打包 stage('build') { steps { sh '/usr/local/apache-maven-3.6.3/bin/mvn clean install -Ptest' sleep 2 println('打包完成!') sh 'scp -r /var/lib/jenkins/workspace/maven-gitlab-quartz/target/*.war root@tomcat:/usr/local/apache-tomcat-8.5.16/webapps ' sleep 1 println('部署完成!') } } } }
5.新建流水线项目
6.构建测试
出现问题1:
java 命令不识别
解决方案
1.重新设置环境变量
2.建立软连接
ln -s /usr/local/java/bin/java /usr/bin/java
3.构建测试
4.结果:成功解决问题
出现问题1
无法远程发送war包
解决方案
1.重新做免密交互
2.在本地测试shell环境测试
scp -r /var/lib/jenkins/workspace/maven-gitlab-quartz/target/quartz.war root@192.168.0.120:/test
构建测试:还是出现相同报错
分析原因:由于推送的公钥是root用户的,而Jenkins操作是Jenkins用户执行,所以用户权限不一样,导致的。
最终解决方案:
给Jenkins用户授权或使用root用户操作Jenkins,这里修改为使用root用户操作Jenkins(线上环境建议给Jenkins用户授权)
1.修改配置文件
vim /etc/sysconfig/jenkins
2.重启Jenkins(一定要重启)
systemctl restart jenkins
3.再次构建测试:
结果:成功解决问题
7.项目测试
后续优化:
1.由于我是使用实验环境部署的,线上环境需要做防火墙策略。
2.jenkinsfile 还可以添加构建后操作,比如发送邮件等。
3.发布项目部分,可以单独写一份脚本,内容包括备份war包,重启服务等。
总结
1.构建之前要安装好相关插件,准备好代码及gitlab
2.遇到构建报错不要慌,看报错日志,再去解决问题
- 通过Jenkins部署java项目
- Java后端开发光速入门教程(二)mac+windows SpringBoot快速开发部署Java Web项目
- Jenkins部署java项目实例02
- jenkins部署java项目
- linux环境下hudson/jenkins集成部署android项目--安装配置java环境
- jenkins部署java项目之小白的笔记
- java项目后端与web前端的线程部署
- java 浅析跨域问题以及如何使用Cors解决前后端分离部署项目所遇到的跨域问题
- Jenkins自动部署Maven +tomcat+linux环境java项目并自动部署到外网
- Jenkins部署java-maven项目
- docker jenkins gitlab 自动化部署(java python项目)
- 【Docker】「实战篇」开源项目docker化运维部署-后端java部署(七)
- jenkins的pipeline实现指定节点项目构建并部署代码至后端服务器
- 用docker安装部署Jenkins并构建Java项目
- Jenkins远程部署与部署Java项目
- java tomcat Jenkins自动化部署项目
- jenkins+tomcat+ant+java+linux 自动部署项目
- JAVA项目如何通过Docker实现Jenkins持续部署
- 百度BAE JAVA环境项目部署和调试
- java项目开发时热部署--jrebel+myeclipse配置