CDS是用GO(Lang)编写的企业级连续交付和DevOps自动化平台。
该项目正在积极发展
文档
CDS提供了一个直观的UI,可让您构建复杂的工作流程,运行它们并在需要时挖掘到日志中。
使用CDS UI创建和运行工作流程。
CDSCTL是CDS命令行 - 您可以用它脚本脚本,CDSCTL还提供了一些很酷的命令,例如cdsctl shell来浏览项目和工作流,而无需打开浏览器。
查看所有CDSCTL命令
使用CDS命令行创建工作流程为代码。
Docker-Compose是您的朋友,请参阅准备运行教程
大多数CI/CD工具都可以在管道中使用作业。 CD引入了一个名为CDS Workflows新概念。 CDS工作流程使您可以使用触发器链接管道。管道在包含一个或多个并发作业的顺序阶段结构。
是的!自2015年以来,CD在生产中使用,每年启动超过700万CD的工人。您可以在https://github.com/ovh/cds/releases上安装官方版本
CD提供了监视和测量生产活动所需的一切(日志,指标,监视)
所有数据都存储在数据库中 - 文件系统上没有任何数据。只需定期备份数据库,您就可以安全。
核心团队可在GitHub上找到
能够同时运行多个作业,同时保持隔离。请参阅有关管道中的阶段和工作的文档。管道从上下文开始:0或1应用程序,0或1环境。
工作流使链条链条成为可能。这是CD的关键功能。您可以使用一个或多个管道,可以与连接或叉子链接的管道来创建工作流程。
您可以想象只有一个工作流构建器并部署整个微服务堆栈。可以在工作流程中多次使用同一条管道,您可以将应用程序或环境关联。即使您有数百个应用程序,您也只会有一个部署管道和一个构建管道以维护。
工作流模板使您可以在多个团队中共享和重复使用工作流。任何用户都可以创建工作流模板,将其作为代码或UI维护,并通过单个操作更新一组工作流程。
作为一家公司,您可以提供预定义的工作流程目录,使您可以在所有团队中标准化测试和部署实践。
这也减少了维护工作,因为模板允许可扩展的集中管理。
您可以使用Web UI配置所有内容。即使您有复杂的用例,通常更容易以图形方式创建工作流。
管道作为代码是CI / CD工具的众所周知的概念。 CD更进一步,并提供工作流程作为代码。这是通过使用工作流的YAML配置文件( + Pipeline, + Applications, +环境)来完成的。这是特别有用的,因为您可以在合并主分支上的更改之前测试开发部门上的新工作流程。
您可以使用UI修改工作流程,也可以通过在UI中直接编辑YAML文件来修改配置。这是学习如何使用WorkFlow-As-As-code功能的绝佳方法。
能够根据分支模式启动构建。例如,这允许部署dev/*分支来“分期”并将主分支部署到“ prod”。
请注意,CDS的默认行为是在每个GIT提交上启动整个工作流程。可以使用“运行条件”来改变此行为。
与最受欢迎的基于Git的产品的2向整合。
CD在本地支持GitHub,GitLab,Bitbucket Server和Gerrit。您的GIT回购与CD之间的链接是通过CDS应用程序:1 GIT存储库== A CDS应用程序。通过这种集成,CD将推动您的提交的构建状态:建立,成功或失败。
CD使您有可能在单个工作流程中从不同的GIT存储库中克隆。 CDS工作流程可能涉及多个不同的应用程序 - 或者如果您不想与GIT仓库建立联系,则无需使用。
能够启动短暂服务(数据库,Web服务器等)来支持您的工作。在测试您的代码时,这特别方便。
在CD中,这些服务称为服务先决条件。您只需要指定相应的Docker映像并运行参数即可。
举一个简单的例子:您有一个管道,可以构建包含您应用程序的Docker映像。您的应用程序需要重新使用和postgresql才能工作。您可以在CDS工作中放置三个先决条件服务:redis,postgreSQL和您的应用程序。 CD将负责在其服务之间建立一个私人网络,以便他们可以相互通信。因此,您的CD作业可以从实际数据库和真实缓存开始对您的应用程序进行集成测试。
请阅读:https://ovh.github.io/cds/docs/concepts/requirement/requirement_service/
开发人员和/或连续集成(CI)系统使用远程缓存来共享构建输出。如果您的构建可重现,则可以在另一台计算机上安全重复使用的一台计算机的输出,这可以使构建更快地构建
doc:https://ovh.github.io/cds/docs/components/worker/cache/
作为企业级平台,CD可以在活动总线中发送广泛的内部事件(例如构建完成)。然后,此事件流可以为其他服务提供(报告,通知等)。
能够手动或通过GIT推送或通过调度程序或通过Webhook启动工作流程。除上述内容外,还可以使用事件总线(KAFKA或RABBITMQ)触发CD。
具有隔离访问权限的安全方式来管理多个环境(例如开发/产品/分期)的能力。实际上,环境是一组变量,您可以在工作流程中使用。
使用CD,您可以在预生产环境上使用部署管道,并在生产环境中使用相同的部署管道。部署到生产的能力可以限于预先建立的用户组。
用户可以自由创建组并管理组中的用户。一个小组有权阅读,编写和执行他们的项目和工作流程。如果需要,您还可以将某些管道的执行限制为某些组。
如果您使用CD作为CI / CD工具,则可能已经建造了工件。 CDS的作业是彼此隔离的,但是您可以使用工件上传和伪像下载操作将文物从一个作业传递到另一个作业。在CDS作业的结尾,所有文件均从工人中删除。为了持久工件,CD可以使用Swift存储或给定的文件系统(虽然不建议使用)。
CD清楚地显示了在构建过程中检测到的单位测试和漏洞的结果。
CDS项目就像租户。所有用户都可以创建一个CDS项目,该项目将汇总应用程序,环境,管道以及工作流程。
CDS项目彼此隔离,但是如果您愿意,同一组可以访问多个项目的权利。
工人模型是工人执行环境。假设您需要运行需要Golang V1.11.5的工作。在CD中,您只需要创建一个GO Worker模型,其中包含1.11.5版中的GO。工人模型可以是Docker映像,OpenStack Image或VSPHERE图像。尽管CDS管理员可以提供共享的工人模型,但用户可以根据需要创建自己的模板工人。
在CDS项目中,您可以添加OpenStack,Kubernetes等集成,这将为您提供工作流中的功能。例如,借助Kubernetes集成,您可以将自己的群集添加到CDS项目中,从而可以使用Deploy Application Action在群集上部署您的新构建的应用程序,并以helm格式使用。您当然可以发展自己的集成。
阅读了先前的观点后,您已经理解:自助服务无处不在。所有用户都可以创建他们的项目/工作流/工作流程模型/工作流模板/操作...并在完全孤立的环境中运行作业。 CDS项目是建筑商,您可以在其上添加集成。所有这些都可以让您为整个公司拥有一个CD实例。
您可以通过命令行界面(CLI)(名为“ CDSCTL”的命令行界面(CLI)获得所有您所能完成的操作。 CDSCTL可在所有操作系统上提供:Darwin,FreeBSD,Linux,OpenBSD ... CDSCTL将允许您创建,启动,导出,导入工作流程,监视CD并浏览项目和工作流程。无需转到CD的UI或您的存储库管理器即可检查提交的状态, git push && cdsctl workflow --track将在命令行中显示您的工作流程。
您是否有更高级的自动化需求,或者希望开发查询CD的应用程序? REST API和SDK将允许您轻松开发软件。
CD自2016年10月以来一直是开源的。您可以在公司或家中自由安装。一些教程可帮助您启动CD,Docker-Compose,使用二进制文件安装。
高可用性是CI / CD工具的非常重要的点。 CD是无状态的,没有存储在文件系统上。这使得可以在负载平衡器后面启动多个CDS API。因此,您可以根据需要扩展CD的API。它还可以在整天升级CD,而不会影响用户。在生产@OVH中,CD每天可以更新几次,而不会影响用户或阻止CDS工人。要求您的用户在更新连续交付工具时停止工作会具有讽刺意味,不是吗? ;-)
CD本质地揭示了监视数据。您将能够使用Beamium为实例提供Prometheus或Warp10。
CD的工作由步骤组成。每个步骤都是内置类型的操作(脚本,CheckoutApplication,Artifact上传/下载...)。您可以使用现有操作创建操作 - 或将操作作为插件开发。只要语言支持GRPC,就支持所有语言。
CD对语言和平台不可知。用户可以在Linux,Windows,FreeBSD,OS X,Raspberry上启动作业...在Docker容器中,在Docker Container的虚拟机中,在专用主机上。
因此,如果您的公司使用多种技术,则CD将不会成为构建和部署内部软件的阻滞剂。
OVH上CD的最初目标之一:在不到7分钟的时间内将150个应用程序构建和部署为容器。自2015年以来,这已成为现实。什么是秘密钥匙?自动尺度按需!
因此,您可以拥有数百个工人模型,必要时,CD将使用孵化场开始工人。
孵化场就像一个孵化器一样,它孕育了CDS的工人以及对它们的生与死权。
有几种类型的孵化场:
因此,是的,无论是否流行语,多云的自动尺度ondemand是CD的现实:-)
3条款BSD