在说CI/CD之前,作者先阐述一下在没有这些东西之前,Java开发基本流程。这也基本能暴露出作者的年纪了。
在作者刚毕业的时候,在一家小企业从事Java开发。工作的流程就是:
1、Eclipse -> new Project/web Project,jar放在libs里面。
2、svn
3、Eclipse -> export war,放在tomcat的webapps下,启动bin/start.sh。
作者当初完全没觉得有问题。现在想想,简直就是浪费时间。至于为什么浪费时间,作者下面会一一道来。
question1:构建工程结构麻烦,现在通过maven/gradle可以简单快速的构建一个完美的多模块工程,也不用四处下jar放在libs下,直接通过三维坐标的形式,maven/gradle会自动进行jar的下载工作。
question2:多人共同开发时,用svn经常出现文件冲突。现在通过git,每个人都有一个自己独立的分支。
question3:code冲突了,也能打成war,每次变动code,都得人工重新打包。启动一个tomcat没问题,如果机器多了,启动多个tomcat,耗时耗力。
CI/CD持续集成/持续部署,就是提高开发者的工作效率,避免人日的浪费。Jenkins就是一款很好的实现了代码的自动构建、测试、集成部署的工具。将开发人员从繁重而繁杂的非核心工作解脱。
一、利用gradle + git 构建一个工程
这是作者利用gradle构建的一个多业务模块工程。account-api就是一个普通的java工程,account-server是一个web工程。其中包含一个controller代码:
最后,把代码通过git传到服务器上。
2、通过jenkins来实现自动构建、自动发布。
2.1、从jenkins官网下载一个jenkins.war到本地,启动jenkins.war即可,作者是通过如下方式启动:java -jar jenkins.war --httpPort=8082。然后通过localhost:8082即可访问Jenkins的管理页面。首次登录是需要输入密码的,该密码在Jenkins的启动日志里面可以查到。最后的管理界面如下:
2.2、环境配置
系统管理——>全局配置——>配置jdk、git、gradle
系统管理——>插件管理——>安装各种插件:Deploy to container Plugin。其他的插件一般在初始化jenkins的时候已安装成功。
2.3、创建任务
构建:构建项目,打包
构建后操作:构建成功后,把项目部署到tomcat容器
注意:a、要在tomat/conf/tomcat-users.xml中添加用户
b、tomat要事先启动
2.4、构建任务
2.5、访问服务
两个tomcat的访问姿势:
2.6、jenkins自动拉取code,可以拉取code的commit记录,直观的显示code的动态。避免人工打包时,无法感知code的变更记录。
至此,通过jenkins,实现自动拉取代码,自动构建代码,自动发布代码。为开发人员节省了很多时间取处理核心工作。