持續集成及自動化部署工具
持續部署[CD]
**僅僅單元測試還不夠,各個模塊必須可以在服務器上運行;
**關注點在於項目功能(各個模塊)部署至服務器後能夠運行,爲測試環節或最終用戶使用作好準備;
持續集成[CI]
**常常性、頻繁的把全部模塊集成在一塊兒進行測試[集成測試],有問題儘早發現;
**關注點在於儘早發現項目總體運行問題,儘早解決;
持續交付[CD]
**用小版本不斷進行快速迭代,不斷收集用戶反饋信息,用最快的速度改進優化;[大版本/release]
**關注點在於研發團隊的最新代碼可以儘快讓最終用戶體驗到;
整體目標
**好處:
***1.下降風險;
***2.減小重複過程[如編譯、測試、打包等固定流程] - 自動化流程;
***3.任什麼時候間、任何地點生成 "可部署的軟件";
***4.加強項目的可見性<1>有效決策;<2>注意到趨勢;
***5.創建團隊對開發產品的信心;
Jenkins<open> | Hudson<Oracle>
** 前提知識:Linux基本命令|vim編輯器|Maven項目構建管理|Github|SVN
** 可整合Github或Subversion
** 人工部署
** 自動化部署
*** 搭建持續集成環境:能夠把構建、部署自動化,減輕工做量
> deploy web container插件 + >
*** dev > git repository > 鉤子程序 > jenkins > [GIT插件]> code >打包> war包>部署>Tomcat server
> [Maven插件] > + >
Jenkins:
### Jenkins + SVN:
** 要點:
*** 建立虛擬機安裝Linux系統:vm1-svn,vm2-jenkins,vm3-application(tomcat);
*** 版本控制子系統(SVN):
- subversion服務器;
- 項目對應版本庫;
- 版本庫中鉤子程序;
-- linux curl命令:-X:指定請求方式;-v:顯示響應結果;-u:攜帶用戶名/密碼;-H:攜帶請求消息頭信息;
*** 持續集成子系統
- JDK;
- Tomcat;
- Maven;
- Jenkins:
-- 主體程序;
-- svn插件;
-- maven插件;
-- Deploy to Web Container插件;
***應用發佈子系統
- JDK;
- Tomcat;
### Jenkins + Github:
**要點:
*** Jenkins須要部署到外網,因Github沒法沒法訪問內網地址;
- 安裝Jenkins;
*** Jenkins所在主機須要安裝GIT,git從GitHub上clone代碼;
- echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc # >>追加
- source /etc/bashrc # 使文件生效
*** Jenkins須要指定git程序位置,和指定jdk、maven程序位置相似;
- 配置git;
*** 在GitHub上使用每一個repository的webhook方式遠程觸發Jenkins構建;
- GitHub配置webhook[repository>settings>webhook>add webhook>遠程觸發的身份驗證令牌]
*** 在Jenkins內關閉「防止跨站請求僞造」;
- 全局安全配置 > CSRF Protection > 取消勾選;