數人云|當容器與CI/CD相遇,7個建議送給你

數人云:Docker是CI/CD的早期採用者,經過利用如GIT等源代碼控制機制的正確集成,Jenkins能夠在開發者每次提交代碼時啓動構建過程,此過程生成新的Docker鏡像,能夠在整個環境中當即生效,所以團隊能夠快速構建共享和部署應用。服務器

用途:根據開發需求,自動配置環境及基礎設施,並配備擁有自助服務的自動化工具。運維

  • 企業所面臨的挑戰:
  • 不可用的環境
  • 缺少環境配置所需技能
  • 缺少環境配置所需時間

什麼是CI(持續集成)

CI是一種開發實踐,開發者天天將代碼集成到共享存儲庫中幾回,支持將新功能與現有代碼集成在一塊兒,此集成的代碼還能夠確保運行時環境中沒有錯誤,容許檢查它與其餘變動的反應。工具

目前用於CI最流行的工具是「Jenkins」,GIT用於源代碼控制存儲庫,Jenkins能夠從GIT存儲庫中提取最新的代碼修訂,並生成能夠部署到服務器上的構建版本。單元測試

什麼是持續交付

持續交付是指在給定的時間內將軟件部署到任何環境的能力,包括二進制文件、配置和環境變動。測試

什麼是持續部署(CD)

持續部署是開發團隊在短週期內發佈應用的一種方法,開發人員所作的任何變動都會被部署到生產環境中。優化

什麼是Docker?

Docker是一個容器化平臺,以容器的形式將應用及全部依賴項打包在一塊兒,確保應用可以在任何環境中無縫地工做。spa

Docker如何幫助CI/CD

Docker能夠幫助開發者構建代碼並在任何環境中進行測試,以便儘早地在開發生命週期中獲取BUG。Docker的優點在於:幫助簡化流程、節省構建時間、並容許開發者並行地運行測試。版本控制

Docker還能夠集成源代碼控制管理工具,如GitHub和Jenkins等集成工具,開發者將代碼提交到GitHub,測試使用Jenkins建立影響自動觸發構建的代碼,能夠將此影響添加到Docker registry,以處理不一樣環境類型之間的不一致。生命週期

技術解決方案

沒有Docker參與的典型CI:開發

Markdown

開發者將代碼提交到存儲庫,這些代碼一般會在持續集成服務器上觸發構建,構建過程可能會根據所構建的應用而不一樣,通常狀況下,能夠進行編譯、運行測試用例、構建應用,而後將應用部署到服務器中。

經過Docker進行的CI:

Markdown

在CI過程當中安裝Docker的方法是讓CI服務器在構建應用後再構建Docker鏡像,應用進入鏡像內部,將鏡像推到Docker Hub,在另外一臺主機上或QA/DEV/生產環境,從Docker Hub提取即將完成的構建,並運行應用的容器,在CI服務器中,甚至能夠將編譯和測試做爲鏡像構建的一部分運行。

好處:

  • 消除不一致的環境設置問題
  • 任何運行Docker的機器均可以使用Docker鏡像
  • 節省構建和設置過程當中的時間
  • 容許並行測試
  • DevOps模式,開發能夠專一於開發應用,而運維能夠專一於部署
  • 改進版本控制,經過改變Docker鏡像來規範環境

本文做者有多年的持續部署(CD)經驗,幫助不少公司實踐及優化CD,如下是一些關於CI/CD的經驗及建議:

No.1 使用工具:

雖然使用工具聽起來很日常,但仍有一些公司沒有使用工具,這對公司或我的沒有益處,推薦使用Circle相似的工具,工做流方面也應該有必定的工具使用規劃。

No.2 作單元測試:

需時刻提醒團隊成員,持續部署只是應用於部署的持續集成,所以須要良好的單元測試覆蓋率,若是尚未一個堅實的單元測試和持續集成的基礎,那就是準備尚不完善。

No.3 作好監控:

BUG和回滾是不可避免的,經過查看生產中的數據,將系統放在適合的位置,能夠知道什麼時候進行了回滾或BUG傳遞,將其綁定到自動化回滾,所以若是有關鍵功能或指標出錯,那麼CD系統會自動回滾到穩定版本。

No.4 團隊信任:

選擇相信團隊成員,容忍開發人員的錯誤,在認爲合適的時候進行部署,並互相檢查代碼,將持續部署與分層權限的區域性結合在一塊兒。

No.5 簡化代碼評審過程:

與上面所說的團隊信任相似,團隊應該檢查代碼變動,選擇最有資格和洞察力的人去檢查開發人員的代碼。

No.6 讓開發人員緊密參與生產操做:

沒有成功地過分到持續部署的公司最多見的問題是開發團隊是獨立的,開發和運維應該在適合的時候互相參與到對方的工做當中,要讓開發團隊深刻參與CD基礎設施的建設和規劃。

No.7 儘早測試:

團隊須要不斷地反饋,把測試目標看作是在正確的時間得到正確的反饋,所以在部署時才能知道什麼是有效或錯誤的,越早發現BUG,就越容易修復,持續部署作的極好的公司都會有全面的單元測試和集成測試覆蓋率。

結論:

持續測試也是一種開發實踐,在一天的測試計劃中,開發須要不斷地將代碼集成到共享存儲庫中,爲了讓開發團隊可以檢測出問題,自動化構建能夠用來驗證每一個測試,若不遵循連續的方式,那麼集成和修復BUG會消耗更長的時間。

爲了提升應用開發過程的敏捷性,在企業中使用Docker簡化和穩定了CI/CD,Docker容器的輕量級特性使其快速運轉,並有助於快速測試,而且可使用可重複的流程,建立相似環境產品。

相關文章
相關標籤/搜索