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://blog.51cto.com/13760351/2381229
注意:
安装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 " Jenkins--pipline 流水线部署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 Jenkins--pipline 流水线部署Java后端项目
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
Jenkins--pipline 流水线部署Java后端项目
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.新建流水线项目 Jenkins--pipline 流水线部署Java后端项目
Jenkins--pipline 流水线部署Java后端项目
Jenkins--pipline 流水线部署Java后端项目
6.构建测试 出现问题1: java 命令不识别
Jenkins--pipline 流水线部署Java后端项目
解决方案 1.重新设置环境变量 Jenkins--pipline 流水线部署Java后端项目
2.建立软连接 ln -s /usr/local/java/bin/java /usr/bin/java
3.构建测试 Jenkins--pipline 流水线部署Java后端项目
4.结果:成功解决问题 出现问题1 无法远程发送war包
Jenkins--pipline 流水线部署Java后端项目
解决方案 1.重新做免密交互 2.在本地测试shell环境测试 scp -r /var/lib/jenkins/workspace/maven-gitlab-quartz/target/quartz.war root@192.168.0.120:/test
Jenkins--pipline 流水线部署Java后端项目
构建测试:还是出现相同报错
分析原因:由于推送的公钥是root用户的,而Jenkins操作是Jenkins用户执行,所以用户权限不一样,导致的。
最终解决方案: 给Jenkins用户授权或使用root用户操作Jenkins,这里修改为使用root用户操作Jenkins(线上环境建议给Jenkins用户授权)
1.修改配置文件 vim /etc/sysconfig/jenkins
Jenkins--pipline 流水线部署Java后端项目
2.重启Jenkins(一定要重启) systemctl restart jenkins
3.再次构建测试: Jenkins--pipline 流水线部署Java后端项目
结果:成功解决问题
7.项目测试 Jenkins--pipline 流水线部署Java后端项目
Jenkins--pipline 流水线部署Java后端项目
后续优化: 1.由于我是使用实验环境部署的,线上环境需要做防火墙策略。 2.jenkinsfile 还可以添加构建后操作,比如发送邮件等。 3.发布项目部分,可以单独写一份脚本,内容包括备份war包,重启服务等。
总结 1.构建之前要安装好相关插件,准备好代码及gitlab 2.遇到构建报错不要慌,看报错日志,再去解决问题
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Laravel 解决composer相关操作提示php相关异常的问题
- laravel 实现根据字段不同值做不同查询
- php实现获取近几日、月时间示例
- PHP+redis实现微博的拉模型案例详解
- PHP实现微信申请退款功能
- Laravel+Intervention实现上传图片功能示例
- 关于laravel框架中的常用目录路径函数
- Java byte数组操纵方式代码实例解析
- php桥接模式应用案例分析
- PHP设计模式之中介者模式(Mediator Pattern)入门与应用案例详解
- laravel 出现command not found问题的解决方案
- PHP怎么搭建百度Ueditor富文本编辑器
- 使用composer命令加载vendor中的第三方类库 的方法
- PHP批斗大会之缺失的异常详解
- Laravel 6.2 中添加了可调用容器对象的方法