django 集成个推_持续集成CircleCI vs Travis CI vs Jenkins
持續集成(CI)的定義及其主要目標
持續集成(CI)是一種軟件開發實踐,它基于將代碼頻繁集成到共享代碼倉中。 然后通過自動構建(automated build)驗證每個簽入(Check-In)。
持續集成(CI)的主要目標是更早,更容易地識別開發過程中可能出現的問題。 如果定期集成 - 在查找錯誤時檢查的次數要少得多。 這樣可以減少調試時間,增加功能時間。 還有一個選項可以設置代碼樣式的檢查,代碼復雜度(低復雜性使測試過程更簡單)和其他檢查。 這有助于最大限度地減少負責代碼審查的人員的工作量,節省時間并提高代碼質量
它如何工作
- 開發人員在其本地計算機上檢查代碼
- 完成后 - 他們將代碼變更提交到代碼倉
- 代碼倉向CI系統發送請求(webhook)
- CI服務器運行任務(測試,覆蓋率,檢查語法等)
- CI服務器發布已保存的工件(artifacts)以進行測試
- 如果構建或測試失敗,CI服務器會向團隊發出警報
- 該團隊解決了這個問題
CircleCI vs Travis CI vs Jenkins
現在,當持續集成的過程明確時(我希望如此),我們可以轉向現在一些最流行的CI平臺的比較。 每個都有其優點和缺點。 讓我們從CircleCI開始吧。
CircleCI
Features :
- CircleCI是一個基于云的系統 - 不需要專用服務器,您無需管理它。 但是,它還提供了一個本地解決方案,允許您在私有云或數據中心中運行它。
- 即使是商業帳戶,它也有免費計劃
- Rest API - 您可以訪問項目,構建和工件(artifacts)。構建的結果將是工件或工件組。 工件可以是已編譯的應用程序或可執行文件(例如,android APK)或元數據(例如,關于測試`成功的信息)
- CircleCI 緩存必要的安裝(requirements installation)。 它會檢查第三方依賴項,而不是持續安裝所需的環境
- 您可以觸發SSH模式訪問容器并進行自己的調查(如果出現任何問題)
- 這是一個完整的開箱即用解決方案,需要最少的配置調整
CircleCI與以下產品兼容:
- Python,Node.js,Ruby,Java,Go等
- Ubuntu(12.04,14.04),Mac OS X(付費賬戶)
- Github,Bitbucket
- AWS,Azure,Heroku,Docker,專用服務器
- Jira,HipChat,Slack
CircleCI優點:
- 快速啟動
- CircleCI有一個免費的企業項目計劃
- 這很容易,也很快開始
- 輕量級,易讀的YAML配置
- 您不需要任何專用服務器來運行CircleCI
CircleCI缺點:
- CircleCI僅支持2個版本的Ubuntu免費(12.04和14.04)和MacOS作為付費部分
- 盡管CircleCI可以使用并運行所有語言,但tt僅支持“開箱即用”的以下編程語言:
Go(Golang),Haskell,Java,PHP,Python,Ruby / Rails,Scala
- 如果您想進行自定義,可能會出現一些問題:您可能需要一些第三方軟件來進行這些調整
- 此外,雖然作為基于云的系統是一方的優勢,它也可以停止支持任何軟件,你將無法阻止
Travis CI
Travis CI and CircleCI are almost the same
Both of them:
- Have YAML file as a config
- Are cloud-based
- Have support of Docker to run tests
What does TravisCI offer that CircleCI doesn’t?
- Option to run tests on Linux and Mac OS X at same time
- Supports more languages out of the box:
Android, C, C#, C++, Clojure, Crystal, D, Dart, Erlang, Elixir, F#, Go, Groovy, Haskell, Haxe, Java, JavaScript (with Node.js), Julia, Objective-C, Perl, Perl6, PHP, Python, R, Ruby, Rust, Scala, Smalltalk, Visual Basic
- Support of build matrix
Travis CI和CircleCI幾乎相同
他們都:
- 將YAML文件作為配置
- 是基于云的
- 支持Docker運行測試
TravisCI提供了一些CircleCI沒有的?
- 可選擇在Linux和Mac OS X上同時運行測試
- 開箱即用支持更多語言:
Android,C,C#,C ++,Clojure,Crystal,D,Dart,Erlang,Elixir,F#,Go,Groovy,Haskell,Haxe,Java,JavaScript(帶Node.js),Julia,Objective-C,Perl,Perl6, PHP,Python,R,Ruby,Rust,Scala,Smalltalk,Visual Basic
- 支持構建矩陣
構建矩陣
language: python python: - "2.7"- "3.4"- "3.5" env: - DJANGO='django>=1.8,<1.9'- DJANGO='django>=1.9,<1.10'- DJANGO='django>=1.10,<1.11'- DJANGO='https://github.com/django/django/archive/master.tar.gz' matrix: allow_failures:- env: DJANGO='https://github.com/django/django/archive/master.tar.gz'構建矩陣是一種工具,可以使用不同版本的語言和包運行測試。 您可以以不同的方式自定義它。 例如,某些環境的失敗可以觸發通知但不會使所有構建失敗(這對包的開發版本有幫助)
TOX
如果您更喜歡任何其他CI平臺 - 總有一個選項可以使用Tox創建構建矩陣。
[tox] envlist = py{27,34,35}-django{18,19,110,master} [testenv] deps = py{27,34,35}: -rrequirements/test.txtdjango18: Django>=1.8,<1.9django19: Django>=1.9,<1.10django110: Django>=1.10,<1.11djangomaster: https://github.com/django/django/archive/master.tar.gz commands = ./runtests.py [testenv:py27-djangomaster] ignore_outcome = TrueTox是一種通用的virtualenv管理和測試命令行工具。 您可以使用pip install tox或easy_install tox命令安裝它。
Travis CI優點:
- 開箱即用構建矩陣
- 快速啟動
- 輕量級YAML配置
- 開源項目的免費計劃
- 無需專用服務器
Travis CII缺點:
- 與CircleCI相比,價格更高,沒有免費的企業計劃
- 定制(對于某些你需要第三方的東西)
Jenkins
Features:
- Jenkins是一個獨立的基于Java的程序,隨時可以運行,包含Windows,Mac OS X和其他類Unix操作系統的軟件包
- 憑借更新中心中的數百個插件,Jenkins幾乎集成了持續集成和持續交付工具鏈中的所有工具
- Jenkins可以通過其插件架構進行擴展,為Jenkins提供了幾乎無限的可能性
- 各種工作模式:自由式項目(Freestyle project),管道(Pipeline),外部作業(External Job),多配置項目,文件夾,GitHub組織,多分支管道
- Jenkins管道。這是一套插件,支持在Jenkins中實現和集成連續交付管道。 Pipeline提供了一組可擴展的工具,用于通過Pipeline DSL“作為代碼”對簡單到復雜的交付管道進行建模
- 允許您啟動具有各種條件的構建。
- 您可以使用Libvirt,Kubernetes,Docker等運行Jenkins。
- Rest API - 可以訪問控制您獲取的數據量,獲取/更新config.xml,刪除作業,檢索所有構建,獲取/更新作業說明,執行構建,禁用/啟用作業
Jenkins優點:
- 價格(免費)
- 定制
- 插件系統
- 完全控制系統
Jenkins缺點:
- 需要專用服務器(或多個服務器)。這導致額外的費用。對于服務器本身,DevOps等...
- 配置/定制所需的時間
結論
選擇什么CI系統? 這取決于您的需求以及您計劃使用它的方式。
CircleCI建議用于小型項目,其主要目標是盡快開始集成。
當您從事開源項目時,建議使用Travis CI,這些項目應在不同環境中進行測試。
Jenkins被推薦用于大型項目,在這些項目中,您需要進行大量自定義,這些自定義可以通過使用各種插件來完成。 您可以在這里更改幾乎所有內容,但此過程可能需要一段時間。 如果您計劃使用CI系統最快的開始,Jenkins可能不是您的選擇。
總結
以上是生活随笔為你收集整理的django 集成个推_持续集成CircleCI vs Travis CI vs Jenkins的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux用java连接mysql_Ja
- 下一篇: org.apache.hadoop.se