Jenkins部署java-maven项目
2018-03-19 15:49
465 查看
Jenkins部署java-maven项目
Jenkins是什么?
Jenkins是一个用java编写的开源的持续集成平台。首先理解几个概念
持续集成(Continuous Integration),在传统的软件开发中,项目的整合是在项目开发结束所有人提交了代码之后。而持续集成,是在项目的开发过程中不断地进行环境构建、功能的测试与集成。持续交付(Continuous Delivery),每次对代码进行了更改,会自动在当前环境中进行测试,然后提交给下一个更接近正式的工作环境进行测试。
持续部署(Continuous Deployment),每次对代码进行了更改,通过了所有的测试,都会将其部署到正式环境中。
我的理解:项目周期 = 程序开发 + 环境部署 + 功能测试 + 项目上线。一个完整的项目,从开发到上线要经过多次的测试、调优。一个多人开发的项目,如果项目开发与运维分开,那最后的项目整合一定是痛苦的。而持续集成的作用就是:在项目的开发过程中不断地进行环境构建、功能的测试与集成。也就是说开发与运维在同时进行,项目如果会出现问题是在第一时间发现的,而不是等到将要上线时一大堆问题才引面而来。
项目持续集成的流程图
多人开发的项目,代码提交(CHECK-IN)到版本库(SOURCE REPOSITORY)后,集成工具Jenkins能够进行: 环境的构建(BUILD) | 测试环境(TEST)的功能测试 | 过渡环境(STAGING)的功能测试 | 正式环境(PRODUCTION)的功能测试。这种流水线式的流程,能够保证项目中的BUG及时被发现(在正式环境测试之前)。
传统的项目开发周期
持续集成的项目开发周期
还想深入了解持续集成、持续交付、持续部署,可参考什么是持续集成
Jenkins的简要运用
环境配置
我的目的是:在虚拟机上用Jenkins部署java-maven项目。因此,需要先配置JDK,MAVEN环境。JDK配置
# 获取本机的位数 getconf LONG_BIT # 我的虚拟机:64位。下载的jdk版本为(Linux64 jdk-8u161-linux-x64.tar.gz),将压缩包放在(/usr/local/env/java8)下,进行解压 cd /usr/local/env/java8 tar -xzvf jdk-8u161-linux-x64.tar.gz # 编辑/etc/profile vim /etc/profile # 加入如下配置 export JAVA_HOME=/usr/local/env/java8/jdk1.8.0_161 export JRE_HOME=/usr/local/env/java8/jdk1.8.0_161/jre export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH export PATH=$PATH:$JAVA_HOME/bin # 保存退出后,使该配置文件即刻生效 source /etc/profile # 使用如下命令,能正确显示信息,说明环境配置成功 java -version
如果安装的版本不对,会报错如下:-bash: /usr/local/env/java8/jdk1.8.0_161/bin/java: /lib/ld-linux.so.2: bad ELF interpreter: 没有那个文件或目录,需要根据自己虚拟机位数选择正确的JDK安装包。
MAVEN配置
# 在官网下载(apache-maven-3.5.3-bin.tar.gz),将压缩包放在(/usr/local/env/maven),进行解压 cd /usr/local/env/maven tar -xzvf apache-maven-3.5.3-bin.tar.gz # 编辑/etc/profile vim /etc/profile # 加入如下配置 MAVEN_HOME=/usr/local/env/maven/apache-maven-3.5.3 export MAVEN_HOME export PATH=${PATH}:${MAVEN_HOME}/bin # 保存退出后,使该配置文件即刻生效 source /etc/profile # 使用如下命令,能正确显示信息,说明环境配置成功 mvn -version
出现如下页面说明环境部署成功:
安装Jenkins
# 导入最新版jenkins的资源 wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo # 获取最新版jenkins的密钥(证书错误的信息可以忽略) rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key # 安装jenkins yum install jenkins # 由于jenkins提供的服务默认暴露在8080端口,可能被占用。 # 修改配置文件 vim /etc/sysconfig/jenkins # 改为在8081端口提供服务 JENKINS_PORT="8081" # 修改jdk配置 vim /etc/init.d/jenkins # 在candidates=""中加入JAVA_HOME /usr/local/env/java8/jdk1.8.0_161/bin/java # 启动jenkins服务 service jenkins start
安装Jenkins成功后,Jenkins的目录结构如下:
功能模块 | 路径 |
---|---|
主目录 | /var/lib/jenkins |
war包 | /usr/lib/jenkins/jenkins.war |
配置文件 | /etc/sysconfig/jenkins |
启动脚本 | /etc/init.d/jenkins |
日志 | /var/log/jenkins |
第一次使用Jenkins,需要核对密钥,该密钥在上述路径的文件中。
将该密码复制粘贴到输入框中,点击继续。进入如下页面,直接选择安装推荐的插件
这些插件,都是协助jenkins进行项目的集成的。
插件安装成功后,后跳转到用户注册页面—ps:之前用的是管理员身份,注册成功后,请牢记身份和密码。
注册之后,重新启动jenkins
service jenkins stop service jenkins restart
再次访问jenkins_server_ip:8081,能够进入jenkins的主界面如下:
安装如下插件:
系统管理 > 管理插件 > 可选插件 > Maven Integration
在 系统管理 > 全局工具配置 中指定需要的JDK以及MAVEN(名称可以随便指定,这里为了增加可读性,分别配置如下: java8:/usr/local/env/java8/jdk1.8.0_161 , maven3.5.3:/usr/local/env/maven/apache-maven-3.5.3),这里的地址就是java8,maven3.5.3在虚拟机上安装的地址
JDK
MAVEN
部署项目—learnjenkins
在所有必需的插件安装成功后,点击新建一个maven项目如下:对该项目进行如下配置
General
源码管理(这里的URL是我在github上新建的一个用来学习jenkins的maven项目)
构建触发器(每次有代码提交到GitHub时,进行构建)
Build(构建时,进行打包)
其余的配置,可以根据实际需求进行改动。
点击应用。返回主界面,可以点击立即构建。点击控制台输出,构建成功后的日志如下:
构建成功后,再次修改代码如下:
3分钟后,发现Jenkins检测到了GitHub上项目版本的更新,并自动帮我们进行了构建。
总结
现在,已经实现了Jenkins帮助我们进行项目的自动构建。由于我们现在开发的项目是由SVN控制,并部署在Docker上。因此,下一步的计划是:
改用SVN进行版本管理
整合Jenkins与Docker
相关文章推荐
- Jenkins自动部署Maven +tomcat+linux环境java项目并自动部署到外网
- 利用apache+svn+jenkins+maven 实现java环境的自动化构建和部署(五)(网内首发超详细版)
- 使用jekins自动构建部署java maven项目(jdk1.7+tomcat7.0+jenkins2.19.3)
- Java Maven项目打包部署流程
- 【Jenkins教程二】基于Linux实现Jenkins+maven+tomcat的自动化构建部署项目
- 【团队-java-maven】在java项目中部署maven(1)论我为什么花了好几天,把我的普通web工程转成maven...
- 部署Maven项目到tomcat报错:java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderLi
- 关于maven多模块聚合项目部署等问题--<Jenkins>
- jenkins部署java项目之小白的笔记
- 持续集成工具集之四 Jenkins+Maven+Git+Tomcat 项目构建和自动部署
- 通过Jenkins部署java项目
- jenkins+maven+svn构建项目,及远程部署war包到tomcat上
- 部署Maven项目到tomcat报错:java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderLi
- jenkins + maven 远程部署多环境项目问题锦集
- 部署Maven项目到tomcat报错:java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderLi
- jenkins+maven+git+tomcat实现web项目的自动化部署
- 在Linux服务器Tomcat中部署转成Maven的JavaWeb项目
- Jenkins集成java非maven/ant项目的打包思路
- jdk+maven+svn+Tomcat+Jenkins项目部署发布
- jenkins+git+maven+shell构建自动化部署项目