HTML5技术

CI-持续集成(2)-软件工业“流水线”技术实现 - 一点一滴的Beer

字号+ 作者:H5之家 来源:H5之家 2016-02-21 11:00 我要评论( )

1概述 持续集成(Continuous Integration)是一种软件开发实践。在本系列文章的前一章节已经对其背景及理论体系进行了介绍。本小节则承接前面提出的理论构想进行具体的技术实现。 《Google软件测试之道》: "每天,Google都要测试和发布数百万个源文件,亿万

1   概述

持续集成(Continuous Integration)是一种软件开发实践。在本系列文章的前一章节已经对其背景及理论体系进行了介绍。本小节则承接前面提出的理论构想进行具体的技术实现。

《Google软件测试之道》:

"每天,Google都要测试和发布数百万个源文件,亿万行代码。数以亿计的构建动作会触发几百万次的自动化测试,并在好几十万个浏览器实例上执行。面对这些看似不可能完成的任务,谷歌是如何测试的呢?"

希望看完此文章的人,能够自己找到自己的答案。

 

2   主要环境及工具

以上的技术选型,都是尽量使用 开源 且 主流 的系统,这样的好处如下:

3   原理分析

在上一篇文章里面,对持续集成绘制过一个基本的结构图,如下:

基本流程如下:

  • 开发人员推送代码到Git

  • Git通知Jenkins

  • Jenkins开启构建

  • 构建完成开启后续任务
  • 自动化测试
  • 自动化部署
  • Jenkins通知自动化发布系统

  • 发布系统持续后续的任务……

  • 这里面涉及的系统有:

    关于 自动化发布系统 这个基本上属于运维方面的内容,在互联网产品领域情形和技术需求比较复杂,暂时不列入本部分的内容。但是Jenkins 能够有接口去通知相应的发布系统,以达到 事件信息流的连续性

    本文则主要从技术角度来将这些系统联合起来。

    4   Jenkins安装及配置

    4.1   下载和安装

    关于 Jenkins 的下载及安装,可以参考其官网。

    https://jenkins-ci.org/

    直接下载Ubuntu/Debian版本,在Ubuntu服务器上安装即可。

    由于过程比较简单,网上相关教程很多,此处也不再赘述。但是一般Jenkins安装完毕后,最初的权限配置会比较繁琐,所以本文重点从相应的使用场景出发,实现一个完整的带权限配置的解决方案。

    5   内网持续集成系统

    对于只是在 内网 使用持续集成的团队来说,权限的配置就相对简单一些。因为只是在内网,所以可以将权限的要求放松,只要保证公司网络之外的人无法访问到 Jenkins 服务即可。

    注意:如果要和git服务的webhook形成完整的事件流,则git服务也需要在内网,否则 构建事件 无法被 代码推送事件 给触发。

    5.1   权限配置

    对 Jenkins 进行如下操作:

    [系统管理]->[Configure Global Security]->[访问控制]->[授权策略]->[项目矩阵授权策略]

    对 匿名用户 进行如下配置:

  • Overall: Read -> Enabled
  • Job: Read -> Enabled
  • 具体配置界面如下:

    注意:如果不这样配置,则后面提到的基于git的构建触发器将无法通过调用指定的url接口来触发构建。因为webhook只能构造 单次 简单的http请求,无法构造由多个请求组成的会话,故而无法调用需要身份授权的接口。

    5.2   构建触发器

    一般情况下,构建都是以代码的发布作为起始事件点,所以需要和git服务器建立事件关联,在Jenkins具体的项目的配置界面中,对 构建触发器 进行配置。

    目前网络上一般都是介绍的这种方式,具体的细节,此处就不再赘述,感兴趣的同学可以自行在网络上搜索。

    基本原理图如下:

    5.3   最终效果

    可以达到如下效果:

    以上的内网方案的特点如下:

  • 优点:
  • 配置简单
  • 不需要配置人员进行任何的开发活动
  • 缺点
  • 无法限制匿名用户的权限
  • 出于安全考虑,只能在内网使用
  • 当然,对于 开发资源相对匮乏 的小团队而言,推荐通过以上方法 快速搭建 自己的内部的持续集成系统,毕竟先快速生产自己的特色产品才是最重要的事情。

    6   公网持续集成系统

    对于前面的 内网持续集成系统 的优点和缺点都介绍之后,作为一个以 开放为主要精神 的互联网团队来说,肯定是无法满足这样一个 封闭的内部网络 系统的,所以下面就要隆重介绍 公网持续集成系统 。

    对于 内网系统 在配置上进行了 偷懒 ,但是实际上却在其它地方付出了 巨大的代价 ,这些代价包括:

  • 无法使用市场上已经成熟的公网git服务(包括但不限于:bitbucket,github,git@osc)
  • 团队成员的工作地点将受到限制,必须局限于同一个内网环境中
  • 所以,如果配置人员拥有一定的系统设计能力和开发能力,还是建议搭建 公网持续集成系统 。

    公网方案具有如下特点:

  • 缺点:
  • 需要配置人员具备系统设计能力和开发能力
  • 优点:
  • 能够将系统以登录授权的方式部署在公网
  • 未登录的匿名用户无法查看任何项目信息
  • 登录用户可以配置不同的权限
  • 能够作为服务器来接受来自事件来触发构建
  • 可以通过公网git服务的webhook触发
  • 可以通过自定义的任何公网IT系统触发(按钮,短信,微信等等)
  • 可扩展性强,理论上可以和任何的公共互联网服务进行对接

  • 6.1   权限配置

    公网持续构建系统对权限控制有如下要求:

  • 未登录的匿名用户无法查看任何项目信息
  • 登录用户可以配置不同的权限
  • 对 Jenkins 进行如下操作:

    [系统管理]->[Configure Global Security]->[访问控制]->[授权策略]->[项目矩阵授权策略]

    可以建立三类用户并进行权限配置:

  • 普通用户

    登录后,可以查看相应的项目的名称及构建的状态(主要是基本的查看功能)

  • 管理员用户

    登录后,可以进行构建操作,对任务进行增加及删除等等高级操作(主要是项目管理功能)

  • 匿名用户

    未登录用户,不具备任何权限,只呈现登录界面

  • 有了这样的登录授权机制,就不用再使用网络进行隔离了,此系统就可以放心地放到公网服务器上了。

     

    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章
    • 随应潮流-基于ABP+Angularjs现代化应用软件开发框架(1)-总体介绍 - 在路在的张

      随应潮流-基于ABP+Angularjs现代化应用软件开发框架(1)-总体介绍 -

      2017-04-22 08:04

    • 移动端WEBAPP开发遇到的坑,以及填坑方案!持续更新~~~~ - ygjoe

      移动端WEBAPP开发遇到的坑,以及填坑方案!持续更新~~~~ - ygjoe

      2017-04-16 11:00

    • IT生涯, 我的常用软件清单 - SkySeraph

      IT生涯, 我的常用软件清单 - SkySeraph

      2017-03-27 08:01

    • Visual Studio 20周年软件趋势随想 - 张善友

      Visual Studio 20周年软件趋势随想 - 张善友

      2017-03-10 18:01

    网友点评