持續集成理念
持續集成(CI)是一種實踐,可以讓團隊在持續基礎上收到反饋並進行改進,不必等到開發周期后才尋找和修復缺陷。
它的好處有幾個方面:
● 快速發現錯誤:每完成一點更新,就集成到主干代碼,可以快速發現錯誤,定位錯誤也比較容易。
● 防止分支大幅偏離主干:如果不是經常集成,主干代碼又在不斷更新,會導致以后集成的難度變大,甚至難以集成。
● 減少重復性的工作:通過自動化的持續集成可以將編譯、部署、測試等動作都變成自動化的,無需太多人工干預。
部署job流水線,使得一個應用程序從構建、部署、測試和發布這個過程實現自動化,是現代DevOps理念的核心組成部分。在不同的企業內部,部署流水線的具體實現是不一樣的,但基本原理都是相同的。
一般常見流水線:提交代碼->靜態代碼掃描->單元測試->編譯打包->自動部署->接口自動化測試->UI自動化測試->發布生產環境->用戶驗證階段
- 部署方式:
1、觸發式構建:用於開發環境部署,開發人員push代碼或者合並代碼到svn項目的master分支,jenkins就部署代碼到對應服務器。
2、參數化構建:用於測試環境預上線環境部署,開發push代碼或者合並代碼到svn項目的master分支之后,並不會部署代碼,而是需要登錄到jenkins的web界面,點擊構建按鈕,傳入對應的參數(比如參數需要構建的tag,需要部署的分支)然后才會部署。
3、定時構建:用於自動打包,定時構建是在參數化構建的基礎上添加的,開發人員可以登錄jenkins手動傳入tag進行打包,如果不手動打包,那么jenkins就每天凌晨從SVN拉取最新的代碼打包。
持續集成基本配置
本環境整體思路部署技術方案:SVN + RF + Jenkins + nginx + cenos7 + Allure
- 新建節點
- 系統管理—>節點管理—>新建節點
- 虛擬機cetnos系統部署是Jenkins平台,采用master主節點管理各子節點,因項目是基於windows環境執行用例,需要在添加子節點windows環境,當然也可添加基於linux環境子節點,視項目運行環境而定。
- 添加子節點可以是物理機也可以是虛擬機。
- 標簽作用根據各子節點對應的標簽主機哪台空閑就自動調用哪台主機構建執行
新建子節點,平台會有提示下載slave-agent.jnlp到子節點機子,不能可以通過在子節點命令行啟動子節點。如下圖所示:
這里通過打開JAVA控制面板運行腳本啟動,子節點slave-windows會變成在線狀態。如下圖所示:
- 新建job
這里選擇自由風格軟件項目,然后設置job任務名稱。
- 配置General
這里選擇丟棄舊的構建,保持構建建天數3天,最大個數3,設置限制運行節點標簽為robot,其它更多參數視實際項目及環境而定。
- 源碼管理
- 設置SVN版本庫路徑及賬戶密碼
- 其它默認,也可根據實際情況配置其它參數
- 觸發構建器
● 定時構建表示設定的時間點進行自動觸發構建
● 輪詢SCM表示檢測提交代碼到SVN並自動觸發構建,這里設定每隔5分鍾檢測SVN狀態,只要狀態有變化在5分鍾后進行觸發構建
● 檢測SVN狀態,需要在主節點Jenkins服務器的SVN版本庫修改鈎子腳本
● 定時任務觸發時間表達式
采用了著名的UNIX任務調度工具CRON所使用的配置方式。用5個字段代表5個不同的時間單位(中間用空格隔開):
分 時 日 月 星期幾
舉例:
0 2 * * * 表示每天凌晨2點
*/10 * * * * 每隔10分鍾一次
45 10 * * 1-5 每周星期一到星期五的10:45分執行
- 構建
● 演示環境目前未涉及到構建環境,視實際項目和環境而定。
● 項目是基於windows執行自動化用例,這里選擇windows批處理命令,也就是構建時候自動下發命令執行自動化用例
● 如項目是基於linux環境運行,需要選擇執行shell選項並設置參數
- 構建后操作
● Path采用相對路徑,目錄名必須與構建批處理一樣目錄名
● Robot output設定項目執行后存放的報告路徑
● bulid result是指設定閥值
注意:構建后操作輸出的結果必須與前圖構建的批處理腳本路徑要求一致性。
- 郵件配置
● 這里設置郵件相關參數,可以在此job配置數據,如不設置數據,需使用默認變量的,要在系統管理—>系統配置里面配置好
● 郵件內容樣式可以自定義模板,需要使用前端技術編寫好
● Attach Build Log:表示接收到郵件含有構建log日志文件
● Attachments:表示接收到郵件含有報告附件文件
這里采用默認方式。
- 郵件Triggers
● triggers有很多種,我們使用最多的就是success和failure,always表示每次構建都發送郵件
●可以給每個策略選擇不同的收件人:
1、Recipient List :在策略中配置的收件人列表
2、Developers:發送給檢測到的代碼修改的開發人員
3、Requestor:發送給觸發這次構建的用戶
4、Clprits:發給引發錯誤的開發人員
-
系統管理的郵件全局配置
注意:郵箱的密碼必須是授權碼,不是郵箱的登錄密碼。
-
設置郵件的Triggers
- 平台展示
-
robotframework報告展示樣本
-
Allure報告展示樣本
- 構建后自動發出的郵件接收到的報告樣本展示一
- 構建后自動發出郵件接收到的報告樣本展示二
備注:因每個用例執行速度達到毫秒級,所以表格顯示的是0分0秒。