Jenkins - 持续集成环境搭建
1. Jenkins 概述
Jenkins是一个开源的持续集成工具。持续集成主要功能是进行自动化的构建。自动化构建包括自动编译、发布和测试,从而尽快地发现集成错误,让团队能够更快的开发内聚的软件。
2. Jenkins功能
主要功能:
l 代码库(svn/git等)代码发生变化后更新代码至jenkins工作目录
l 代码变化后启动编译或设置定时编译
l 输出编译结果,包括生成的目标文件
l 邮件通知构建结果
3. Jenkins构建过程
1. 向代码库提交代码,代码库变化触发构建
2. 定时触发构建,到定时的时间点触发构建
3. Jenkins更新至最新代码
4. 启动编译,失败则停止构建。邮件反馈失败信息
5. 输出编译产物,WEB提供目标文件下载
4. Jenkins使用
4.1 Jenkins启动
1. 下载Jenkins软件jenkins.war。
2. Java环境配置
3. Linux shell或windows cmd执行java -jar jenkins.war
4. 指定端口启动java -jar jenkins.war --httpPort=port
Tips:jenkins工作目录默认在启动用户home目录,jenkins操作权限与启动用户一致。
4.2 Jenkins web
登录web,首次访问提示输入administration password 在shell中启动日志会提供,复制登录后创建admin用户。
Jenkins搭建完成后访问输入用户名和密码登录。
4.3 Jenkins界面
主界面说明:
项目界面说明:
单次构建界面说明:
Jenkins使用主要是操作这三个页面,可以完成以下内容:
l 近期代码构建结果查看
l 手动立即启动构建
l 获取构建结果目标文件
l 查看单次构建的代码变化
l 获取构建日志进行问题定位
5. Jenkins配置
5.1 系统配置
主界面进入系统配置,主要可更新和下载当前的插件和添加新的jenkins用户,系统设置内可配置jenkins工作目录及邮件相关配置,以配置好可不做修改。
5.2 项目配置
5.2.1 创建项目
项目配置需要熟悉当前项目的编译环境,配置项目的jenkins环境即配置当前项目的编译环境。
新建jenkins项目,选择自由风格的软件项目。已存在的项目可以在项目页面点击配置进入修改。
5.2.2 源码配置
在源码管理配置代码库,提供svn的url以及有Read权限账户,所有设置均需要插件支持,如果找不到配置选项,可以查看是否安装的对应功能的插件。
代码更新下载在jenkins的工作目录下/home/Jenkins/.jenkins/workspace,其他构件操作均以工作目录下代码为基础。
5.2.3 设置构建触发器
选择Poll SCM
* * * * *为每分钟检查一次SVN代码,有更新则启动构建。
* * * * *可以替换为具体时间
第一个参数代表的是分钟 minute,取值 0~59;
第二个参数代表的是小时 hour,取值 0~23;
第三个参数代表的是天 day,取值 1~31;
第四个参数代表的是月 month,取值 1~12;
第五个参数代表的是星期 week,取值 0~7,0 和 7 都是表示星期天。
由此可以配置定时构建
如0 * * * * 表示的就是每个小时的第 0 分钟执行一次构建。
5.2.4 构建配置
构建配置即配置代码的编译过程,首先需要在jenkins机器上配置好编译环境,先在机器上手动编译,确认编译环境配置完成,可以进行当前项目的代码编译后,再进行配置。
在构建选项上可以选择不同的工具进行构建,这些都需要插件的支持。因为项目是由命令行执行编译命令进行构建的,所以选择Execute shell执行命令进行构建,也可以配置其他构建工具环境进行构建。
5.2.5 输出归档
构建成功后需要将目标文件进行归档,否则在项目页面是无法显示和下载最后一次成功的构建结果选项。
这步在构建后进行操作,在构建后操作中选择archive the artifacts,填入需要归档的文件的正则表达式进行过滤。多个目录文件表达式可使用“,”进行分割。
5.2.6 邮件通知
在构建结束后,可以配置邮件,进行邮件通知。提示开发者构建结果,及时处理。
在使用邮件通知时需要先配置
主页面进入系统管理的系统设置页面,设置邮件通知,通知邮件将由这个邮箱发出,这个邮箱必须与jenkins location配置中的邮箱一致。
配置项目中的邮件收件人
可以使用“,”分割多个收件人。
6. Q&A
6.1. 忘记用户密码
/home/jenkins/.jenkins/users目录下有所有用户信息,打开对应用户的xml配置文件,找到passwordHash内容,修改为:
#jbcrypt:$2a$10$DdaWzN64JgUtLdvxWIflcuQu2fgrrMSAMabF5TSrGK5nXitqK9ZMS
密码将被设置为111111
6.2. 如何手动安装插件
把文件放在/home/jenkins/.jenkins/plugins目录下,重启jenkins即可。
6.3. 邮件配置测试一直不成功
管理邮箱必须与jenkins location中邮箱一致,官网确认当前邮箱的SMTP服务器,端口以及是否使用SSL协议,最后查看当前邮箱是否开通IMAP/SMTP/POP/Exchange 服务。
6.4. Jenkins启动失败
查看启动端口是否被占用,查看是否当前的java环境版本不支持当前版本jenkins。
请无视打码技术。
转载注明出处:http://www.cnblogs.com/binchen-china/
Jenkins - 持续集成环境搭建的更多相关文章
- Jenkins - 持续集成环境搭建【转】
1. Jenkins 概述 Jenkins是一个开源的持续集成工具.持续集成主要功能是进行自动化的构建.自动化构建包括自动编译.发布和测试,从而尽快地发现集成错误,让团队能够更快的开发内聚的软件. 2 ...
- Jenkins持续集成环境搭建
1部署Jenkins Jenkins部署很简单,只需建立一个新应用,将Jenkins的war包部署进去,再分配好权限就可以了. 1.1创建应用 建立一个新Nginx应用:jenkins.com 1.2 ...
- Linux下Jenkins+git+gradle持续集成环境搭建
Linux下Jenkins+git+gradle持续集成环境搭建 来源:IT165收集 发布日期:2014-08-22 21:45:50 我来说两句(0)收藏本文 一.项目介绍 和 linux ...
- Jmeter+Ant+Jenkins接口自动化持续集成环境搭建(Linux)
一.安装说明 系统环境:CentOS release 6.4 JDK版本:jdk1.8.0_181 Jmeter版本:apache-jmeter-3.0 Ant版本:apache-ant-1.9.13 ...
- Docker+Jenkins持续集成环境(4):使用etcd+confd实现容器服务注册与发现
前面我们已经通过jenkins+docker搭建了基本的持续集成环境,实现了服务的自动构建和部署,但是,我们遇到一个问题,jenkins构建出来的镜像部署后,需要通过ip:port去访问,有什么更好的 ...
- Docker+Jenkins持续集成环境(5): android构建与apk发布
项目组除了常规的java项目,还有不少android项目,如何使用jenkins来实现自动构建呢?本文会介绍安卓项目通过jenkins构建的方法,并设计开发一个类似蒲公英的app托管平台. andro ...
- Jenkins持续集成学习-搭建jenkins问题汇总
目录 Jenkins持续集成学习5-搭建jenkins问题汇总 目录 前言 问题列表 nuget还原包问题 编译问题 SVN更新问题 参考文档 Jenkins持续集成学习5-搭建jenkins问题汇总 ...
- Jekens 配置多项目SCM GitLab+Jenkins持续集成环境
参考: 搭建GitLab+Jenkins持续集成环境图文教程 https://blog.csdn.net/ruangong1203/article/details/73065410 Jenkins中配 ...
- [Jenkins]持续集成环境下fingbug插件的安装使用与配置
参考:https://wiki.jenkins.io/display/JENKINS/FindBugs+Plugin 突然,天降杂事.我是想安安静静的做个美丽的测试...但是事与愿违,项目经理叫我帮忙 ...
随机推荐
- 关于c#调用java中间件api的几个问题
由于项目需要,做的c#客户端数据库连接串首先肯定不能写死的程序里(数据库很容易被攻击,我们的项目半年改了几次密码...) 放置在配置文件内,都可以看得到,最开始想法将配置文件加密,老师说加密过的文件还 ...
- java.lang.NumberFormatException: For input string: "1608020001 " 错误
错误: java.lang.NumberFormatException: For input string: "1608020001 " at java.lang.Numbe ...
- Redis常用命令入门3:列表类型
列表类型 列表类型也是一个我们很长要用到的一个类型.比如我们发博客,要用到博客列表.如果没有列表我们就只能遍历键来获取所有文章或一部分文章了,这个语法是keys,但是这个命令需要遍历数据库中的所有键, ...
- CheckLogin
# encoding: utf-8 # Creator:耿亚月 Creation time:2017-1-1 # Modifier:耿亚月 Modification time:2017-1-2 #fi ...
- NetworkComms V3 使用TCP通信传递IList<T>类型的数据
客户端从服务器获取一组IList<T>类型的数据非常常见(通常从数据库中获取) 我们用NeworkComms V3来演示一下(NetworkcommsV2.x版本也同样支持) [ 使用pr ...
- EntityFramework CodeFirst SQLServer转Oracle踩坑笔记
接着在Oracle中使用Entity Framework 6 CodeFirst这篇博文,正在将项目从SQLServer 2012转至Oracle 11g,目前为止遇到的问题在此记录下. SQL Se ...
- EF框架学习
简称EF,ADO.NET Entity Framework是微软以ADO.NET为基础所发展出来的对象关系对应(O/R Mapping)解决方案,是微软的一个ORM(面向对象的对象模型和关系型数据库的 ...
- [并查集] POJ 1703 Find them, Catch them
Find them, Catch them Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 43132 Accepted: ...
- Java集合类学习笔记(List集合)
List集合是指一个元素有序.可重复的集合,集合中每个元素都有其对应的顺序索引. ArrayList和Vector作为List集合的两个典型实现,完全支持List接口的全部功能,并且在用法上几乎完全相 ...
- C++11 变长模版和完美转发实例代码
C++11 变长模版和完美转发实例代码 #include <memory>#include <iostream>#include <vector>#include ...