持續集成與持續交付

持續集成與持續交付 馬上咨詢

    汪珺  開發測試架構師、資深咨詢師、資深培訓師 

    講師、HP美國敏捷咨詢師、資深咨詢師、資深培訓師、Exin TTT授權培訓講師(ScrumMaster、Lean、Tmap、DevOpsMaster等)。鳳凰項目沙盤認證授權教練,挑戰埃及沙盤認證權限講師,敏捷和DevOps落地轉型專家,解決方案專家,某跨國集團解決方案部門總監。

    一、為什么需要該課程

    “在你的公司里,僅涉及一行代碼的改動需要花多長時間才能部署上線?你的處理方式是否可重復且可靠呢?” 從“決定做某種修改”到“該修改結束正式上線”的這段時間稱為周期時間(cycle time)。對任何項目而言,它都是一個極為重要的度量標準。 

    在很多組織中,周期時間的度量單位是周或者月,而且發布過程也是不可重復或不可靠的。部署常常是手工操作過程,甚至將軟件部署到測試環境或試運行環境都需要一個團隊來完成,更不用說部署到生產環境了。我們遇到過同樣復雜的項目,它們曾經也是這種狀態,但是經過深入的業務流程重組后,對于某一關鍵的修改,團隊做到了小時級別甚至分鐘級別的發布。之所以能做到,就是因為我們創建了一個完全自動化、可重復且可靠的過程,讓變更順利地經過構建、部署、測試和發布過程。在這里,自動化是關鍵,它讓開發人員、測試人員和運營人員能夠通過一鍵式操作完成軟件創建和部署過程中的所有常見任務。

    軟件發布應該是一個快速且可重復的過程?,F在,很多公司都會在一天內發布很多次。甚至對于那些代碼非常復雜的代碼庫來說,這樣做也是可能的。我們在本課程中就會告訴你如何做到這一點。本課程將講述如何縮短從想法到商業價值實現的時間,并使之更安全,從而徹底改變軟件交付方式。

    最終目標是全自動化的DevOps,課程介紹了DevOps 的起源和概覽,并通過一個貫穿全課程的例子,從架構開始,到代碼的存儲、構建、測試、部署、監控,直至流程的跟蹤,推薦了許多可用的工具和可行的示范,面向愿意承擔更大責任的開發人員和系統管理員,也很適合愿意更好地支持開發人員的運維人員。無須任何DevOps 知識即可快速上手!

    本課程內容廣泛,包括經常提到的配置管理、模塊化,源代碼控制、發布計劃、代碼審計、編譯依賴和持續集成,以及持續交付、單元/自動化測試和部署流程的自動化。我們也會講述自動化驗收測試、依賴管理、數據庫遷移,以及測試和生產環境的創建與管理等技術。 

    二、課程內容安排

    培訓內容

    第1單元   DevOps 最佳實踐

    內容一:DevOps 核心思想與原理

    1. 我們將為您體系化的介紹DevOps的發展歷史,并從價值,原則,方法,實踐和工具這5個層次為您展示DevOps知識體系的全景,建立您對DevOps的整體化,體系化認知。同時,通過對基礎設施即代碼(Infra As Code)這一DevOps最重要實踐的解析,借助案例介紹實施DevOps過程中的策略。
    2. DevOps 概念與評估框架
    3. DevOps 的必要性
    4. 如何發展DevOps文化-敏捷與快速反饋
    5. DevOps的基礎人、過程和技術——的重要性
    6. Docker 容器概述
    7. 解虛擬機和容器之間的差別
    8. Docker 的安裝與配置
    9. DevOps應用與現狀
    10. DevOps工具研究和開發
    第2單元   持續交付

    內容一:軟件交付持續交付

    1. 一些常見的發布反模式
    2. 反模式:手工部署軟件
    3. 反模式:開發完成之后才向類生產環境部署
    4. 反模式:生產環境的手工配置管理
    5. 如何實現自動化交付目標
    6. 交付團隊必須接收反饋并作出反應
    7. 候選發布版本
    8. 軟件交付的原則
    9. 創建一個可重復且可靠的過程
    10. 將幾乎所有事情自動化
    11. 把所有的東西都納入版本控制
    12. 提前并頻繁地做讓你感到痛苦的事
    13. “DONE”意味著“已發布”
    14. 交付過程是每個成員的責任
    15. 持續改進
    16. 通過國際研發中心電信計費系統演示持續交付
    第3單元   軟件持續集成

    內容一:軟件集成

    1. 持續集成的定義
    2. 持續集成的特點
    3. 持續集成原則
    4. 持續集成的核心價值
    5. 持續集成實踐步驟
    6. 如何選取最佳解決方案
    7. 持續集成實踐計劃
    8. 持續集成實踐風險


    內容二:軟件集成實踐---JenKins工具為案例

    1. 持續集成工具介紹
    2. 持續集成工具Jenkins
    3. 為什么選用Jenkins
    4. Jenkins 簡介
    5. 搭建Jenkins 環境
    6. Jenkins 的系統配置
    7. Jenkins+版本控制
    8. Jenkins+JUnit
    9. Jenkins+Selenium
    第4單元  版本/ 配置管理-一切皆代碼

    內容一:版本控制 

    1. 項目倉庫
    2. 我們需要存儲什么
    3. 工作拷貝和操作文件 
    4. 項目,目錄以及文件 
    5. 版本從何而來
    6. 標簽 
    7. 分支 
    8. 合并 
    9. 加鎖策略的選擇
    10. 配置管理(CM)
    11. CVS/Subversion版本管理工具
    12. Git版本管理工具


    內容二:配置管理 

    1. 使用版本控制 
    2. 對所有內容進行版本控制     
    3. 頻繁提交代碼到主干      
    4. 使用意義明顯的提交注釋     
    5. 軟件配置管理 
    6. 配置與靈活性 
    7. 配置的分類     
    8. 應用程序的配置管理 
    9. 跨應用的配置管理 
    10. 管理配置信息的原則      
    11. 運行環境管理
    12. 環境管理的工具      
    13. 變更過程管理
    14. 通過大量項目案例分析如果大規模版本管理
    第5單元  模塊化和依賴管理

    內容一:模塊化/組件化/包基本原則

    1. 在向組件中分配類時應該依據什么原則?
    2. 應該使用什么設計原則來管理組件之間的關系?
    3. 組件的設計應該先于類呢(自頂向下),還是類的設計應該先于組件(自底向上)?
    4. 組件實體以什么方式存在呢?
    5. 組件創建好后,我們應當將它們用于何種目的?
    6. 包的設計原則
    7. REP 重用發布等價原則 
    8. CRP 共同重用原則
    9. CCP 共同封閉原則
    10. ADP 無環依賴原則
    11. SDP 穩定依賴原則
    12. SAP 穩定抽象原則
    13. 項目案例分析
    第6單元  持續檢測代碼質量-

    內容一:代碼質量持續檢測 

    1. 代碼質量度量
    2. 代碼質量審查和評審
    3. 代碼度量指標
    4. 代碼質量度量的工具
    5. 持續評估代碼質量


    內容二:軟件代碼可維護性4個分類標準

    1. 代碼內部質量的核心標準
    2. 可分析性(ANALYZABILITY:找到錯誤在代碼中的位置或者軟件中必須修改的部分容易程度
    3. 可修改性(CHANGEABILITY):即要完成一個修改需要的工作量
    4. 穩定性(STABILITY):即修改之后出問題的程度
    5. 可測試性(TESTABILITY):即能夠驗證修改的結果


    內容三:軟件代碼質量指標

    1. ANALYZABILITY = VG + STMT + AVGS + COMF 
    2. CHANGEABILITY = PARA + LVAR + VOCF + GOTO 
    3. STABILITY = NBCALLING + RETU + DRCT_CALLS + PARA
    4. TESTABILITY = DRCT_CALLS + LEVL + PATH + PARA


    內容四:自動化預防-AEP 

    1. Automated Error Prevention(簡稱AEP),是指通過整個軟件開發周期中自動地預防錯誤來提高產品質量
    2. 自動化錯誤預防五大法則
    3. 應用行業最佳實踐來防止普遍錯誤并建立全方位的錯誤預防基礎---案例分析
    4. 按需要修改實踐來預防特殊的錯誤
    5. 確保每個小組正確地,始終如一地貫徹執行AEP
    6. 循環漸進地采用每一個實踐
    7. 利用統計來穩定每一個過程,讓它發揮價值
    8. 通過案例進行分析,某研發中心代碼自動化預防機制建立


    內容五:BugDetective 

    1. BugDetective概述
    2. BugDetective規則
    3. Parasoft公司旗下產品C++Test BugDetective分析技術,該技術使用了幾種分析技巧,包括模擬應用程序執行路徑,以識別可能觸發運行時缺陷的路徑。檢測到的缺陷包括,使用未初始化的內存、引用空指針、除數為零、內存和資源泄漏。
    4. 通過案例進行分析,某研發中心代碼自動化預防機制建立
    第7單元  自動化測試

    內容一:理解單元測試 

    1. 什么是單元測試?
    2. 為什么要寫單元測試,為什么不寫單元測試
    3. 理解單元測試--第一個單元測試案例
    4. 好的測試是什么樣子的,為什么要寫"好"的單元測試
    5. 單元測試的維護成本
    6. 單元測試與自動化測試
    7. 分析真實項目,如何做單元測試
    8. 通過案例分析,了解基本的單元測試


    內容二:自動化驗收測試 

    1. 自動化驗收測試     
    2. 為什么驗收測試是至關重要的      
    3. 如何創建可維護的驗收測試套件  
    4. 分析人員和測試人員的角色 
    5. 將驗收條件變成可執行的規格說明書
    6. 窗口驅動器模式:讓測試與GUI解耦       
    7. 實現驗收測試  
    8. 驗收測試中的狀態
    9. 驗收測試階段 
    10. 通過案例進行分析,自動化測試最佳實踐
    第8單元  持續數據庫集成

    內容一:持續數據機集成和更新

    1. 持續數據庫集成
    2. 自動化數據監測和更新
    3. 使用本地數據庫驗證
    4. 利用版本控制數據庫更新
    5. 自動化根據開發工程師培訓修改數據庫     
    6. 讓DBA和開發一起
    第9單元  持續部署

    內容一:持續部署環境準備

    1. 隨時隨地發布可工作的軟件
    2. 為庫中的資產打上標簽
    3. 得到干凈的環境
    4. 為每一個構建版打上標簽
    5. 執行所有的測試
    6. 創建構建反饋報告
    7. 回滾構建的過程能力


    內容二:持續部署

    1. 持續部署與發布     
    2. 創建發布策略 
    3. 應用程序的部署和晉級
    4. 對發布過程進行建模并讓構建晉級
    5. 部署回滾和零停機發布 
    6. 藍綠部署和金絲雀發布
    7. 緊急修復和持續部署
    8. 記錄部署活動
    9. 快速失敗
    10. 不要直接對生產環境進行修改
    第10單元  持續反饋

    內容一:持續反饋

    1. 用問題跟蹤器做什么? 
    2. 工作流和問題的一些例子
    3. 我們需要從問題跟蹤器里得到什么?
    4. 問題跟蹤器激增所帶來的問題 
    5. 所有的跟蹤器
    6. Bugzilla 
    7. Trac 
    8. 所有正確的東西
    9. 使用持續反饋機制
    10. 電子郵件/文本消息


    內容二:持續交付信息反饋----看板和Dashboard

    1. 如何建立Dashboard來快速定位整個系統的質量弱點
    2. 大規模自動化測試的Dashboard實際演示與詳解
    3. 通過率、各種Top10及缺陷與用例的關聯


    久久综合久久综合九色_人妻媚药中出中文字幕电影_亚洲伊人成综合人影院