持续集成之Jenkins(坏老头)
点击关注哦↑↑↑↑↑↑↑↑↑
持续集成
有关持续集成的简介,可参考我此前的文章:http://blog.csdn.net/benkaoya/article/details/44993583
Jenkins简介
功能与优点
Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括:
持续的软件版本发布/测试项目。
监控外部调用执行的工作。
跟其他持续集成相比,它的主要优点有:
开源,即免费。
支持多种平台(windows、linux、os x都支持)。
安装、配置简单。
Web可视化管理界面,并且有丰富的tips帮助信息。
Jenkins和Hudson的关系
Jenkins的前身是Hudson(Sun开发),2010年从Hudson分支出来。由于Sun被Oracle收购,后者声称拥有Hudson的商标所有权,前者被迫这样做的。分支出来的Jenkins将继续走open source道路,而Hudson可能会用于商业用途,二者都在继续开发中
我的环境
如果对在Linux下安装有恐惧症的,BitNami提供了jenkins的一键安装程序,简单、易用、方便,可在https://bitnami.com/stack/jenkins中下载,windows、linux、OS X平台都有提供。我是在linux环境下安装的Jenkins,环境如下:
| 所需软件 | 版本 |
|---|---|
| 服务器操作系统 | Debian |
| Jenkins软件版本 | bitnami-jenkins-1.617-0-linux-installer.run |
安装
安装Jenkins
由于用的是bitnami-jenkins,所以安装过程很简单。将bitnami-jenkins-1.606-0-linux-installer.run拷贝至linux中,增加可执行权限,然后直接运行该安装文件即可。
安装向导很简单,这里不介绍。需要注意的是:务必记录下安装过程中设置的管理员账户和密码,等下要用到。
启动Jenkins服务
安装完bitnami-jenkins,最后一步就会提示你启动Jenkins服务。除了可以用这种“图形界面”的方式来启动Jenkins服务之外,还可以通过“命令行”方式来启动/停止Jenkins服务。
#/home/ci/jenkins-1.617-0/ctlscript.sh status /*查看Jenkins服务状态*/
#/home/ci/jenkins-1.617-0/ctlscript.sh start /*启动Jenkins服务*/
#/home/ci/jenkins-1.617-0/ctlscript.sh stop /*停止Jenkins服务*/
开始体验
管理员登陆
安装完,在浏览器中输入http://localhost:8080/jenkins,就能看到效果了,如下图所示,如果无法打开,就要查看日志了,日志输出到安装路径的log目录下。
输入管理员用户名和密码即可登录:
新建一个任务
点击“新建”,新建一个任务。我要通过shell进行编译、构建,所以新建任务时选择的类型是“构建一个多配置项目”,如下图所示。
输入项目名称
输入项目名称,我这里命名为ProjTest。同时我也勾选了“丢弃旧的构建”,这项功能主要是为了节省服务器空间,我设置为“保持构建的最大个数”为30,超过的Jenkins会自动删除旧的构建。
与代码版本管理工具集成
Jenkins支持常用的代码版本管理软件。通过此项设置,Jenkins会自动从代码版本管理的服务器下载源码,并自动构建。以下以SVN为例进行说明。
在源码管理中选择“Subversion”,在“Repository URL”中输入版本库地址,如果你输入的地址有误,会提示“Repository URL is required.”,如下图所示。
输入正确的版本库地址,结果还是提示有误,如下所示。
错误提示信息为:
Unable to access svn://172.16.1.4/项目管理/C 行业GPS项目区/两标视频终端项目/A 程序代码 : svn: E200015: No credential to try. Authentication failed (show details)
(Maybe you need to enter credential?)
这是因为Jenkins所在的服务器没有访问过SVN版本库,无法通过身份验证,解决办法就是在Jenkins所在服务器访问一次SVN版本库,如下所示:
$ ssh ci@172.16.1.4
ci@172.16.1.4's password:
Last login: Fri Jul 24 10:13:39 2015
[ci@localhost:/home/ci]#
[ci@localhost:/home/ci]#svn info "svn://172.16.1.4/项目管理/C 行业GPS项目区/两标视频终端项目/A 程序代码"
认证领域: <svn://172.16.1.4:3690> This is YF1's Source SVN
“ci”的密码:
认证领域: <svn://172.16.1.4:3690> This is YF1's Source SVN
用户名: xzp
“xzp”的密码:
-----------------------------------------------------------------------
注意! 你的密码,对于认证域:
<svn://172.16.1.4:3690> This is YF1's Source SVN
只能明文保存在磁盘上! 如果可能的话,请考虑配置你的系统,让 Subversion
可以保存加密后的密码。请参阅文档以获得详细信息。
你可以通过在“/home/ci/.subversion/servers”中设置选项“store-plaintext-passwords”为“yes”或“no”,
来避免再次出现此警告。
-----------------------------------------------------------------------
保存未加密的密码(yes/no)?yes
路径: A 程序代码
URL: svn://172.16.1.4/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86/C%20%E8%A1%8C%E4%B8%9AGPS%E9%A1%B9%E7%9B%AE%E5%8C%BA/%E4%B8
5%BA%8F%E4%BB%A3%E7%A0%81
版本库根: svn://172.16.1.4/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86
版本库 UUID: c69c5511-93e5-fc4f-99f1-8de8aae1ea61
版本: 7026
节点种类: 目录
最后修改的作者: rf
最后修改的版本: 7005
最后修改的时间: 2015-07-16 10:24:45 +0800 (四, 2015-07-16)
[ci@localhost:/home/ci]#
设置构建触发器
也就是什么时候开始自动构建。这里可以有不同方案,大家一看就知道是什么意思。我这里选择Poll SCM,该方案能定时检代码版本库是否有新的提交,如果有则自动构建。我设置的日程表是“H/5 * * * *”,即5分钟自动检查一次代码版本库是否有新的提交。
配置如何构建
构建方式有很多种,我这里选择shell,因为我要用makefile来编译源码。需要提醒的是这里的SHELL是由Jenkins启动的,Jenkins设置了很多自己的环境变量,可以通过env打印出来研究下,里面很多信息是可以使用的。
发布构建结果
Jenkins自动构建完后,可以将构建结果存档(如程序版本),以方便大家下载使用,可以通过“构建后操作”的“Archive the artifacts”来实现。
其他说明
从下图的构建历史可以看出,蓝色表明构建成功,红色表明构建失败。在测试的过程中,代码版本库都没有新的提价,如何触发构建?可以通过“立即构建”来触发。
授权管理
一切都整好后,发现匿名用户竟然能访问“工作区”,能看到源码。这应该要杜绝。好在Jenkins有丰富的“项目矩阵授权策略”能达到我们要的效果。
用管理员登陆Jenkins,进入“系统管理 > Configure Global Security”,这里有个“授权策略”,选择“项目矩阵授权策略”,在这里就能限制匿名用户的权限了。我对匿名用户的限制是:不允许访问工作区,不允许访问源码,可以下载构建后的归档文件。
总结
本次介绍Jenkins只是个入门级别的,想要深入的修行,还是得靠个人。对本次使用Jenkins做个简要总结:
安装简单,Web可视化管理界面,容易上手。
能与代码版本管理软件结合,自动检测是否有新提交,并自动构建。
每次构建结果能自动归档,以便回溯,或供他人下载。
长按二维码识别关注,您的支持是我们最大的动力。
公众号:测试梦工厂
QQ一群:300897805

持续集成之Jenkins(坏老头)的更多相关文章
- 使用Gradle构建构建一个Java Web工程及持续集成环境Jenkins配置
安装Eclipse插件——Buildship 什么是Buildship? Buildship能方便我们通过Eclipse IDE创建和导入Gradle工程,同时还能执行Gradle任务. Eclips ...
- 老李分享:持续集成学好jenkins之内置命令
老李分享:持续集成学好jenkins之内置命令 Jenkins命令调用方式:调用Jenkins命令设置job的描述信息. $JAVA_BIN-jar "$JENKINS_CLI_JAR& ...
- 老李分享:持续集成学好jenkins之安装
老李分享:持续集成学好jenkins之安装 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq: ...
- 老李分享:持续集成学好jenkins之解答疑问
老李分享:持续集成学好jenkins之解答疑问 poptest(www.poptest.cn)在培训的过程中使用jenkins搭建持续集成环境,让学员真正交流持续集成到底是什么,怎么去做的. Je ...
- 老李分享:持续集成学好jenkins之Git和Maven配置
老李分享:持续集成学好jenkins之Git和Maven配置 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣 ...
- 老李分享:持续集成学好jenkins之Git和Maven配置 1
老李分享:持续集成学好jenkins之Git和Maven配置 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣 ...
- 老李分享:持续集成学好jenkins
老李分享:持续集成学好jenkins poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.poptest测试开发工程师就业培训请大 ...
- Android持续集成之Jenkins 部署
Android持续集成之Jenkins 部署 [TOC] 0x00安装 准备工作如下: Tomcat8.5下载地址 Jenkins下载链接 1 将下载的jenkins.war包放至tomcat下的we ...
- 持续集成之⑤:jenkins结合脚本实现代码自动化部署及一键回滚至上一版本
持续集成之⑤:jenkins结合脚本实现代码自动化部署及一键回滚至上一版本 一:本文通过jenkins调用shell脚本的的方式完成从Git服务器获取代码.打包.部署到web服务器.将web服务器从负 ...
- 持续集成之Jenkins+Gitlab实现持续集成 [二]
持续集成之Jenkins+Gitlab实现持续集成 [二] 项目:使用git+jenkins实现持续集成 开始构建 General 源码管理 我们安装的是Git插件,还可以安装svn插件 我们将 ...
随机推荐
- 配置PhoneGap 到iOS
下载 phonegap安装phonegap之前需要NodeJS环境,下载NodeJS并安装.安装环境的目的是为了使用phonegap命令行. 3. 安装phonegap使用命令 $phonega ...
- css 时钟
(转自:http://www.cnblogs.com/Wenwang/archive/2011/09/21/2184102.html) <!DOCTYPE html> <html l ...
- Mobile phones_二维树状数组
[题意]给你一个矩阵(初始化为0)和一些操作,1 x y a表示在arr[x][y]加上a,2 l b r t 表示求左上角为(l,b),右下角为(r,t)的矩阵的和. [思路]帮助更好理解树状数组. ...
- 清除浮动1-使用:after 伪元素
<!doctype html><html> <head> <meta charset="UTF-8"> <meta name= ...
- Inno Setup 插件大全
Inno Setup 插件大全 这是我收集到的目前网上最全的插件之一,里面的每个插件,都有详细的脚本示例来讲解该插件的具体用法.另外,下载了我公开的脚本的朋友,也有可能会被提示缺少文件,如果缺 ...
- 大数据hadoop入门学习之集群环境搭建集合
目录: 1.基本工作准备 1.虚拟机准备 2.java 虚拟机-jdk环境配置 3.ssh无密码登录 2.hadoop的安装与配置 3.hbase安装与配置(集成安装zookeeper) 4.zook ...
- Mysql Too Many Connections问题解决
MySQL的max_connections参数用来设置最大连接(用户)数.每个连接MySQL的用户均算作一个连接,max_connections的默认值为100.本文将讲解此参数的详细作用与性能影响. ...
- ss命令使用示例
导读 ss是Socket Statistics的缩写,可以用来获取socket统计信息,它可以显示和netstat类似的内容.但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比n ...
- 350. Intersection of Two Arrays II
Given two arrays, write a function to compute their intersection. Example:Given nums1 = [1, 2, 2, 1] ...
- openni和骨架追踪 rviz查看---34
原创博客:转载请标明出处:http://www.cnblogs.com/zxouxuewei/ 1.安装深度相机的NITE. 首先下载NITE-Bin-Dev-Linux-x64-v1.5.2.23, ...