第十八單元 自動化持續集成

一、概念

互聯網軟件的開發和發佈,已經形成了一套標準流程,最重要的組成部分就是持續集成(Continuous integration,簡稱CI)

1.1. 持續集成(採蜜)

持續集成指的是,頻繁地(一天多次)將代碼集成到主幹。
它的好處主要有兩個:
(1)快速發現錯誤。每完成一點更新,就集成到主幹,可以快速發現錯誤,定位錯誤也比較容易。
(2)防止分支大幅偏離主幹。如果不是經常集成,主幹又在不斷更新,會導致以後集成的難度變大,甚至難以集成。

持續集成的目的,就是讓產品可以快速迭代,同時還能保持高質量。它的核心措施是,代碼集成到主幹之前,必須通過自動化測試。只要有一個測試用例失敗,就不能集成。

1.2. 持續交付

持續交付(Continuous delivery)指的是,頻繁地將軟件的新版本,交付給質量團隊或者用戶,以供評審。如果評審通過,代碼就進入生產階段。

持續交付可以看作持續集成的下一步。它強調的是,不管怎麼更新,軟件是隨時隨地可以交付的。

1.3. 持續部署

  • 定義:持續部署(continuous deployment)是持續交付的下一步,指的是代碼通過評審以後,自動部署到生產環境。
  • 目標:代碼在任何時刻都是可部署的,可以進入生產階段。
  • 前提:能自動化完成測試、構建、部署等步驟。

二、Jenkins介紹

2.1. Jenkins概念

Jenkins 是一個開源軟件項目,是基於Java開發的一種可拓展持續集成工具,主要用於持續、自動地構建 / 測試 / 集成軟件項目以及監控一些定時執行的任務。

2.2. Jenkins目的

1、持續、自動地構建/測試軟件項目。
2、監控軟件開放流程,快速問題定位及處理,提示開放效率。

2.3. 特性

• 易於安裝,只要把 jenkins.war 部署到 Tomcat 即可運行
• 易於配置,所有配置都是通過其提供的 web 界面實現
• 集成 RSS/E-mail,通過 RSS 發佈構建結果或當構建完成時通過 e-mail 通知
• 生成 JUnit / TestNG 測試報告
• 分佈式構建,支持 Jenkins 能夠讓多臺計算機一起構建/測試
• 插件支持,支持擴展插件,你可以開發適合自己團隊使用的工具

2.4. 產品發佈流程

產品設計成型 → 開發人員開發代碼 → 測試人員測試功能 → 運維人員發佈上線

三、安裝配置Jenkins

去官網下載jenkins.war包。
官網地址

3.1 兩種方式開啓Jenkins

  • 方式1:
    在tomcat的bin目錄下啓動(最常用)
  • 方式2:
    打開cmd,進入jenkins目錄,然後運行命令:java -jar jenkins.war

四、搭建JMeter+Jenkins+Ant持續化

Ant下載及配置安裝
下載Apache-ant
解壓到你想要安裝的目錄
配置環境變量
驗證是否安裝成功
拷貝Jemter包到ant下
新建一個build.xml文件,裏面填入如下代碼

<?xml version="1.0" encoding="UTF-8"?> <project name="ant-jmeter-test" default="run" basedir="."> <!-- 需要改成自己本地的 Jmeter 目錄--> <property name="jmeter.home" value="G:\jmeter\apache-jmeter-3.0" /> <!-- jmeter生成jtl格式的結果報告的路徑--> <property name="jmeter.result.jtl.dir" value="G:\jmeter\jmeter-ant-jenkins\testResult" /> <!-- jmeter生成html格式的結果報告的路徑--> <property name="jmeter.result.html.dir" value="G:\jmeter\jmeter-ant-jenkins\testResult" /> <!-- 生成的報告的前綴--> <property name="ReportName" value="TestReport" /> <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/report.jtl" /> <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/index.html" /> <!-- 接收測試報告的郵箱 --> <property name="mail_to" value="[email protected]" /> <property name="lib.dir" value="${jmeter.home}/lib"/> <path id="xslt.classpath"> <fileset dir="${lib.dir}" includes="xalan*.jar"/> <fileset dir="${lib.dir}" includes="serializer*.jar"/> </path> <target name="run"> <antcall target="test" /> <antcall target="report" /> </target> <target name="test"> <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" /> <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}"> <!-- 聲明要運行的腳本。"*.jmx"指包含此目錄下的所有jmeter腳本--> <testplans dir="G:\jmeter\jmeter-ant-jenkins" includes="*.jmx" /> <property name="jmeter.save.saveservice.output_format" value="xml"/> </jmeter> </target> <target name="report"> <xslt classpathref="xslt.classpath" force="true" in="${jmeter.result.jtlName}" out="${jmeter.result.htmlName}style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl"> <!-- 因爲上面生成報告的時候,不會將相關的圖片也一起拷貝至目標目錄,所以,需要手動拷貝 --> </xslt> <copy todir="${jmeter.result.html.dir}"> <fileset dir="${jmeter.home}/extras"> <include name="collapse.png" /> <include name="expand.png" /> </fileset> </copy> </target> </project>
進行命令行模式後,進入剛纔創建的xml文件存放目錄,如:D:\build 輸入ant即可

五、集成jenkins

打開Jenkins,配置Ant環境
新建一個自由風格任務
構建觸發器
構建配置
配置HTML插件
立即構建
針對報告中不顯示聚合報告的情況
Jenkins執行自動化測試後發送測試報告郵件

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章