在本文中,峯會大咖黃金澤將從工具鏈逐步鋪開的角度,講述中國出口信用保險公司IT團隊在交付方面如何從「刀耕火種」發展到 DevOps 落地的快速轉型。api
點擊【這裏】瞭解峯會詳情
關於做者:服務器
黃金澤,香港浸會大學計算機專業碩士研究生,中國出口信用保險公司信息技術部 DevOps高級項目經理,2013年起負責公司業務系統 DevOps 流水線產品的鋪設和搭建、DevOps理念的推廣。帶領公司研發團隊將部署流程從手工到全自動化第一人。期間深度使用Atlassian家族產品,包括JIRA Software,Confluence,Bitbucket,Fisheye/Crucible,Bamboo等,咱們的DevOps 發展之旅與Atlassian產品的使用密不可分。運維
中國出口信用保險公司是我國惟一政策性出口信用保險公司,中國信保經過爲對外貿易和對外投資合做提供保險等服務,促進對外經濟貿易發展。模塊化
現階段公司面臨由大到強的總體轉型,總部及分支機構迫切須要IT團隊提供科技賦能,以用戶爲中心,實現科技引領的目標。所以IT團隊面臨很大挑戰,傳統的IT模式向DevOps轉型也成爲必然趨勢。微服務
項目背景:在企業IT部門轉型 DevOps 任務之初,IT團隊生產力工具匱乏,僅有的SVN和QC工具已經沒法繼續與日益增加的需求相匹配,同時,開發、運維間隙愈來愈大,相關技術積累薄弱、新舊文化衝突突顯,轉型困難重重。工具
Continuous Integration,持續集成包括:源代碼變動、自動檢測、拉取、構建、單元測試、自動化測試等。單元測試
Continuous Delivery,持續交付包括:源代碼變動、自動檢測、拉取、構建、單元測試、自動化測試、生產交付等測試
在衆多CI/CD交付鏈介紹中,從CI到CD的區別只是最後可否將代碼交付到生產環境。從理論上講,在CI/CD交付鏈所有工具和技術就位並運轉後,可否交付到生產彷佛並非很困難的問題。但在項目落地過程當中,咱們發現仍是「Too Young To Naive(很傻很天真)」!ui
那麼影響從CI到CD的究竟是什麼呢?我總結了如下4點:spa
接下來就讓咱們看看咱們是如何一步步經過 Atlassian 的全系列工具落地 DevOps 工具鏈的。
過去,IT團隊開發與運維的交付基本靠手工搬運文件形式進行,這種交付方式不只效率低下,甚至常常出現人工失誤,更嚴重的狀況是,交付時很難預知交付後的各類情況,大版本的交付在所不免。
IT團隊在代碼管理方面也沒有有效的版本管理機制,僅有的SVN只是做爲備份和保存的依據。
初步變革發生在Git服務器搭建以後,團隊陸續接受了從SVN向Git的轉變,在Git的推廣中滲透了版本與分支的管理理念,今後爲後續 DevOps 轉型奠基基礎。其中SVN向Git遷移的同時咱們對源碼庫進行了進一步的拆分,以更好地適應分支的管理和後續微服務的推廣。咱們平滑遷移了所有提交歷史和用戶映射,使用了 SVN Mirror for Bitbucket Server工具。
後續,咱們將 Git 與 Jira Software 進行集成,實現了將代碼與開發任務的關聯。
咱們還同時考察和對比了 Bamboo vs. Jenkins,Bitbucket vs. GitHub, 但考慮到與 Jira 和 Confluence 的集成優點,咱們選擇了 Atlassian 的全套工具以及插件做爲公司下一代發展的平臺,後面的實踐也證實了選對工具和插件對人力資源的節約是多麼巨大!
下圖是咱們如今的 DevOps 所使用到的產品和平臺,接下來就讓咱們一塊兒來看看咱們是如何一步步實現 DevOps 全流程的過程。
根據業務場景靈活選擇插件:
咱們根據本身的業務需求選購了不少 Atlassian Marketplace 裏的插件來實現需求,而不是盲目的進行二次開發,Marketplace 裏的插件種類很是多,能夠實現咱們的絕大部分需求。這裏,我也把咱們用的比較好的插件推薦給你們:
緊接着,咱們引入了 Atlassian 的 Bitbucket 產品,用來對 Git 分支進行管理。
在 Bitbucket 的功能擴展上,咱們也選擇了兩款很好用的插
同時,咱們還購買了 Fisheye,開發團隊在線實現Code Review. 代碼審覈和提交回溯有據。
在開發相關的基礎工具逐步完成後,咱們深刻運維方向,引入了持續集成工具 Bamboo。
Bamboo 是 Atlassian 家族成員中作 DevOps 的核心工具,在產品選型時曾對比過Jenkins 和 Bamboo,但考慮到與 Jira Software 和 Bitbucket 的集成優點,首選了Bamboo 做爲下一代發展的工具,Atlassian 產品之間的無縫連接和集成,以及企業級的應用和支持,也爲咱們項目的成功打下堅實基礎。
隨着Bamboo構建次數冪等級的增長,咱們搭建 Bamboo Agent,爲編譯提供更多計算資源。今後開始,團隊實現從持續集成到持續交付的轉型,代碼提交後可直接經過 DevOps 通道進入生產環境,多代理模式提供了多個版本和分支的代碼同時build和run一個項目的可能,編譯速度大幅度提升;同時咱們引入 Pipeline 工具,對交付流程進行可視化和模塊化管理。
咱們陸續將 Bamboo 與 Jira、Git、Bitbucket 等工具進一步整合,實現了項目、開發任務、缺陷、代碼、環境、測試到生產的無縫關聯,任何一步的操做均可尋蹤覓跡找到源頭,從該階段開始,開發團隊工做效率實現跨越式提高,代碼終於在 DevOps 通道中流動起來了,版本管理理念深刻人心。同時咱們沒有停下腳步,在團隊內部針對不一樣開發組狀況持續開展培訓,並將敏捷和 DevOps 理念貫穿其中,在後續團隊文化建設方面起到了重要做用。
接下來,咱們將 Bamboo 與 Nexus 進行集成,對編譯日誌進行了集中管理,獲取編譯涉及代碼的提交人,對其進行通知,並經過 Jira 維護的開發人員與其項目經理列表,對代碼項目經理進行通知。
將編譯過程與自動化測試進行集成,自動化測試報告直接在日誌進行打印和通知。
2019年,咱們搭建了 Sonar 和 CAST 靜態代碼掃描工具,與工具鏈產品進一步集成,補全了 DevOps 交付通道基礎工具上的最後一環。
自此,咱們的 DevOps 通道工具鏈基本鋪設完成,在通道前開發人員交付代碼,在通道後交付war 包給運維,而 DevOps 通道上的工具對開發人員均透明,整個過程所有自動化完成。
不久的未來,咱們的 DevOps 通道將進一步輸出容器到 PaaS 平臺,實現更進一步的敏捷交付。
2019年8月,Google 發佈了2019年全球 DevOps 發展狀況報告,其中將IT團隊的交付效能分爲低效、中效、高效和精英四個階段,劃分依據主要從部署頻率、代碼提交到交付的時間以及失敗率等因素進行判斷。
報告對 2018 至 2019年交付效率對比圖可見,全球交付精英團隊佔整體交付團隊的佔比儘管相比於2018年提升了一倍有餘,但仍僅佔所有團隊的20%。
回顧這幾年咱們 DevOps通道工具鏈的發展歷程,IT團隊能從過去手工部署快速轉型到 DevOps 精英團隊,離不開團隊領導的方向指引和大力支持,離不開團隊成員間的精益協做!
同時,在項目之初因爲咱們正確的選擇了全球排名第一的敏捷和團隊協做工具平臺:Jira+Confluence、Bitbucket+Bamboo 等,Atlassian 產品和插件之間的無縫組合讓咱們的 DevOps 工具鏈能夠被快速部署和落地實施,也爲咱們節約了寶貴的時間和人力資源!