欢迎访问深圳敏捷云计算科技有限公司!

利用甲骨文云OCI基础设施DevOps服务构建持续集成和部署管道:提升软件开发效率和质量

2024-03-13 原创文章

软件的快速交付是在云中高效构建和部署应用程序的关键。Oracle云基础设施(OCI)DevOps服务为开发人员提供了一个持续集成和部署(CI/CD)平台,以便轻松构建、测试和在Oracle云上部署软件和应用程序。OCI DevOps构建和部署管道通过使软件在应用更改时重新构建和测试,减少了变更驱动的错误,并减少客户在构建和修复问题上的时间,从而及早检测到任何不利影响。

该服务包括提供私有GIT仓库来存储您的代码,并支持连接到外部代码仓库以保存源代码和配置文件。由于构建过程依赖于并产生中间制品(模块、包等),它们还与Oracle的制品和容器仓库一起工作。无论您是将工作负载迁移到OCI(从本地或其他云),还是在OCI上开发新应用程序,您都可以使用OCI DevOps简化软件交付生命周期。

在混合云或多云环境中工作时,OCI DevOps可用于创建在其他环境中部署的制品。


架构

此参考架构建立了所有服务和配置,使您能够使用OCI DevOps构建和测试一个示例Node.js Web应用程序,然后将其部署到OKE。Terraform部署包括创建所需的管道和仓库。应用程序源代码托管在DevOps代码仓库中。用户可以将代码提交到仓库,这将触发构建管道的启动。构建管道遵循用户定义的流程来构建和测试软件,然后创建带有应用程序最新版本的容器镜像。构建的输出以镜像的形式存储在容器注册表中。然后,部署管道使用容器注册表中的构建镜像和Kubernetes清单,将应用程序的最新版本部署到OKE。


提供的管道并未涉及应用单元测试、使用静态代码分析和linter工具分析代码质量等方面的考虑。


以下图表展示了这一参考架构。

此架构包含以下组件:


区域

  • OCI区域是一个包含一个或多个数据中心的地理区域,这些数据中心称为可用性域。区域彼此独立,相隔很远(跨越国家甚至大洲)。此架构使用单一区域。


DevOps项目

  • 实现CI/CD工作流所需的DevOps资源的逻辑分组。DevOps资源可以是制品、构建管道、部署管道、外部连接、触发器和环境。DevOps项目使您能够轻松为所有DevOps资源启用日志记录、监控和通知。


构建管道

  • 构建管道从您的源代码仓库中获取提交ID,并使用该源代码运行构建指令。构建管道定义了构建过程的一系列阶段 - 构建、测试和编译软件制品,将制品交付给OCI仓库,并可选地触发部署。您在构建规范文件中定义构建运行的流程和指令。


代码仓库

  • DevOps服务托管的私有Git仓库。您可以使用OCI DevOps代码仓库存储、管理、开发源代码。


部署管道

  • 一系列步骤,用于将一组制品交付和部署到目标环境。通过定义可以串行或并行运行的阶段,控制软件发布的流程和逻辑。


部署阶段

  • 阶段是管道运行期间发生的单个操作。DevOps部署管道包括以下预定义阶段类型,供您在发布过程中使用:滚动部署:向OKE、函数或实例组逐步发布等待:等待N秒手动批准:如果批准则继续;如果拒绝则停止。调用函数:通过调用函数执行自定义任务或集成,并传递请求参数的制品。


DevOps制品

  • DevOps制品是对组成您的应用程序的任何文件、二进制文件、包、清单或镜像的引用或指针。创建制品时,向Oracle DevOps通知实际制品的来源位置。DevOps支持OCI容器镜像注册表和OCI制品注册表仓库。


制品仓库

  • 制品仓库创建仓库以对类似制品进行分组。创建仓库后,您可以上传制品。这些制品是一组文本文件、二进制文件和部署清单,交付给目标部署环境。每个制品都有一个名称,由其路径:版本组成。路径是组织制品的字符串。


OCI日志和通知服务

  • OCI日志服务存储与部署相关的日志。部署运行输出和部署的最终结果以日志条目形式显示。OCI通知服务提供部署项目及其资源的最新状态的可见性,并采取必要的行动。例如,当部署管道中的阶段等待批准时,您将被通知。收到通知消息后,您可以转到DevOps部署管道并批准该阶段。


部署环境

  • 环境是客户的计算资源的集合,用于部署制品。环境可以是函数、计算虚拟机(VM)或裸机实例,或者是OKE集群。Oracle Kubernetes集群(OKE):OCI容器引擎为Kubernetes是一种完全托管的、可扩展的、高可用性的服务,您可以用它将容器化的应用程序部署到云中。计算实例:OCI计算服务使您能够在云中配置和管理计算主机。您可以部署满足CPU、内存、网络带宽和存储资源需求的计算实例。函数:Oracle函数是一个完全托管的、多租户的、高度可扩展的、按需的函数即服务平台。该服务建立在企业级Oracle云基础设施上,由Fn Project开源引擎驱动。
  • 环境可以位于与部署管道区域不同的OCI区域。这种分离允许开发人员使用同一部署管道在多个OCI区域进行部署。


建议

  • 以下建议可作为使用OCI DevOps创建构建和部署管道的起点。您的需求可能与这里描述的架构有所不同。


计算形状

  • 此架构使用带有E3或E4弹性形状的Oracle Linux OS镜像。您可以从实例组环境和OKE集群节点所需的最小计算主机资源开始。如果您的应用程序需要更多内存或核心,您可以选择不同的形状。


VCN

  • 创建VCN时,根据您计划附加到VCN子网中的资源数量,确定所需CIDR块的数量和每个块的大小。使用标准私有IP地址空间内的CIDR块。
  • 创建VCN后,您可以更改、添加和移除其CIDR块。
  • 此架构使用公共VCN托管Kubernetes的容器引擎。您也可以使用私有VCN。在这种情况下,使用NAT网关使集群能够通过公共互联网访问。


Oracle容器引擎Kubernetes(OKE)

  • 此架构将OKE集群部署为目标环境之一。工作节点部署在E3或E4 Oracle Linux OS上。此架构在集群中使用三个工作节点,但您可以在每个集群上创建多达1000个节点。


容器镜像注册表

  • 此架构部署注册表作为内部使用的私有Docker注册表。Docker镜像被推送到注册表并从注册表拉取。您也可以将注册表用作公共Docker注册表,使任何具有互联网访问权限和知道适当URL的用户能够从OCI中的公共仓库拉取镜像。



考虑因素

  • 部署此参考架构时,请考虑以下几点:
  • DevOps支持部署到OKE、计算主机、函数。
  • 实例组部署到计算实例仅支持Linux主机。
  • 使用DevOps部署的制品必须在OCI制品注册表或容器镜像注册表仓库中。
  • 最佳实践是将每个应用程序及其所有微服务分组到单个项目中。


部署

使用OCI DevOps创建构建和部署管道的Terraform代码可在GitHub上获取。

  • 使用Oracle云基础设施资源管理器中的示例堆栈进行部署:

点击,如果您尚未登录,请输入租户和用户凭据。

如果您尚未登录,请输入租户和用户凭据。

选择您想要部署堆栈的区域。

按照屏幕上的提示和指示创建堆栈。

创建堆栈后,点击Terraform操作,并选择计划(Plan)。

等待作业完成,并审阅计划。

如需进行任何更改,请返回到堆栈详情页面,点击编辑堆栈,并进行必要的更改。然后,再次运行计划(Plan)操作。

如果不需要进一步更改,请返回到堆栈详情页面,点击Terraform操作,并选择应用(Apply)。

  • 使用Terraform命令行界面进行部署:访问GitHub。克隆或下载仓库到您的本地计算机。遵循README文档中的指示。




开启您的Oracle云之旅:Agilewing - 您的智能云服务伙伴

作为Oracle的高级合作伙伴,Agilewing正重新定义企业体验Oracle云服务的方式。借助于其简化的开户流程和一流的技术支持,Agilewing将复杂的开户和操作流程转化为一种轻松、直观的体验。通过我们的一站式服务,您可以迅速开启并享受Oracle云的全方位服务,从而无缝融入云端世界。


Agilewing的AgileCDN服务,结合了OCI的云基础服务,提供了一流的全球内容加速解决方案。超过2800个全球POP节点和7000个直连点的强大网络,确保了无论您的业务扩展到全球哪个角落,都能保持高效稳定的运行。


利用Oracle云的先进技术,Agilewing致力于简化云服务搭建、云迁移和业务出海的过程。我们的合作模式为客户带来经济高效的解决方案,使他们能够更加专注于核心业务,同时享受Oracle云的高性能和安全保障。


Oracle云服务,作为一个充满潜力的领域,以其高性能、安全性和全球统一的服务标准,为各类企业开启了新的机遇之门。通过Agilewing的专业服务,无论是个人用户还是企业,都能轻松步入这个充满技术革新和高效能的新时代。现在,就让Agilewing引领您开始探索Oracle云服务,打开一个全新的世界大门。