为什么要搭建企业级的DevOps平台?
- 如果产品研发团队相对比较迷你,比如在100人以内,个人觉得是不需要企业级DevOps的,大家简单快捷的安装一些常用的协作软件就能正常运转
- 本篇文章主要简述主要是企业级DevOps私有化部署及安装,会大量用到开源软件,所以为了匹配的只有的业务,二开是必不可免的,所以对人员要求和资金的耗费都要有一定的评估
- 为什么要自己搭建的???不可以用成熟的SAAS软件吗?不是所有企业都能上云的 , 自己去GET。
- 这样也能节省成本【服务器减少啦 哈哈】、避免大家每个团队都使用横七竖八的软件,也方便公司进行统一管理及绩效考核。
- 每到年底的时候就能统一取数,到底哪个团队提交的代码最多?发版的次数、时间???当然这也是最近子系统【效能看板】、系统要做的功能。
业界标杆
阿里巴巴-云效
- 阿里云企业级一站式研发协同平台,数十万企业都在用。支持公共云、专有云和混合云多种部署形态,通过云原生新技术和研发新模式,助力创新创业和数字化转型企业快速实现研发敏捷和组织敏捷,打造“双敏”组织,实现多倍效能提升。
- https://devops.aliyun.com
腾讯-CODING
- 提供一站式开发协作工具,帮助研发团队快速落地敏捷开发与 DevOps 开发方式,实现研发效能升级
- https://coding.net/
管理软件
代码仓库
- 代码仓库亦称储存库、资源库、资源库、版本库、代码库、存放库,在版本控制系统中是指在磁盘存储上的数据结构,其中包含了文件、目录以及元数据。
- 代码仓库是一个公共或私有的保存大量源代码的地方。大多数仓库会用作备份、版本控制,在多人开发的项目中会帮助处理各种代码版本问题,如:开发者同时修改源码导致的冲突。现今,流行使用Subversion,Git和Mercurial等工具构建仓库(repository)并处理上述的事情,在开源项目十分流行。
- 代码库通常不包含由工具生成的源代码文件或二进制文件(目标文件),因为它们可以从人工编写的源代码构建生成,没有必要加入代码库。但是,代码库通常包括配置文件和属性文件,因为这些文件是构建时所必不可少的数据。
GitLab【推荐】
- 推荐理由:受众广、资料多
- 通过细粒度的访问控制来管理Git存储库,确保您的代码安全。执行代码审查并通过合并请求的实现更紧密的开发协作。每个项目还可以配置议题跟踪和wiki。
- 官网:https://about.gitlab.com/
- 企业版本:https://gitlab.cn/
- GitLab分为企业版和社区版,如私有化安装可以选择免费的社区版,也有极狐公司提供的SAAS平台,具体可以在企业版本了解,社区版本也支持。
- 支持RestAPI的调用,比如企业需要做关于代码提交的频率、时间段、次数等看板数据都可以通过API的方式拿到数据进行看板展示。
Gogs【推荐】
- 推荐理由:Go语言编写、完全开源、二开容易、云原生契合???
- 官网:https://gogs.io/]
- 源码地址:https://github.com/gogs/gogs
- Gogs 的目标是打造一个最简单、最快速和最轻松的方式搭建自助 Git 服务。使用 Go 语言开发使得 Gogs 能够通过独立的二进制分发,并且支持 Go 语言支持的 所有平台,包括 Linux、Mac OS X、Windows 以及 ARM 平台。
- 一款极易搭建的自助 Git 服务,属于简化版的GitLab,功能相对GitLab要少许多,但是单纯的做为代码托管平台也更纯粹一些【个人建议】
文档中心
- 文档中心是一款企业知识管理工具,通过独立的知识库空间,结构化地组织在线协作文档,实现企业知识的积累和沉淀,促进知识的高度复用和流通。
- 随着人与人之间的交流越来越频繁,大部分的经验和知识却只能停留在少数人的脑海中,通过口述低效传播。我们迫切需要一款好的知识管理工具,将四散的无形知识转为结构化的有形知识,在企业中高效地流动起来。
Confluence【推荐】
- 推荐理由:标准成熟的产品模式、体系
- 风险:非开源版本,法律风险
- 首先声明一点,Confluence非开源版本,但是网上有非常多得破解方式
- Confluence 是适合远程操作的团队工作空间,可有效融合知识与协作
- 开放、互连的结构使信息可以在企业所有人之间自由流动
- 专为持久性知识而构建,因此您永远不会在瞬态通知或聊天中丢失绝佳的想法或情境
- 借助社交功能,每个级别的员工都可以发声表达、分享并接收反馈。
- 官网:https://www.atlassian.com/zh/software/confluence
- PS:国外的非开源版本、比较成熟的产品体系、已经形成标准的产品模式。
SAAS收费版
- 说道文档中心saas收费版本,世面上还是非常非常多得,现在列举几个,供大家选择
- ONES:https://ones.cn/
- (强大的自定义引擎,可满足多行业、多场景、多角色的协同需求)
- 印象:https://verse.app.yinxiang.com/general/
- SAAS版本网上确实非常多,可自行通过搜索引擎搜索 “wiki”
项目管理
项目管理系统是项目的管理者应用专门管理项目的系统软件,在有限的资源约束下,运用系统的观点、方法和理论,对项目涉及的全部工作进行有效地管理。它从项目的投资决策开始到项目结束的全过程进行计划、组织、指挥、协调、控制和评价,以实现项目的目标。
Jira【推荐】
- Jira和Confluence都是由 atlassian 这家公司研发的商业化软件
- 推荐理由:标准成熟的产品模式、体系
- 风险:非开源版本,法律风险
- 首先声明一点,Jira非开源版本,但是网上有非常多得破解方式
- Jira 共同迅速行动、保持一致并构建更优秀的产品
- 官网:https://www.atlassian.com/zh/software/jira
- PS:国外的非开源版本、比较成熟的产品体系、已经形成标准的产品模式。
选择Jira还有非常非常非常重要的优势:
- 丰富的插件机制
(测试用例管理插件synapseRT - Test management and QA in JIRA)
(BigPicture 插件) 如果你要使用某些功能,既然你有这个需求,网上的很可能也有这个需求,总有“好事之者”会将功能做成插件供大家使用。
- 工作流配置
例如任务、需求、缺陷等,但每种类型的生命周期都是不一样的,所以JIRA给我们提供了可以灵活自定义的工作流方案,以方便我们实现不同类型的项目管理。
禅道【推荐】
- 禅道是专业的研发项目管理软件
- 官网:https://www.zentao.net/
- 是由青岛一家公司开发,还有其他配套软件一起使用,开发语言主要是PHP。
- 大家可以清晰的看到禅道版本分为开源版、企业版、旗舰版、甚至还带有客户端,现有大部分公司都使用禅道的开源版本进行私有化部署进行使用,说实话禅道毕竟是国人开发的,对国内的软件开发环境和使用习惯还是比较熟悉的,所以大家使用起来也比较快上手,相对来说契合多还是比较高。
- 如果要二开的话,还是要有专业的PHP人才,现在貌似不是太好找,很多都是兼职的,具体大家自己选择吧。
UED原型系统
自主研发【推荐】
- 大家估计经常看到同一份原型由产品经理改了又改然后先发给测试、然后发给开发、然后发给不同角色进行评审等,大家信息不同步不对等。
- 可以通过开源的文件管理系统包一层壳进行Web访问,比如 Linux 的 httpd 然后包一层Web页面
核心功能
- 添加用户
- 团队管理(增加、删除、加入)
- 原型上传(Axure导出来的就是HTML、进行打包上传)
- 支持分享文件(是否需要密码、分享的时效性等)
其他系统
公共私服
Nexus私服管理
Nexus 是一个强大的 Maven 仓库管理器,它极大地简化了自己内部仓库的维护和外部仓库的访问。利用 Nexus 你可以只在一个地方就能够完全控制访问 和部署在你所维护仓库中的每个 Artifact。Nexus 是一套 “开箱即用” 的系统不需要数据库,它使用文件系统加 Lucene 来组织数据。Nexus 使用 ExtJS 来开发界面,利用 Restlet 来提供完整的 REST APIs,通过 m2eclipse 与 Eclipse 集成使用。Nexus 支持 WebDAV 与 LDAP 安全身份认证。
Yearning
Yearning 是一款可满足大部分公司 SQL 审核需求的 web 端可视化 SQL 审核平台。在实现常规的sql审核功能外还添加了诸如数据查询等一系列便捷的功能。
- 相关文档:https://guide.yearning.io/
CI/CD系统
GitLab【代码仓库】上面已经介绍过了。
docker
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
- 官网:https://www.docker.com/
- 官网仓库:https://hub.docker.com/
Kubernetes
kubernetes,简称K8s,是用8代替名字中间的8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。
- 官网:https://kubernetes.io/zh-cn/
- 开源地址:https://github.com/kubernetes/kubernetes
Kubesphere
KubeSphere 愿景是打造一个以 Kubernetes 为内核的 云原生分布式操作系统,它的架构可以非常方便地使第三方应用与云原生生态组件进行即插即用(plug-and-play)的集成,支持云原生应用在多云与多集群的统一分发和运维管理。KubeSphere 也是一个多租户容器平台,提供全栈的 IT 自动化运维的能力,简化企业的 DevOps 工作流
- 官网:https://kubesphere.io/
- 开源地址:https://github.com/kubesphere/kubesphere
Rancher
Rancher 是供采用容器的团队使用的完整软件堆栈。它解决了管理多个Kubernetes集群的运营和安全挑战,并为DevOps团队提供用于运行容器化工作负载的集成工具。
- 官网:https://www.rancher.cn/
- 开源地址:https://github.com/rancher/rancher
构建打包流水线【Jenkins】
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成
- 官网:https://www.jenkins.io/zh/
- 开源地址:https://github.com/jenkinsci/jenkins
代码扫描【SonarQube 】
SonarQube 是一个开源的代码分析平台, 用来持续分析和评测项目源代码的质量。通过SonarQube我们可以检测出项目中重复代码, 潜在bug, 代码规范,安全性漏洞等问题, 并通过SonarQube web UI展示出来。
- 官网:https://www.sonarqube.org/
- 开源地址:https://github.com/SonarSource/sonarqube
镜像仓库【Harbor】
Harbor 是一个开源注册表,它使用策略和基于角色的访问控制来保护工件,确保图像被扫描并且没有漏洞,并将图像标记为可信。Harbor 是一个 CNCF 毕业项目,它提供合规性、性能和互操作性,以帮助您跨云原生计算平台(如 Kubernetes 和 Docker)一致且安全地管理工件。
- 官网:https://goharbor.io/](https://goharbor.io/
- 开源地址:https://github.com/goharbor/harbor
自动化运维【ansible】
- ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。Ansible架构相对比较简单,仅需通过SSH连接客户机执行任务即可
- 官网:https://www.ansible.com/
- 开源地址:https://github.com/ansible/ansible
单点登录【casdoor】
支持 OAuth 2.0、OIDC 和 SAML 的 UI 优先集中式身份验证/单点登录 (SSO) 平台,与 Casbin RBAC 和 ABAC 权限管理集成。
- 官网:https://casdoor.org/zh/
- 开源地址:https://github.com/casdoor/casdoor
参考文章:https://rundreams.blog.csdn.net/article
/details/127460131