自动化部署(一) Jenkins01
主要学习内容
1.持续集成、部署、交付
2.WEB工程的自动化部署实践(提交代码到SVN后,自动触发项目构建部署)
一、持续集成、部署、交付
1.持续部署:关注项目部署到服务器后可以运行,为下一步测试环节或生产运行、用户使用做好准备
2.持续集成:关注在于今早发现项目整体运行问题,尽早解决
3.持续交付:小版本不断进行快速迭代开发,不断收集用户信息,用最快的速度改进优化
总体目标:降低风险、减少重复过程(重复过程交予机器自动完成)、任何时间地点都可生成部署软件、增强项目的可见性
二、WEB工程的自动化部署实践
1.传统构建项目流程图
2.实践目标
第一步:环境准备(使用centOS 7)
一台svn服务器192.168.31.128、一台部署应用的tomcat服务器192.168.31.141、一台tomcat+maven+jenkins服务器 192.168.31.132
1.svn服务器准备
安装: yum install -y subversion
配置svn服务器与创建代码仓库:
mkdir -p /var/svn/apple
cd /var/svn/
svnadmin create apple
cd /var/svn/apple/conf/
authz:负责账号权限的管理,控制账号是否读写权限
passwd:负责账号和密码的用户名单管理
svnserve.conf:svn服务器配置文件
修改版本库配置:vi /var/svn/apple/conf/svnserve.conf
修改版本库权限管理:vi /var/svn/apple/conf/authz,其中自定义用户名,并设置权限为读写,其他用户无权限
修改账户名密码:vi /var/svn/apple/conf/passwd,在末尾添加账户名/密码
juwenzhe = xxxxx(密码)
启动svn服务:svnserve -d -r /var/svn
注:svn所在服务器的防火墙要么关闭,要么做端口映射,否则会遇到拒绝连接情况
使用tortoiseSVN客户端访问测试:
2.一台部署应用的tomcat的服务器
参考:Tomcat8如何正确进入Manager App和Host Manager页面
3.一台tomcat+maven+jenkins服务器
安装 maven:CentOS 7.2 安装 Maven
安装 tomcat:Tomcat8如何正确进入Manager App和Host Manager页面
将jenkins.war(下载地址:http://ftp-nyc.osuosl.org/pub/jenkins/war/2.167/jenkins.war)放到 /juwenzhe/apache-tomcat-8.5.38/webapps路径下
修改tomcat8的配置 vi /juwenzhe/apache-tomcat-8.5.38/conf/server.xml
启动tomcat
第二步:jenkins使用
1.访问 192.168.31.132:8080/jenkins,解锁jenkins,查看密码命令:cat /root/.jenkins/secrets/initialAdminPassword
2.联网安装插件,等待一段时间
3.安装“部署插件”,Jenkins -> 【插件管理】->【系统设置】,勾选【deploy to container】,点击【直接安装】
4.jenkins初始化设置
Jenkins -> 【系统管理】 -> 【全局安全设置】
Jenkins -> 【系统管理】 -> 【全局工具设置】
[[email protected] apache-maven-3.6.0]# echo $JAVA_HOME
/usr/src/jdk1.8.0_191
[[email protected] apache-maven-3.6.0]# echo $MAVEN_HOME
/juwenzhe/apache-maven-3.6.0
图上:hello为项目名称
5.在Eclipse中新建hello工程
生成web.xml文件:
上传代码到svn,前提Eclipse安装好SVN插件:
6.进入Jenkins->apple->【源码管理】配置Jenkins拉取的源码地址与版本
7.进入Jenkins->apple->【构建触发器】配置触发Jenkins自动化构建的URL
8.进入Jenkins->apple->【构建】配置Jenkins调Maven插件所需的构建命令
9.进入Jenkins->apple->【构建后操作】配置触发Jenkins调用Maven插件自动构建后的操作,即部署的目标服务器配置
10.在svn服务器上,项目源码所在的仓库进行,提交代码后的触发操作(给Jenkins发自动构建通知)配置:
第三步:测试jenkins自动构建
jenkins -> apple -> 【立即构建】
访问:http://192.168.31.141:8080/apple/index.jsp确保项目启动
可以修改代码,并提交检验是否可以触发一系列Jenkins的自动调用流程
坑1:java.lang.NoClassDefFoundError: Could not initialize class sun.text.normalizer.NormalizerImpl
原因:原来把windows的maven的settings文件直接拷贝到centos7上,maven的编译jdk版本过旧,或者settings文件中的配置出错
解决:还原settings文件,其中的配置一项项的改。有时候省事会招来更烦的事。
坑2:java.net.NoRouteToHostException: 没有到主机的路由 (Host unreachable)
原因:systemctl status firewalld
解决:学习环境下,关闭防火墙
坑3:org.codehaus.cargo.container.ContainerException: Failed to redeploy [/root/.jenkins/workspace/apple/target/hello-demo-0.0.1-SNAPSHOT.war]
at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:192)
at hudson.plugins.deploy.CargoContainerAdapter.deploy(CargoContainerAdapter.java:77)
at hudson.plugins.deploy.CargoContainerAdapter$DeployCallable.invoke(CargoContainerAdapter.java:147)
at hudson.plugins.deploy.CargoContainerAdapter$DeployCallable.invoke(CargoContainerAdapter.java:117)
at hudson.FilePath.act(FilePath.java:1078)
at hudson.FilePath.act(FilePath.java:1061)
at hudson.plugins.deploy.CargoContainerAdapter.redeploy(CargoContainerAdapter.java:114)
at hudson.plugins.deploy.PasswordProtectedAdapterCargo.redeploy(PasswordProtectedAdapterCargo.java:93)
at hudson.plugins.deploy.DeployPublisher.perform(DeployPublisher.java:64)
at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:45)
at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:744)
at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:690)
at hudson.model.Build$BuildExecution.post2(Build.java:186)
at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:635)
at hudson.model.Run.execute(Run.java:1835)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
at hudson.model.ResourceController.execute(ResourceController.java:97)
at hudson.model.Executor.run(Executor.java:429)
Caused by: java.net.ConnectException: 拒绝连接 (Connection refused)
原因:tomcat的用户配置有问题
解决:Tomcat8如何正确进入Manager App和Host Manager页面
Jenkins使用
参考文献:
1.Jenkins的详细安装及使用
2.Jenkins使用教程
3.Jenkins使用