持续集成环境的构建的意义

什么是可持续化?

持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件。

没有持续集成的项目构建过程

    1、  开发人员将代码提交到SVN/GIT等代码管理工具中;
    2、  运维/测试 从SVN/GIT 下载最新的代码本地测试;
    3、  运维/测试 通过mstsc或者其他方式 进入部署环境机器;
    4、  停止要更新的服务。
    5、  替换程序包;
    6、  启动服务。

没有持续集成的项目构建会有哪些诟病?
项目做模块集成的时候,发现很多接口都不通==>需要人为排查,浪费大量时间
需要手动去编译打包最新的代码==>构建过程不透明
发布代码,上线,基本靠手工==>大部分工作都是重复而繁琐的事情,也很浪费大量时间

有持续集成的项目构建过程
    1.开发人员将代码提交到SVN/GIT等代码管理工具中;

    2.没了。

有持续集成的项目构建会有哪些好处?
根据我们的需求可以节省大量时间重复而繁琐事情的时间,增加更多的测试及修改BUG时间。

搭建环境的前期准备及工具说明

本次运行环境:Windows 7 64位操作系统/Windows Server 2012 R2 Standard

使用工具及版本:jdk-8u45-windows-x64 

                        apache-tomcat-7.0.75                   

                        jenkins.war(版本Jenkins2.121.1)

                         maven 

                         svn

                         Git-2.18.0-64-bit

                         freeSSHd

                         putty-64bit-0.70-installer 

工具说明

jdk:JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。

jre:JRE是Java Runtime Environment缩写,指Java运行环境,是Sun的产品。运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。

apache-tomcat:Apache是web服务器,Tomcat是应用(java)服务器,它只是一个servlet容器,是Apache的扩展。 Apache和Tomcat都可以做为独立的web服务器来运行,但是Apache不能解释java程序(jsp,servlet)。

两者都是一种容器,只不过发布的东西不同:Apache是html容器,功能像IIS一样;Tomcat是jsp/servlet容器,用于发布jsp及java的,类似的有IBM的websphere、BEA的Weblogic,sun的JRun等等。

jenkins:Jenkins只是一个平台,真正运作的都是插件。这就是jenkins流行的原因,因为jenkins什么插件都有。它的前身是hudson,是基于Java开发的一种持续集成工具,用于监控程序重复的工作,Hudson后来被收购,成为商业版。后来创始人又写了一个jenkins,jenkins在功能上远远超过hudson。

maven:Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。

svn:SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的。

Git:Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。 [1]  Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

freeSSHd:SSH是一个用来替代TELNET、FTP以及R命令的工具包,主要是想解决口令在网上明文传输的问题。为了系统安全和用户自身的权益,推广SSH是必要的。 SSH是英文Secure Shell的简写形式。通过使用SSH,你可以把所有传输的数据进行加密,这样"中间人"这种攻击方式就不可能实现了,而且也能够防止DNS欺骗和IP欺骗。

putty:PuTTY是一个Telnet、SSH、rlogin、纯TCP以及串行接口连接软件。


搭建环境

JDK安装与环境变量配置

    https://jingyan.baidu.com/article/6dad5075d1dc40a123e36ea3.html

 apache-tomcat安装

     下载压缩版apache-tomcat-7.0.75,直接解压。

maven的安装 

    https://jingyan.baidu.com/article/4f7d5712a1306c1a21192746.html

svn安装

    不需要下载jenkins已经集成,可以jenkins中Global ToolConfiguration进行配置。

git安装

    https://jingyan.baidu.com/article/9f7e7ec0b17cac6f2815548d.html

freeSSHd安装

    https://jingyan.baidu.com/article/f7ff0bfc1ebd322e27bb1344.html

putty安装

    https://jingyan.baidu.com/article/90bc8fc8b9bca1f653640ca5.html

Jenkins安装

    我们本次用的是Jenkins.war,下载完成后将其放在我们之前解压的apache-tomcat-7.0.75下面的webapps中。

    下载地址:https://jenkins.io/download/


Jenkins启动

1.命令启动
打开命令提示符。在命令提示符下,浏览到 jenkins.war 文件存在的目录。运行以下命令:
D:\apache-tomcat-7.0.75\webapps -jar Jenkins.war

2.tomocat中启动
在命令提示符下,浏览到 tomcat 文件夹所在的目录。浏览到此文件夹中的 bin 目录,然后在文件中运行 start.bat 
D:\apache-tomcat-7.0.75\bin>startup.bat

Jenkins登陆
 浏览器输入 http://localhost:8080

    根据提示找到文件,使用Notepad++打开文件,将里面内容复制,粘贴在管理员密码栏上,点击继续。

不知道为什么,我这个安装会离线,但是不去管它,后期的插件可以根据我们的需求进行安装。

有些人可能会出现下面这种情况,也可以直接选择安装推荐的插件。

    我们这里点击跳过插件安装,进入创建管理员用户页面。


信息录入完成后,点击保存并继续。


点击Save and Finish,这样就完成了我们的Jenkins的启动配置。

    点击开始使用Jenkins,则正式进入到我们的Jenkins页面。

以后的访问,我们直接输入我们之前创建的管理员用户进行登录即可。


Jenkins插件下载

我们由于某些原因跳过了插件的安装,我们这边先对我们本次需要用到的功能的插件进行下载。

如果需要更换Jenkins主目录,需要先看Jenkins系统配置更改主目录再进行插件的下载

点击按钮,进入管理Jenkins页面。


点击 按钮,进入插件管理页面。

点击按钮,进入可选插件页面。


   

如果这时候我们会发现,没有让我们下载的插件列表,点击按钮,还出现了报错页面。


    我们进行以下操作,如果有插件列表则忽视以下操作。

    通过之前讲解的步骤,重新进入插件管理页面,点击按钮,进入设置页面。


在下方有一个升级站点的输入框,


将内容替换为

http://mirror.xmission.com/jenkins/updates/update-center.json

点击按钮,再点击按钮。

这回我们再点击插件按钮,进入插件下载页面。


本次我们需要下载的插件为:

Subversion Revert    GitLab  Pipeline Maven Integration  Maven Integration 

Publish Over SSH      Gitlab Hook


Jenkins系统配置

点击按钮,点击进入系统配置页面。

1.更改主目录


主目录显示的是 C:\Users\Administrator\.jenkins 这是一个默认地址,我们可以更换主目录。

在环境变量中新增系统变量 

 变量名 JENKINS_HOME

变量值:D:\apache-tomcat-7.0.75\webapps\jenkins 

我这里做的例子,你可以放在你想放在的目录中。

配置好后,重启服务。


此时,登陆页面需要我们再去文件中找到密码粘贴上去。

因为我们更换了主目录,相当于进行了初始化,所以插件还是需要重新下载。

再次进入系统页面,我们可以看到主目录已经进行了更换。



2.Publish over SSH 配置

2.1 SSH的配置

      按照之前的方法,我们已经安装好SSH,右键图标,选择管理员身份运行。
    
配置一个users,选择password stored as SHA1 hash



配置完成后,重启SSH,然后再server Status 中启动我们的SSH Server

2.2  Publish over SSH 配置


这里的内容我们不用去动。

  


添加一个SSH Servies,按照下图配置,返回连接正确。





Jenkins全局工具配置

在管理Jenkins页面点击按钮进入全局工具配置页面。


1.JDK配置

点击按钮,进入配置页面,选择我们配置的环境变量。


2.Git配置

点击,进入配置页面,选择我们的git安装目录。


3.Maven配置

点击,进入配置页面。


此外,页面上方的maven配置按照图片选择,目录为maven的setting.xml




Jenkins+git+maven简单构建

构建理想目的:当我们将代码进行提交时,Jenkins会监听代码版本管理系统(GIT/SVN等),如果有代码更新,会自动进行将我们提交完成的代码,打包发布到服务器上,服务停止,原有项目进行备份,新打包的项目放到指定位置,重启服务。

由于时间原因,除了监听代码版本,其他的会给大家实现,监听后期还会写一个博客,欢迎大家一起研究。

1.创建maven项目

在Jenkins首页,点击按钮,新建一个任务名称叫maven-test的maven项目。


2.配置maven项目

进入项目,点击按钮,进入项目的配置页面。

2.1Git配置

因为我们本次用的git,所以源码管理选择git,Repository URL为我们项目Git地址,Credentials为本地Git生成的id_rsa的key。


2.1.1 Credentials的配置

2.1.1.1 SSH公钥的生成
我们之前已经安装完Git,打开git bash,在控制台中输入以下命令。
$ ssh-keygen -t rsa -C "your_email@xx.com"
一路回车生成SSH公钥。
公钥默认储存在账户的主目录下的 ~/.ssh 目录。进去看看:
2.1.1.2 添加凭证

点击按钮,进入添加凭证页面。

2.1.1.3 选取Pom

设置完成后,点击应用及保存按钮,回到项目页面。



2.1.1.4 测试连接结果

测试是否连接成功,点击按钮,进行测试。


点击按钮,可以查看构建的进程。

点击可以查看详细输出过程及结果。

2.2 部署脚本配置

2.2.1 bat脚本编写

脚本编写主要实现服务停止,将原有webappsa下文件按照时间进行备份,删除webappsa文件夹,创建webappsa文件夹,将新生成的项目放在新创建的webappsa下,启动服务。

其中因为tomocat中的shutdown.bat有时不靠谱,直接进行的强杀。

2.2.1 bat脚本配置

在Post Steps中选择Run only if build succeeds or is unstable 。


点击 按钮,选择 ,进入SSH设置页面。

这样我们就配置完成了,点击应用及保存按钮,回到项目页面。

进行项目的构建,点击查看进程。


点击按钮查看详细过程及结果。



可以看到服务被我们强杀之后,原有项目进行了一个备份,新项目重新部署后,服务进行了重启,这样我们就简单的完成了本次构建。


Jenkins+svn+maven简单构建

构建的目的及实现的目标跟上面的一样,只不过换了一个代码管理软件Git换成了SVN,所以我这里主要讲一下如何配置SVN。

svn配置

新建一个maven项目,源码管理我们选择Subversion。


再点击Credenyials的按钮,添加我们的SVN账号。


添加完成后,选择我们刚才添加的账号。

其中pom.xml在我们获取的文件夹下,所以这里不需要修改。


点击应用及保存,返回项目页面。


点击按钮,开始项目的构建。


构建成功后查看构建结果,控制台输出内容显示成功。




Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐