DevOps工具链思维导图:
推荐使用基于Git的版本控制系统,比如GitLab , GitHub 和 BitBucket。
这些基于Git的版本控制系统,除了有Git的功能之外,还提供了Protect branch,Merge Request/Pull request, Code Review,和其他DevOps工具集成等增值功能。
GitLab有开源的社区版GitLab CE,是目前小团队自建Git版本控制系统的主流选择。
GitHub Enterprise功能更为强大,但是是收费的。
对Java开发来说,推荐使用Intellij Idea和Eclipse。
Intellij Idea有免费的社区版,是目前使用最广泛的Java IDE。
最好用的任务管理是JIRA, 提供了Agile Dashboard、Agile工作流等功能来支持敏捷开发。
小团队可以选择免费的任务管理系统,比如Redmine。
对Java开发来说,Maven和Gradle是使用最为广泛的依赖管理和构建工具。
Nexus是使用最为广泛的中央仓库, Nexus + Maven 是黄金搭档。
小团队可以选择免费的Nexus OSS Repository。
SonarQube 集成了代码静态分析,代码风格检查和代码测试覆盖率检查。
Jenkins + SonarSanner + SonarQube 可以在持续集成中对代码进行静态分析。
另外也可以在IDE中使用SonarLint, PWD, FindBugs和Checkstyle来作代码静态分析。
Jenkins是使用最为广泛的持续集成(CI) 和持续交付(CD) 工具。
CI/CD工具是DevOps工具链的核心,Jenkins Pipeline是核心中的核心。
另一个选择是TeamCity,不过是收费的。
Ansible 是一款著名的自动化配置管理工具。
Jenkins + Ansible可以用来做持续部署。
其他的选择还包括Puppet, Chef和SaltStack。
对Java开发来说,JUnit是最著名的单元测试框架,另外一个是TestNG。
Jacoco可以用来检查单元测试覆盖率。
对Java开发来说,Cucumber 是一个著名的BDD Test框架。
PostMan 是一款免费且功能强大的API测试工具。
Jenkins + NewMan + PostMan 可以用来做自动化API测试。
Selenium 是著名的自动化UI测试框架,配合无头浏览器来使用。
JMeter是一款开源的压力测试工具。
主流的日志采集分析框架有ELK和EFK。
应用监控框架包括:
Grafana 是一款开源的可视化面板框架。
可以使用Grfana结合调用其它DevOps工具的API来实现一个定制的DevOps dashboard。
CapitalOne 银行有一个开源的DevOps dashboard实现:Hygieia
Docker 是使用最广泛的容器化技术。
使用Docker Compose可以避免在docker run
后面加上长长的参数列表,通过docker-compose.yaml 配置文件来配置运行参数,也可以组合几个容器在一个docker-compose.yaml中。
除了使用官方的Docker private registry,也可以用Harbor来搭建Docker私有镜像仓库。
Kubernetes (简称k8s)是使用最为广泛的容器编排技术。
Kubernetes提供了Dashboard来通过界面对服务和容器进行操作。
常用的公有云平台包括:
公有云平台也有提供DevOps接入服务。
Yum源、Docker镜像、Maven中央仓库等都有对应的国内镜像,详情请搜索。
Linux 64位 版本。
推荐使用 Ubuntu 16.0.4 及以上,或CentOS 7及以上版本。
可以使用VMware或Virtual Box在本机搭建测试环境,比如在Windows电脑上通过VMWare worksation安装Linux CentOS7,比如在Mac Book上通过VMware fusion安装Linux Ubuntu等。
本文介绍的DevOps 工具链大部分是作者亲自使用过,并在企业DevOps实践中使用过。
部分工具是FYI,需要读者自己去了解。