您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 可持续集成Jenkins
可持续集成工具Jenkins使用Jenkins替代现有的项目集成敏捷开发中的敏捷ShortCyclesthataretest-drivenandfeedback-driven,yieldingconstantimprovement.“通过测试和反馈驱动生成的多个短周期的迭代,提供持续的改善。ShortCycles是敏捷开发的基础,如何快速得到短周期的迭代。持续集成工具帮助我们实现了这一需求。什么是集成Eclipse+Svn+Maven+Apache开发+版本控制+编译打包+发布生命周期如何持续集成倡导团队开发成员必须经常集成他们的工作,甚至每天都可能发生多次集成。而每次的集成都是通过自动化的构建来验证,包括自动编译、发布和测试,从而尽快地发现集成错误,让团队能够更快的开发内聚的软件。持续集成的原则业界普遍认同的持续集成的原则包括:需要版本控制软件保障团队成员提交的代码不会导致集成失败。常用的版本控制软件有IBMRationalClearCase、CVS、Subversion等开发人员必须及时向版本控制库中提交代码,也必须经常性地从版本控制库中更新代码到本地需要有专门的集成服务器来执行集成构建。根据项目的具体实际,集成构建可以被软件的修改来直接触发,也可以定时启动,如每半个小时构建一次必须保证构建的成功。如果构建失败,修复构建过程中的错误是优先级最高的工作。一旦修复,需要手动启动一次构建持续集成系统的组成一个完整的构建系统必须包括:一个自动构建过程,包括自动编译、分发、部署和测试等。一个代码存储库,即需要版本控制软件来保障代码的可维护性,同时作为构建过程的素材库。一个持续集成服务器。本文中介绍的Jenkins就是一个配置简单和使用方便的持续集成服务器。什么是JenkinsJAVA语言开发的可扩展的开源持续集成服务器作为Jenkins的前身,Hudson之前由SUN公司维护。在ORACLE收购SUN公司后,由ORACLE捐赠给EclipseFoundation,现在由EclipseFoundation负责维护在Hudson被收购后,为了摆脱ORACLE的束缚,开源社区重新将其更名为Jenkins,并继续开源,当前提供了1058个插件用来支持编译、测试几乎所有的程序开源协议•为什么要使用Jenkins邮件提出开始提测运维部署部署分支反馈项目组部署完成QC测试发现问题定位问题主干合并结束运维QC开发一起来开发问题修改程序环境问题环境变更部署主干运维部署无问题预发布环境邮件提测运维合并主干QC预发布测试无问题上线正式环境上线邮件运维上线QC线上测试线上测试主干环境问题定位处理有问题无问题有问题线上紧急情况处理我们当前的项目集成情况几个很突出的问题标准开发环境缺失手动执行脚本集成QC测试环境集成人员不能快速查看历史集成记录不能并行处理整个流程处理很慢•开发阶段的自测被放到QC测试阶段•缺少透明的系统用来定位问题其他问题我们改进后的项目集成优化后,使用Jenkins覆盖DEV/QC、预发布环境的持续集成的流程Jenkins持续集成开始开发部署分支部署分支内测开发内测定位问题主干合并开发主导定位问题部署主干运维部署预发布环境邮件提测运维合并主干QC预发布测试无问题上线正式环境上线邮件运维上线QC线上测试线上测试问题定位处理有问题开发程序开发无问题程序问题环境问题环境调整有问题结束有问题线上紧急情况处理无问题突出问题的解决新增DEV环境DEV/QC环境的项目集成引入Jenkins持续集成并行处理集成编译可视化的项目集成Jenkins的优点支持项目依赖性集成支持权限化管理集成支持分布式一mater-多slave支持项目周期集成自动代码更新自动编译自动测试自动发布可供随时查看的历史发布记录可集成JIRABUG管理程序质量管理Tag功能通知功能集成视图Jenkins插件的分类SCM:除CVS和Subversion外需要实现与源代码控制系统支持的插件。Triggers:事件监听并触发构建的插件。例如,URL改变触发器将监控一个URL;当地址内容发生改变,这个触发器就将执行一次作业。Buildtools:实现额外构建工具的插件,如MSBuild和Rake。如果您想在Hudson中构建非Java的软件时这些就特别有用。Buildwrappers:通常涉及时执行在受控制的构建过程本身之前和之后事件的插件。例如,VMware插件将在构建之前启动一个客户虚拟机,建立和然后在构建完成后关闭它。这在您可能需要访问VM以执行单元测试的情况下是非常有用的。Buildnotifiers:这些插件是做为作业事件发布通知的替代方式--通过Twitter、IRC、谷歌日历活动等等。Slavelaunchersandcontrollers:这是Hudson中一个非常强大的功能,本文中没有解释从机Hudson实例扮演主机Hudson实例工作。目前在这个类别中只有一个插件:SSH从机插件,它允许从属来管理超过一个SSH的链接。Buildreports:这一系列插件主要是在用您的源代码或者构件进行一些分析的基础上创建有用的报表。例如,Cobertura插件总是通过您的构建脚本增量统计覆盖率。Externalsiteintegrations:以协助Hudson整合与其他应用程序的插件,如Jira或Bugzilla。Artifactuploaders:以协助您把构件发布到一些网络终端的插件,如java.net版本库或一个FTP服务器Pagedecorators:为Hudson网页增加一些美化或者有用的装饰物,比如在Hudson中增加谷歌跟踪服务以跟踪其所有网页的谷歌分析插件。Jenkins的常用插件BuildMonitorPluginCredentialsPluginCVSPluginEmail-extpluginJavadocPluginJIRAPluginSubversionPluginWindowsSlavesPluginAntPluginBackuppluginBugzillaPluginDeploytocontainerPluginDeployment-notificationFingerprintPluginHudsonWebSVN2pluginMavenIntegrationpluginPlotpluginSMSNotificationSSHSlavespluginSubversionTaggingPluginJUnitPluginJenkins的处理流程开始点击构建按钮代码检出代码变更编译预处理编译后处理发布发布正常配置文件变更编译发布异常通知结束优化后的开发人员开发人员负责代码更新、DEV/QC环境发布、程序自测、提交QC测试、问题定位。JAVA程序猿Jenkins替代了开发生命周期中的编译、测试、打包、部署。写好自己负责的代码,提交到代码库中点击Jenkins的构建按钮,让Jenkins调用自己的Maven插件将代码编译、打包、部署到相对应的DEV/QC环境Jenkins已经集成公司内部Maven私服了,唯一要注意的是pom.xml文件一定要提前写好还会用到功能:配置分支代码库、查看集成历史、查看Maven配置文件pom.xml、查看编译生成的文件、给项目打标签、跟踪负责的项目、查看Jenkins发来的集成失败邮件PHP程序猿脚本语言PHP,不需要经过编译。本地调试-代码提交。Jenkins提供的功能也很简单,代码检出-代码修改-代码发布。还会用到功能:配置分支代码库、查看集成历史、查看服务器及项目配置文件、给项目打标签、跟踪负责的项目优化后的测试QC负责QC环境测试、预发布测试、上线通知、线上测试。将QC测试人员从之前需要定位问题的工作中解脱出来,只需要进行测试、BUG反馈即可还会用到功能:查看集成历史、校验分支名称、集成自动化测试优化后的运维运维人员负责DEV/QA环境配置、分支开放、分支合并、预发布环境发布、项目上下线、配置文件集中管理Jenkins系统维护、集成调试、权限更新、插件更新还会用到功能:项目Tag、观察项目的集成状态、查看Jenkins发来的集成失败邮件进行问题定位展示Jenkins的内容及管理用户权限管理插件管理视图管理工作空间修改记录JOB配置RESTAPI邮件通知的机制演示一个PHP项目的集成代码提交确认集成到的环境T1-T7设置代码检出地址代码集成代码发布的过程分析访问集成的环境演示一个使用Maven打包的JAVA项目的集成代码提交确认集成到的环境设置代码检出地址代码集成代码发布的过程分析访问集成的环境Jenkins集成推进中的几个阶段熟悉了解推广阶段DEV/QC环境持续集成阶段线上环境持续集成阶段了解推广阶段如何推进•各组负责人需要首先了解,再带领本组人员快速熟悉和了解需要达到的目标•各项目开发人员对整个持续集成系统熟悉,能独立发布DEV/QA环境DEV/QA环境持续集成阶段-难点如何考虑线上环境的发布?•PHP程序:暂时使用之前的发布脚本•JAVA程序:获取WAR包,使用脚本灰度发布QC测试环境之前的流程转换到开发主导•运维人员脱离预发布环境之前的操作(分支开放仍由运维处理),将具体内容交于开发DEV/QA环境持续集成阶段-难点如何使用Jenkins来查找和定位问题•在运维人员提供的环境相对稳定的情况下,发生问题时,开发人员需要主导问题的查找和定位DEV/QA环境持续集成阶段-目标各项目开发人员熟练使用Jenkins集成项目、使用Jenkins定位和发现问题;运维人员持续优化Jenkins服务,提供所需的插件;预发布环境的发布权限交于QC测试人员接管线上环境持续集成阶段-难点线上环境集成的认可•在DEV/QC环境持续集成阶段稳定的前提下,对线上环境集成进行推进,应打消各组人员的顾虑如何使用Jenkins替代之前成熟的脚本发布•经过稳定测试后,将人工执行的脚本替代。必要的情况下,在IDC机房部署Jenkins的SLAVE服务器。迁入之前的定时脚本•考虑将定时脚本迁入到Jenkins中进行管理线上环境持续集成阶段-目标使用Jenkins实现线上环境的快速发布、回滚、问题定位等需求,自动标签功能。问题Q&A分享会问题简要说明一下我们要实现的目标中各组人员的分工(开发、测试、运维)怎样实现程序配置文件集中管理感谢大家来参会,谢谢!
本文标题:可持续集成Jenkins
链接地址:https://www.777doc.com/doc-6746586 .html