gitlab+jenkins搭建
jenkins是什么?
Jenkins 是一个可扩展的持续集成引擎。
* 主要用于:*
- 持续、自动地构建/测试软件项目。
- 监控一些定时执行的任务。
* Jenkins特性:*
- 易于安装-只要把jenkins.war部署到servlet容器,不需要数据库支持。
- 易于配置-所有配置都是通过其提供的web界面实现。
- 集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知。
- 生成JUnit/TestNG测试报告。
- 分布式构建支持Jenkins能够让多台计算机一起构建/测试。
- 文件识别:Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。
- 插件支持:支持扩展插件,你可以开发适合自己团队使用的工具。
* Jenkins的由来:*
目前持续集成(CI)已成为当前许多软件开发团队在整个软件开发生命周期内侧重于保证代码质量的常见做法。它是一种实践,旨在缓和和稳固软件的构建过程。并且能够帮助您的开发团队应对如下挑战:
- 软件构建自动化 :配置完成后,CI系统会依照预先制定的时间表,或者针对某一特定事件,对目标软件进行构建。
- 构建可持续的自动化检查 :CI系统能持续地获取新增或修改后签入的源代码,也就是说,当软件开发团队需要周期性的检查新增或修改后的代码时,CI系统会不断确认这些新代码是否破坏了原有软件的成功构建。这减少了开发者们在检查彼此相互依存的代码中变化情况需要花费的时间和精力(说直接一点也是钱啊,呵呵)。
- 构建可持续的自动化测试 :构建检查的扩展部分,构建后执行预先制定的一套测试规则,完成后触发通知(Email,RSS等等)给相关的当事人。
- 生成后后续过程的自动化 :当自动化检查和测试成功完成,软件构建的周期中可能也需要一些额外的任务,诸如生成文档、打包软件、部署构件到一个运行环境或者软件仓库。这样,构件才能更迅速地提供给用户使用。
部署一个CI系统需要的最低要求是,一个可获取的源代码的仓库,一个包含构建脚本的项目。
下图概括了CI系统的基本结构:
该系统的各个组成部分是按如下顺序来发挥作用的:
- 开发者检入代码到源代码仓库。
- CI系统会为每一个项目创建了一个单独的工作区。当预设或请求一次新的构建时,它将把源代码仓库的源码存放到对应的工作区。
- CI系统会在对应的工作区内执行构建过程。
- (配置如果存在)构建完成后,CI系统会在一个新的构件中执行定义的一套测试。完成后触发通知(Email,RSS等等)给相关的当事人。
- (配置如果存在)如果构建成功,这个构件会被打包并转移到一个部署目标(如应用服务器)或存储为软件仓库中的一个新版本。软件仓库可以是CI系统的一部分,也可以是一个外部的仓库,诸如一个文件服务器或者像Java.NET、 SourceForge之类的网站。
- CI系统通常会根据请求发起相应的操作,诸如即时构建、生成报告,或者检索一些构建好的构件。
Jenkins就是这么一个CI系统。之前叫做Hudson。
jenkins的优势:
- 是所有CI产品中在安装和配置上最简单的。
- 基于Web访问,用户界面非常友好、直观和灵活,在许多情况下,还提供了AJAX的即时反馈。
- Jenkins是基于Java开发的(如果你是一个Java开发人员,这是非常有用的),但它不仅限于构建基于Java的软件。
- Jenkins拥有大量的插件。这些插件极大的扩展了Jenkins的功能;它们都是开源的,而且它们可以直接通过web界面来进行安装与管理。
- Jenkins一切配置都可以在web界面上完成。有些配置如MAVEN_HOME和Email,只需要配置一次,所有的项目就都能用。当然也可以通过修改XML进行配置。
- 支持Maven的模块(Module),Jenkins对Maven做了优化,因此它能自动识别Module,每个Module可以配置成一个job。相当灵活。
- 测试报告聚合,所有模块的测试报告都被聚合在一起,结果一目了然,使用其他CI,这几乎是件不可能完成的任务。
- 构件指纹(artifact fingerprint),每次build的结果构件都被很好的自动管理,无需任何配置就可以方便的浏览下载。
Jenkins的目标:
Jenkins的主要目标是监控软件开发流程,快速显示问题。所以能保证开发人员以及相关人员省时省力提高开发效率。CI系统在整个开发过程中的主要作用是控制:当系统在代码存储库中探测到修改时,它将运行构建的任务委托给构建过程本身。如果构建失败了,那么CI系统将通知相关人员,然后继续监视存储库。它的角色看起来是被动的;但它确能快速反映问题。
jenkins的安装
1.从jenkins官网下载https://jenkins.io/download/ jenkins的war包。
2.下载完成之后,放到tomcat/webapps下面,启动tomacat。此时,会在C盘的当前用户文件夹下出现.jenkins文件夹。添加环境变量JENKINS_HONME
指向该文件夹。tomcat显示如下:
,圈住部分为系统生成的admin账户的密码。
3浏览器访问 http://localhost:8080/jenkins/,出现jenkins的页面,输入刚刚的密码,进入jinkens。
,此时,jenkins会让你选择安装插件,我们选择左边的就行。
接下来是创建用户
添加插件页面
- gitlab hook plugin –gitlab推送
- git plugin –配置git
- gitlab plugin –配置gitlab
- email extention plugin –发送邮件通知
- ssh plugin –ssh协议
- deploy to container plugin –将构建好的war包部署到tomcat
其他插件可以根据实际需要进行添加,jenkins提供了上百个插件,能满足绝大部分的需求。
jenkins的配置
global tool configuration(全局工具配置)
该配置主要进行基本的环境配置。
配置maven目录:
configure globle security(全局安全配置)
其他设置保持默认即可。
系统设置
依次进入 “系统管理 –> 系统设置”
jenkins服务器配置:
git配置
邮箱配置
到此为止,系统设置就完成了。如果有需要,可以之后再回来添加设置。
创建项目
点击 创建
按钮,进入创建页面。
创建项目
项目配置
项目配置
项目配置
项目配置
在这里,我们还需要配置gitlab上面的webhooks。在项目页面,依次点击 setting –> integrations
gitlab配置
构建配置
构建配置
构建配置
要从远端部署项目到tomcat上,需要用户有很大的权限,在这里我们把tomcat/conf/tomcat-user.xml修改成如图所示即可。
在上面展示的截图中,您将注意到有两个图标描述当前作业的状态。S栏目代表着“最新构建状态”,W栏目代表着“构建稳定性”。Jenkins使用这两个概念来介绍一个作业的总体状况:
构建状态:下图中分级符号概述了一个Job新近一次构建会产生的四种可能的状态:
Successful:完成构建,且被认为是稳定的。
Unstable:完成构建,但被认为不稳定。
Failed:构建失败。
Disabled:构建已禁用。
构建稳定性: 当一个Job中构建已完成并生成了一个未发布的目标构件,如果您准备评估此次构建的稳定性,Jenkins会基于一些后处理器任务为构建发布一个稳健指数 (从0-100 ),这些任务一般以插件的方式实现。它们可能包括单元测试(JUnit)、覆盖率(Cobertura )和静态代码分析(FindBugs)。分数越高,表明构建越稳定。下图中分级符号概述了稳定性的评分范围。任何构建作业的状态(总分100)低于80分就是不稳定的。
点击保存,到此,项目的配置完成。我们可以进行测试了。
测试jenkins
注意:以上配置是在本机上进行的,以下的测试都是在服务器上进行的,但是由于jenkins提供的是jar包,因此配置过程是完全一样的。
手动触发构建
test2.png
test3.png
根据图标的颜色,我们可以判断此次构建成功,访问http://192.168.17.47:8872/webcrawler-test/views/crawlerbtsp.html,可以看到此时页面如下:
自动触发
然后我们通过idea从gitlab上把项目checkout下来。
我们将刚才的页面做如下修改:
然后提交并推送到gitlab
此时在jenkins的项目页面可以正在构建!
构建完毕,在tomcat/webapp下可以看到 已经部署了webcrawler,刷新刚才的页面,可以看到
到此,jenkins持续集成环境搭建完成。