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

什么是可持续化?


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



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


    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




jenkins 中如何设置临时node环境变量_Jenkins



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



jenkins 中如何设置临时node环境变量_Jenkins_02



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


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

jenkins 中如何设置临时node环境变量_主目录_03


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



jenkins 中如何设置临时node环境变量_Jenkins_04




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

jenkins 中如何设置临时node环境变量_Jenkins_05


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


jenkins 中如何设置临时node环境变量_主目录_06


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


jenkins 中如何设置临时node环境变量_Jenkins_07

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

jenkins 中如何设置临时node环境变量_Jenkins_08


Jenkins插件下载

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

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

点击

jenkins 中如何设置临时node环境变量_Jenkins_09

按钮,进入管理Jenkins页面。

jenkins 中如何设置临时node环境变量_Jenkins_10



点击

jenkins 中如何设置临时node环境变量_主目录_11

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


jenkins 中如何设置临时node环境变量_主目录_12


点击

jenkins 中如何设置临时node环境变量_主目录_13

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

jenkins 中如何设置临时node环境变量_主目录_14

   

如果这时候我们会发现,没有让我们下载的插件列表,点击

jenkins 中如何设置临时node环境变量_tomcat_15

按钮,还出现了报错页面。

jenkins 中如何设置临时node环境变量_tomcat_16

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

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

jenkins 中如何设置临时node环境变量_Jenkins_17

按钮,进入设置页面。

jenkins 中如何设置临时node环境变量_Jenkins_18

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

jenkins 中如何设置临时node环境变量_主目录_19

将内容替换为

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

点击

jenkins 中如何设置临时node环境变量_Jenkins_20

按钮,再点击

jenkins 中如何设置临时node环境变量_主目录_21

按钮。

这回我们再点击

jenkins 中如何设置临时node环境变量_主目录_22

插件按钮,进入插件下载页面。

jenkins 中如何设置临时node环境变量_Jenkins_23

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

Subversion Revert    GitLab  Pipeline Maven Integration  Maven Integration 


Publish Over SSH      Gitlab Hook




Jenkins系统配置

点击

jenkins 中如何设置临时node环境变量_Jenkins_09

按钮,点击

jenkins 中如何设置临时node环境变量_tomcat_25

进入系统配置页面。

1.更改主目录

jenkins 中如何设置临时node环境变量_主目录_26


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

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

 变量名 JENKINS_HOME

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

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

配置好后,重启服务。

jenkins 中如何设置临时node环境变量_Jenkins_27

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

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

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

jenkins 中如何设置临时node环境变量_主目录_28


2.Publish over SSH 配置

2.1 SSH的配置


      按照之前的方法,我们已经安装好SSH,右键

jenkins 中如何设置临时node环境变量_Jenkins_29

图标,选择管理员身份运行。

    

jenkins 中如何设置临时node环境变量_tomcat_30


配置一个users,选择password stored as SHA1 hash


jenkins 中如何设置临时node环境变量_Jenkins_31


jenkins 中如何设置临时node环境变量_tomcat_32


jenkins 中如何设置临时node环境变量_tomcat_33


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

jenkins 中如何设置临时node环境变量_tomcat_34

2.2  Publish over SSH 配置


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

  

jenkins 中如何设置临时node环境变量_tomcat_35



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

jenkins 中如何设置临时node环境变量_Jenkins_36




Jenkins全局工具配置

在管理Jenkins页面点击

jenkins 中如何设置临时node环境变量_tomcat_37

按钮进入全局工具配置页面。

jenkins 中如何设置临时node环境变量_Jenkins_38

1.JDK配置

点击

jenkins 中如何设置临时node环境变量_Jenkins_39

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

jenkins 中如何设置临时node环境变量_主目录_40

2.Git配置

点击

jenkins 中如何设置临时node环境变量_Jenkins_41

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

jenkins 中如何设置临时node环境变量_主目录_42

3.Maven配置

点击

jenkins 中如何设置临时node环境变量_Jenkins_43

,进入配置页面。

jenkins 中如何设置临时node环境变量_主目录_44

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

jenkins 中如何设置临时node环境变量_主目录_45


Jenkins+git+maven简单构建

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

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

1.创建maven项目

在Jenkins首页,点击

jenkins 中如何设置临时node环境变量_tomcat_46

按钮,新建一个任务名称叫maven-test的maven项目。

jenkins 中如何设置临时node环境变量_Jenkins_47

2.配置maven项目

进入项目,点击

jenkins 中如何设置临时node环境变量_主目录_48

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

jenkins 中如何设置临时node环境变量_tomcat_49

2.1Git配置

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

jenkins 中如何设置临时node环境变量_tomcat_50

2.1.1 Credentials的配置

2.1.1.1 SSH公钥的生成


我们之前已经安装完Git,打开git bash,在控制台中输入以下命令。


$ ssh-keygen -t rsa -C "your_email@xx.com"


一路回车生成SSH公钥。


公钥默认储存在账户的主目录下的 ~/.ssh 目录。进去看看:


jenkins 中如何设置临时node环境变量_Jenkins_51

2.1.1.2 添加凭证

点击

jenkins 中如何设置临时node环境变量_tomcat_52

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

jenkins 中如何设置临时node环境变量_Jenkins_53

2.1.1.3 选取Pom


jenkins 中如何设置临时node环境变量_Jenkins_54

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

jenkins 中如何设置临时node环境变量_tomcat_55


2.1.1.4 测试连接结果

测试是否连接成功,点击

jenkins 中如何设置临时node环境变量_主目录_56

按钮,进行测试。

jenkins 中如何设置临时node环境变量_主目录_57

点击

jenkins 中如何设置临时node环境变量_tomcat_58

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

jenkins 中如何设置临时node环境变量_tomcat_59

点击

jenkins 中如何设置临时node环境变量_Jenkins_60

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

jenkins 中如何设置临时node环境变量_Jenkins_61

2.2 部署脚本配置

2.2.1 bat脚本编写

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

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

jenkins 中如何设置临时node环境变量_主目录_62

2.2.1 bat脚本配置

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

jenkins 中如何设置临时node环境变量_tomcat_63


点击

jenkins 中如何设置临时node环境变量_主目录_64

按钮,选择

jenkins 中如何设置临时node环境变量_主目录_65

,进入SSH设置页面。



jenkins 中如何设置临时node环境变量_tomcat_66



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

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

jenkins 中如何设置临时node环境变量_tomcat_67

点击

jenkins 中如何设置临时node环境变量_tomcat_68

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

jenkins 中如何设置临时node环境变量_tomcat_69

jenkins 中如何设置临时node环境变量_Jenkins_70

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


Jenkins+svn+maven简单构建

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

svn配置

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

jenkins 中如何设置临时node环境变量_tomcat_71

再点击Credenyials的

jenkins 中如何设置临时node环境变量_tomcat_72

按钮,添加我们的SVN账号。

jenkins 中如何设置临时node环境变量_Jenkins_73

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

jenkins 中如何设置临时node环境变量_主目录_74

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

jenkins 中如何设置临时node环境变量_主目录_75

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

jenkins 中如何设置临时node环境变量_主目录_76

点击

jenkins 中如何设置临时node环境变量_Jenkins_77

按钮,开始项目的构建。

jenkins 中如何设置临时node环境变量_tomcat_78



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

jenkins 中如何设置临时node环境变量_Jenkins_79

jenkins 中如何设置临时node环境变量_Jenkins_80