持續集成及自動化部署之Jenkins

持續集成及自動化部署工具

持續部署[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 > 取消勾選;
相關文章
相關標籤/搜索