什么是持續集成
持續集成(Continuous Integration,簡稱CI),是一種軟件開發實踐,在實踐中指只要代碼有變更,就自動運行構建和測試,反饋運行結果。
通俗一點來講,就是綁定項目的代碼倉庫,SVN或者Git庫,自動抓取新的代碼,完成構建,甚至執行測試,部署到服務器。
持續集成的好處:
- 能夠快速暴露錯誤。
- 保證代碼提交質量。
- 定位錯誤更加容易。
- 降低整體集成風險。
- 促進產品快速迭代。
持續集成的特點:
- 統一的代碼庫
- 自動構建/測試
- 每個人每天都要向代碼庫主干提交代碼
- 每次代碼遞交后都會在持續集成服務器上觸發一次構建
- 保證快速構建
- 模擬生產環境的自動測試
- 每個人都可以很容易的獲取最新可執行的應用程序
- 自動化的部署
什么是Devops
DevOps(Development和Operations的組合詞)是一組過程、方法與系統的統稱,用於促進開發(應用程序/軟件工程)、技術運營和質量保障(QA)部門之間的溝通、協作與整合。
通俗一點來講,DevOps要求開發、測試、運維一體化,實現敏捷開發;DevOps從計划、編碼、構建,測試、發布、部署,以及運營、監控打通,就是把敏捷開發部門和運維部門之間的圍牆打通,形成閉環。

DevOps 也同樣要通過技術工具鏈完成持續集成、持續交付、用戶反饋和系統優化的整合。整理了一些開源工具與分類,其中包括版本控制&協作開發工具、自動化構建和測試工具、持續集成&交付工具、部署工具、維護工具、監控,警告&分析工具等等:
版本控制&協作開發:GitHub、GitLab、BitBucket、SubVersion、Coding、Bazaar
自動化構建和測試:Apache Ant、Maven 、Selenium、PyUnit、QUnit、JMeter、Gradle、PHPUnit
持續集成&交付:Jenkins、Capistrano、BuildBot、Fabric、Tinderbox、Travis CI、flow.ci Continuum、LuntBuild、CruiseControl、Integrity、Gump、Go
容器平台: Docker、Rocket、Ubuntu(LXC)、第三方廠商如(AWS/阿里雲)
配置管理:Chef、Puppet、CFengine、Bash、Rudder、Powershell、RunDeck、Saltstack、Ansible
微服務平台:OpenShift、Cloud Foundry、Kubernetes、Mesosphere
服務開通:Puppet、Docker Swarm、Vagrant、Powershell、OpenStack Heat
日志管理:Logstash、CollectD、StatsD
監控,警告&分析:Nagios、Ganglia、Sensu、zabbix、ICINGA、Graphite、Kibana

可以理解為devops是以持續集成為基礎,銜接敏捷開發流程中的各個上下游環節形成的一套最佳實踐。
持續集成中還有一個Pipeline流水線概念,簡而言之,就是一套運行於Jenkins上的工作流框架,將原本獨立運行於單個或者多個節點的任務連接起來,實現單個任務難以完成的復雜流程編排與可視化。