持续集成(Continuous Integration,简称CI),是一种软件开发实践,在实践中指只要代码有变动,就自动运行构建和测试,反馈运行结果。
通俗一点来说,就是绑定项目的代码仓库,SVN或者Git库,自动抓取新的代码,完成构建,甚至执行测试,部署到服务器。ios
持续集成的好处:shell
- 可以快速暴露错误。
- 保证代码提交质量。
- 定位错误更加容易。
- 下降总体集成风险。
- 促进产品快速迭代。
持续集成的特色:api
- 统一的代码库
- 自动构建/测试
- 每一个人天天都要向代码库主干提交代码
- 每次代码递交后都会在持续集成服务器上触发一次构建
- 保证快速构建
- 模拟生产环境的自动测试
- 每一个人均可以很容易的获取最新可执行的应用程序
- 自动化的部署
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上的工做流框架,将本来独立运行于单个或者多个节点的任务链接起来,实现单个任务难以完成的复杂流程编排与可视化。工具