django 集成个推_持续集成CircleCI vs Travis CI vs Jenkins
持續(xù)集成(CI)的定義及其主要目標(biāo)
持續(xù)集成(CI)是一種軟件開發(fā)實(shí)踐,它基于將代碼頻繁集成到共享代碼倉中。 然后通過自動(dòng)構(gòu)建(automated build)驗(yàn)證每個(gè)簽入(Check-In)。
持續(xù)集成(CI)的主要目標(biāo)是更早,更容易地識(shí)別開發(fā)過程中可能出現(xiàn)的問題。 如果定期集成 - 在查找錯(cuò)誤時(shí)檢查的次數(shù)要少得多。 這樣可以減少調(diào)試時(shí)間,增加功能時(shí)間。 還有一個(gè)選項(xiàng)可以設(shè)置代碼樣式的檢查,代碼復(fù)雜度(低復(fù)雜性使測(cè)試過程更簡單)和其他檢查。 這有助于最大限度地減少負(fù)責(zé)代碼審查的人員的工作量,節(jié)省時(shí)間并提高代碼質(zhì)量
它如何工作
- 開發(fā)人員在其本地計(jì)算機(jī)上檢查代碼
- 完成后 - 他們將代碼變更提交到代碼倉
- 代碼倉向CI系統(tǒng)發(fā)送請(qǐng)求(webhook)
- CI服務(wù)器運(yùn)行任務(wù)(測(cè)試,覆蓋率,檢查語法等)
- CI服務(wù)器發(fā)布已保存的工件(artifacts)以進(jìn)行測(cè)試
- 如果構(gòu)建或測(cè)試失敗,CI服務(wù)器會(huì)向團(tuán)隊(duì)發(fā)出警報(bào)
- 該團(tuán)隊(duì)解決了這個(gè)問題
CircleCI vs Travis CI vs Jenkins
現(xiàn)在,當(dāng)持續(xù)集成的過程明確時(shí)(我希望如此),我們可以轉(zhuǎn)向現(xiàn)在一些最流行的CI平臺(tái)的比較。 每個(gè)都有其優(yōu)點(diǎn)和缺點(diǎn)。 讓我們從CircleCI開始吧。
CircleCI
Features :
- CircleCI是一個(gè)基于云的系統(tǒng) - 不需要專用服務(wù)器,您無需管理它。 但是,它還提供了一個(gè)本地解決方案,允許您在私有云或數(shù)據(jù)中心中運(yùn)行它。
- 即使是商業(yè)帳戶,它也有免費(fèi)計(jì)劃
- Rest API - 您可以訪問項(xiàng)目,構(gòu)建和工件(artifacts)。構(gòu)建的結(jié)果將是工件或工件組。 工件可以是已編譯的應(yīng)用程序或可執(zhí)行文件(例如,android APK)或元數(shù)據(jù)(例如,關(guān)于測(cè)試`成功的信息)
- CircleCI 緩存必要的安裝(requirements installation)。 它會(huì)檢查第三方依賴項(xiàng),而不是持續(xù)安裝所需的環(huán)境
- 您可以觸發(fā)SSH模式訪問容器并進(jìn)行自己的調(diào)查(如果出現(xiàn)任何問題)
- 這是一個(gè)完整的開箱即用解決方案,需要最少的配置調(diào)整
CircleCI與以下產(chǎn)品兼容:
- Python,Node.js,Ruby,Java,Go等
- Ubuntu(12.04,14.04),Mac OS X(付費(fèi)賬戶)
- Github,Bitbucket
- AWS,Azure,Heroku,Docker,專用服務(wù)器
- Jira,HipChat,Slack
CircleCI優(yōu)點(diǎn):
- 快速啟動(dòng)
- CircleCI有一個(gè)免費(fèi)的企業(yè)項(xiàng)目計(jì)劃
- 這很容易,也很快開始
- 輕量級(jí),易讀的YAML配置
- 您不需要任何專用服務(wù)器來運(yùn)行CircleCI
CircleCI缺點(diǎn):
- CircleCI僅支持2個(gè)版本的Ubuntu免費(fèi)(12.04和14.04)和MacOS作為付費(fèi)部分
- 盡管CircleCI可以使用并運(yùn)行所有語言,但tt僅支持“開箱即用”的以下編程語言:
Go(Golang),Haskell,Java,PHP,Python,Ruby / Rails,Scala
- 如果您想進(jìn)行自定義,可能會(huì)出現(xiàn)一些問題:您可能需要一些第三方軟件來進(jìn)行這些調(diào)整
- 此外,雖然作為基于云的系統(tǒng)是一方的優(yōu)勢(shì),它也可以停止支持任何軟件,你將無法阻止
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運(yùn)行測(cè)試
TravisCI提供了一些CircleCI沒有的?
- 可選擇在Linux和Mac OS X上同時(shí)運(yùn)行測(cè)試
- 開箱即用支持更多語言:
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
- 支持構(gòu)建矩陣
構(gòu)建矩陣
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'構(gòu)建矩陣是一種工具,可以使用不同版本的語言和包運(yùn)行測(cè)試。 您可以以不同的方式自定義它。 例如,某些環(huán)境的失敗可以觸發(fā)通知但不會(huì)使所有構(gòu)建失敗(這對(duì)包的開發(fā)版本有幫助)
TOX
如果您更喜歡任何其他CI平臺(tái) - 總有一個(gè)選項(xiàng)可以使用Tox創(chuàng)建構(gòu)建矩陣。
[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管理和測(cè)試命令行工具。 您可以使用pip install tox或easy_install tox命令安裝它。
Travis CI優(yōu)點(diǎn):
- 開箱即用構(gòu)建矩陣
- 快速啟動(dòng)
- 輕量級(jí)YAML配置
- 開源項(xiàng)目的免費(fèi)計(jì)劃
- 無需專用服務(wù)器
Travis CII缺點(diǎn):
- 與CircleCI相比,價(jià)格更高,沒有免費(fèi)的企業(yè)計(jì)劃
- 定制(對(duì)于某些你需要第三方的東西)
Jenkins
Features:
- Jenkins是一個(gè)獨(dú)立的基于Java的程序,隨時(shí)可以運(yùn)行,包含Windows,Mac OS X和其他類Unix操作系統(tǒng)的軟件包
- 憑借更新中心中的數(shù)百個(gè)插件,Jenkins幾乎集成了持續(xù)集成和持續(xù)交付工具鏈中的所有工具
- Jenkins可以通過其插件架構(gòu)進(jìn)行擴(kuò)展,為Jenkins提供了幾乎無限的可能性
- 各種工作模式:自由式項(xiàng)目(Freestyle project),管道(Pipeline),外部作業(yè)(External Job),多配置項(xiàng)目,文件夾,GitHub組織,多分支管道
- Jenkins管道。這是一套插件,支持在Jenkins中實(shí)現(xiàn)和集成連續(xù)交付管道。 Pipeline提供了一組可擴(kuò)展的工具,用于通過Pipeline DSL“作為代碼”對(duì)簡單到復(fù)雜的交付管道進(jìn)行建模
- 允許您啟動(dòng)具有各種條件的構(gòu)建。
- 您可以使用Libvirt,Kubernetes,Docker等運(yùn)行Jenkins。
- Rest API - 可以訪問控制您獲取的數(shù)據(jù)量,獲取/更新config.xml,刪除作業(yè),檢索所有構(gòu)建,獲取/更新作業(yè)說明,執(zhí)行構(gòu)建,禁用/啟用作業(yè)
Jenkins優(yōu)點(diǎn):
- 價(jià)格(免費(fèi))
- 定制
- 插件系統(tǒng)
- 完全控制系統(tǒng)
Jenkins缺點(diǎn):
- 需要專用服務(wù)器(或多個(gè)服務(wù)器)。這導(dǎo)致額外的費(fèi)用。對(duì)于服務(wù)器本身,DevOps等...
- 配置/定制所需的時(shí)間
結(jié)論
選擇什么CI系統(tǒng)? 這取決于您的需求以及您計(jì)劃使用它的方式。
CircleCI建議用于小型項(xiàng)目,其主要目標(biāo)是盡快開始集成。
當(dāng)您從事開源項(xiàng)目時(shí),建議使用Travis CI,這些項(xiàng)目應(yīng)在不同環(huán)境中進(jìn)行測(cè)試。
Jenkins被推薦用于大型項(xiàng)目,在這些項(xiàng)目中,您需要進(jìn)行大量自定義,這些自定義可以通過使用各種插件來完成。 您可以在這里更改幾乎所有內(nèi)容,但此過程可能需要一段時(shí)間。 如果您計(jì)劃使用CI系統(tǒng)最快的開始,Jenkins可能不是您的選擇。
總結(jié)
以上是生活随笔為你收集整理的django 集成个推_持续集成CircleCI vs Travis CI vs Jenkins的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux用java连接mysql_Ja
- 下一篇: org.apache.hadoop.se