ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Jenkins--pipline 流水线部署Java后端项目

2020-09-02 12:51:17  阅读:256  来源: 互联网

标签:bin Java java -- maven usr Jenkins root


写在前面

之前我的博客里面写过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
"

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.构建测试

出现问题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后端项目

结果:成功解决问题

5.项目测试

Jenkins--pipline 流水线部署Java后端项目

Jenkins--pipline 流水线部署Java后端项目

后续优化:

1.由于我是使用实验环境部署的,线上环境需要做防火墙策略。
2.jenkinsfile 还可以添加构建后操作,比如发送邮件等。
3.发布项目部分,可以单独写一份脚本,内容包括备份war包,重启服务等。

总结

1.构建之前要安装好相关插件,准备好代码及gitlab
2.遇到构建报错不要慌,看报错日志,再去解决问题

标签:bin,Java,java,--,maven,usr,Jenkins,root
来源: https://blog.51cto.com/13760351/2527263

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有