Jenkins工具的使用(持续更新中...)-亲测

Jenkins

  • 一、Jenkins
    • 1、概念
    • 2、好处
  • 二、JavaEE项目部署方式对比
    • 1、手动部署
    • 2、自动化部署
  • 三、Jenkins+SVN持续集成环境的搭建
    • 1、环境组成
    • 2、CentOS上安装Maven
    • 3、jenkins配置以及插件安装
    • 4、新建工程

一、Jenkins

1、概念

持续部署:关注点在于项目功能部署至服务器后可以运行,为下一步测试环节或最终用户正式使用做准备。
持续集成:关注点在于尽早发现项目整体运行问题,尽早解决。
持续交付:关注点在于研发团队的最新代码能够尽快让最终用户体验到。

2、好处

降低风险:一天中进行多次的集成,并做相应的测试,这样有利于检查缺陷,了解软件的健康状况,减少假定。
减少重复过程:产生重复过程有两个原因。一个是编译、测试,打包、部署等等固定操作都必须做,无法省略任何一个环节;另一个是一个缺陷没有及时发现,有可能导致后续代码的开发方向是错误的,要修复问题需要重新编写受影响的所有代码。而Jenkins等持续集成工具既可以把构建环节从手动完成转换为自动化完成,又可以通过增加集成频次尽早发现缺陷避免方向性错误。
任何时间、任何地点生成可部署的软件。
增强项目的可见性:持续集成能让开发者注意到趋势并进行有效的决策。有效的决策,持续集成系统为项目构建状态和品质指标提供了及时的信息,有些持续集成系统可以报告功能完成度和缺陷率;注意到趋势,由于经常集成,可以看到一些趋势,如构建成功或失败,总体品质以及其他的项目信息。
建立团队对开发产品的信心:持续集成可让开发者清楚知道每一次构建的结果,知道对团建的改动造成了哪些影响,结果如何。

二、JavaEE项目部署方式对比

1、手动部署

  • 正如下图所示,手动部署在开发者提交或推送代码到版本控制服务器后,需要从版本控制服务器中检出最新的全部源码,打成war包,放入tomcat应用服务器,开启tomcat服务器,访问,一系列操作均需人工完成。
    Jenkins工具的使用(持续更新中...)-亲测_第1张图片

2、自动化部署

  • 正如下图所示,搭建该自动化部署系统,需要三个部分组成
  • 版本控制子系统:由Subversion/Git服务器构成,需要为开发项目创建对应版本库,然后编写钩子程序。
  • 应用发布子系统:由JDK、Tomcat组成,用于项目的部署。
  • 持续集成子系统:由JDK、Maven、Tomcat和运行在tomcat中jenkins的项目。
    Jenkins工具的使用(持续更新中...)-亲测_第2张图片
  • 理解:既然分为三个部分,下面的讲解中也会分为三个部分一一讲解。该图中体现的是开发者提交或推送完代码后通过事先写好的钩子程序去通知持续集成子系统调用Maven插件去打包通过SVN/Git插件获取版本控制子系统中的最新源码,然后持续集成子系统再调用Deploy to web container插件将打包好的war部署到应用发布子系统中。相较于手动部署来说,这样开发人员只要事先完成一些Jenkins的一些配置,即可只要一点击提交或推送代码就能自动完成打包,部署到服务器,用户和测试人员就能马上看到效果。

三、Jenkins+SVN持续集成环境的搭建

1、环境组成

  • SVN子系统和应用发布子系统可参考前面的教程,本节主要介绍怎么使用Jenkins。
  • 搭建持续集成子系统的虚拟机可直接复制前面已搭建的应用发布子系统,如果出现网络问题,可参考前面的CentOS中常见问题的解决办法。
  • 这样持续集成子系统就已经安装好了JDK和Tomcat,接下来只需要安装Maven和将Jenkins的war包放入Tomcat服务器运行即可。

2、CentOS上安装Maven

  • 通过上传工具WinSCP将Maven压缩包上传到CentOS。
  • Maven Linux64位版本下载地址
  • 提取码:uq4m
  • 解压Maven到/usr/local下,删除本文件夹的压缩包,进入/usr/local目录下,修改文件夹apache-maven-3.5.0-bin名称为maven。
解压:tar -zxf apache-maven-3.5.0-bin.tar.gz -C /usr/local
删除压缩包:rm -rf apache-maven-3.5.0-bin.tar.gz
进入/usr/local目录:cd /usr/local
修改apache-maven-3.5.0-bin文件夹名称:mv apache-maven-3.5.0-bin maven
  • 编辑maven安装目录下conf文件夹下的settings.xml,因为只做服务器使用,所以只需修改远程仓库地址,默认本地仓库在/root/.m2/repository目录。

  • 配置远程仓库路径为阿里云的maven仓库,在开发项目时,本地仓库找不到,就去此仓库在线下载到本地仓库。
    Jenkins工具的使用(持续更新中...)-亲测_第3张图片

    <mirror>
        <id>nexus-aliyun</id>
    	<mirrorOf>*</mirrorOf>
    	<name>Nexus aliyun</name>
    	<url>http://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror> 
    
  • 配置环境变量,保存退出。

  • vi /etc/profile
    Jenkins工具的使用(持续更新中...)-亲测_第4张图片

  • 重新加载/etc/profile配置文件,使配置生效。

  • source /etc/profile

  • 测试是否安装成功

  • 返回版本信息:mvn -version
    Jenkins工具的使用(持续更新中...)-亲测_第5张图片

3、jenkins配置以及插件安装

  • 在上传之前,先推荐一个开源镜像网站,清华大学开源软件镜像站,这样不需要从国外网站下载,那样下载速度很慢。

  • 搜索jenkins,进入下载目录,主要注意三个文件夹。
    Jenkins工具的使用(持续更新中...)-亲测_第6张图片
    Jenkins工具的使用(持续更新中...)-亲测_第7张图片

  • jenkins.war包下载地址,此地址可以通过进入war/latest中得到。

  • 通过上传工具WinSCP将jenkins.war包上传到CentOS的tomcat\webapps下。

  • 修改tomcat\conf\server.xml文件,修改如下,在此位置添加URIEncoding=“UTF-8”。
    Jenkins工具的使用(持续更新中...)-亲测_第8张图片

  • 进入bin目录,启动tomcat,访问http://虚拟机IP地址:8080/jenkins。

  • 出现如下页面,虚拟机中命令行输入cat /root/.jenkins/secrets/initialAdminPassword查看admin用户的密码,复制密码粘贴到此处。
    Jenkins工具的使用(持续更新中...)-亲测_第9张图片

  • 选择插件来安装,全部不勾选,因为为了保证所有人均可安装所有插件,下面将介绍一种超好用的方法来安装插件,此方法是通过查资料得出,现在用于分享。
    Jenkins工具的使用(持续更新中...)-亲测_第10张图片
    Jenkins工具的使用(持续更新中...)-亲测_第11张图片

  • 为了方便,在此使用admin账号继续,后面可以再创建账号,所以这里跳过即可。
    Jenkins工具的使用(持续更新中...)-亲测_第12张图片

  • 实例配置照样跳过,后面照样可以在管理界面配置,不需要着急。
    Jenkins工具的使用(持续更新中...)-亲测_第13张图片

  • 开始使用jenkins,进入jenkins的管理界面。
    Jenkins工具的使用(持续更新中...)-亲测_第14张图片
    Jenkins工具的使用(持续更新中...)-亲测_第15张图片

  • 进入系统管理,进行全局安全配置。此处为了方便学习以及快速入门,设置所有用户均可登录和任何用户可做任何事,应用保存设置。当然生产情况下绝对不允许这样做。
    Jenkins工具的使用(持续更新中...)-亲测_第16张图片
    Jenkins工具的使用(持续更新中...)-亲测_第17张图片
    Jenkins工具的使用(持续更新中...)-亲测_第18张图片

  • 进入系统管理,进行全局工具配置。如果jdk和maven是按照前面的教程安装,则安装与下面相同,如果选择不同了安装位置,则自己一定得推断一下内容再填写。
    Jenkins工具的使用(持续更新中...)-亲测_第19张图片
    Jenkins工具的使用(持续更新中...)-亲测_第20张图片

  • 进入系统管理,进行插件的下载安装。
    Jenkins工具的使用(持续更新中...)-亲测_第21张图片

  • 先修改插件下载镜像地址,保存

  • https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

在这里插入图片描述
Jenkins工具的使用(持续更新中...)-亲测_第22张图片

  • 重启tomcat服务器确保配置生效。
  • 安装需要的插件,以安装Folders为例。

Jenkins工具的使用(持续更新中...)-亲测_第23张图片
Jenkins工具的使用(持续更新中...)-亲测_第24张图片

  • 如果在安装过程中,出现失败没关系,多试几次就行。
  • 需要安装的插件
    Locale, Folders, OWASP Markup Formatter, Build Timeout, Credentials Binding, Timestamper, Workspace Cleanup, Ant, Gradle, ==Maven Integration==, Pipeline, GitHub Branch Source, Pipeline: GitHub Groovy Libraries, Git, Subversion, SSH Slaves, Matrix Authorization Strategy, PAM Authentication, LDAP, Email Extension, GitLab, Ansible, SaltStack, Parameterized Trigger, Build Pipeline, Build Authorization Token Root, Maven Invoker, Deploy to container

4、新建工程

  • 创建工程
    Jenkins工具的使用(持续更新中...)-亲测_第25张图片

  • 指定工程名称和工程类型
    Jenkins工具的使用(持续更新中...)-亲测_第26张图片

  • 源码管理
    Jenkins工具的使用(持续更新中...)-亲测_第27张图片

  • 构建
    Jenkins工具的使用(持续更新中...)-亲测_第28张图片

  • 构建后操作
    Jenkins工具的使用(持续更新中...)-亲测_第29张图片
    Jenkins工具的使用(持续更新中...)-亲测_第30张图片

  • 立即构建
    Jenkins工具的使用(持续更新中...)-亲测_第31张图片
    Jenkins工具的使用(持续更新中...)-亲测_第32张图片
    Jenkins工具的使用(持续更新中...)-亲测_第33张图片
    Jenkins工具的使用(持续更新中...)-亲测_第34张图片

  • 测试,访问应用发布子系统中tomcat的路径,查看该项目是否可以访问并是否显示对应的内容
    Jenkins工具的使用(持续更新中...)-亲测_第35张图片

  • 构建触发器,按照下面依葫芦画瓢

    • 远程触发的基本原理是SVN服务器给jenkins项目特定的URL地址请求,但必须以请求参数的形式携带一个特定值,这个特定值就是这里的“身份证令牌”
    • 比如该项目的触发地址为:http://192.168.25.142/jenkins/job/e3mall-manager-web/build
    • 身份验证令牌为:E3MALL_TOKEN
    • 那么最终的访问地址为:http://192.168.25.142/jenkins/job/e3mall-manager-web/build?token=E3MALL_TOKEN
    • 浏览器只要访问该地址就会触发构建,所以接下来的工作就是编写SVN的钩子程序,当开发者提交或推送代码时,就访问该地址,也就可以达到自动触发构建的目的。
  • Linux的curl命令

    • Linux的curl命令用来发送http请求

      • -X 参数:指定请求方式
      • -v 参数:显示响应结果
      • -u 参数:携带用户名/密码
      • -H 参数:携带请求消息头信息
    • curl -X post -v -u [Jenkins 用户名]:[Jenkins 密码] -H "请求消息头信息" http://[服务器 IP 地址]:[服务器端口号]/jenkins/job/[Jenkins 项目名称]/build?token=[身份验证令牌]
      
  • 编写钩子程序

    • 钩子程序由post-commit.tmpl复制得到,注意不要使用任何扩展名

    • mv post-commit.tmpl post-commit
      
    • 使用chmod命令设置为可执行权限

    • chmod 755 post-commit
      
    • 把原有内容注释掉,添加curl命令

  • 测试,从SVN服务器检出项目,随便修改一处,然后提交,此时查看jenkins程序是否在构建项目,构建完成之后访问应用发布服务器地址查看该项目是否发生相应变化

  • 补充:如果jenkins服务器从SVN服务器下载代码不是最新版的情况,那么久在SVN服务器的URL地址后面加上@HEAD强制要求下载最新版

你可能感兴趣的:(SVN,Tomcat,Linux,Jenkins,maven)