--> 甲骨文云 构建CI/CD流水线:利用Oracle Cloud Infrastructure DevOps服务和OCI Functions实现高效自动化开发
欢迎访问深圳敏捷云计算科技有限公司!

甲骨文云 构建CI/CD流水线:利用Oracle Cloud Infrastructure DevOps服务和OCI Functions实现高效自动化开发

2024-03-07 原创文章

快速交付软件对于在云中高效运行应用程序至关重要。Oracle DevOps服务为开发人员提供了一个持续集成和部署(CI/CD)平台。您可以使用DevOps服务轻松构建、测试和部署软件及应用程序到Oracle Cloud。DevOps构建和部署流水线减少了变更引起的错误,并减少了客户在构建和部署发布上的时间。

该服务还提供私有Git仓库来存储您的代码,并支持连接到外部代码仓库。无论您是将工作负载迁移到Oracle Cloud Infrastructure(OCI)——从本地或其他云——还是在OCI上开发新应用程序,您都可以使用DevOps服务简化软件交付生命周期。


架构

在这个参考架构中,您将使用OCI DevOps和OCI Function服务构建和部署Python应用程序。


应用程序源代码托管在DevOps代码仓库中。最终用户将代码提交到代码仓库。代码仓库中的新提交将触发构建流水线的启动。构建流水线遵循用户定义的流程构建函数工件以部署到OCI Function服务。构建的输出以Docker镜像的形式存储在容器注册表中。部署流水线然后使用容器注册表中构建的镜像部署到OCI Functions环境。以下架构图显示了使用默认镜像和自定义镜像(使用Dockerfile)构建和部署应用程序的方式。


为了简化此示例CI/CD工作流程的设置,该示例应用程序使用Terraform自动创建和配置DevOps资源。


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

这个架构包含以下组件:


区域

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


DevOps项目

  • 用于实现CI/CD工作流的DevOps资源的逻辑分组。DevOps资源可以是工件、构建流水线、部署流水线、外部连接、触发器和环境。DevOps项目使得为所有DevOps资源启用日志记录、监控和通知变得容易。


构建流水线

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


代码仓库

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


部署流水线

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


部署阶段

  • 阶段是流水线运行期间发生的单个操作。DevOps部署流水线包括以下预定义的阶段类型供您在发布过程中使用:滚动部署:向Oracle Container Engine for Kubernetes(OKE)、Functions或实例组的渐进式发布等待:等待N秒手动批准:如果获得批准则继续;如果批准被拒绝则停止。调用函数:通过调用函数并传递工件或请求参数来执行自定义任务或集成。


DevOps工件

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


工件仓库

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


OCI日志和通知服务

  • OCI日志服务存储与部署相关的日志。部署运行时输出和部署的最终结果显示为日志条目。OCI通知服务提供对部署项目及其资源的最新状态的可见性,并采取必要的行动。例如,当发生重要事件时,比如部署流水线中等待批准的阶段,您将收到通知。收到通知消息后,您可以前往DevOps部署流水线并批准该阶段。


部署环境

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



建议

使用以下建议作为起点,但请注意您的需求可能与此处描述的架构不同。

  • 函数的内存分配和超时设置
  • 我们可以通过更新func.yaml文件来更改配置,按照以下设置:


虚拟云网络(VCN)

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


容器映像注册表

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


考虑因素

在使用OCI DevOps和OCI Function服务构建和部署Python应用程序时,请考虑:

  • DevOps支持部署到OKE、计算主机和Functions。
  • 当向计算部署实例组时,仅支持Linux主机。
  • 使用DevOps部署的工件必须位于OCI工件注册表或容器映像注册表仓库中。
  • 最佳实践是将每个应用程序及其所有微服务分组到单个项目中。


部署

部署此参考架构所需的代码可在GitHub上获取。您可以单击一下将代码拉入Oracle Cloud Infrastructure资源管理器,创建堆栈并部署它。或者,从GitHub下载代码到您的计算机,自定义代码,然后使用Terraform CLI部署架构。

  • 使用Oracle Cloud Infrastructure资源管理器中的示例堆栈进行部署:
  1. 点击,如果您尚未登录,请输入租户和用户凭据。
  2. 选择您想要部署堆栈的区域。按照屏幕上的提示和指示创建堆栈。
  3. 创建堆栈后,点击Terraform操作,并选择Plan。
  4. 等待作业完成,并审查计划。
  5. 如需进行任何更改,请返回到堆栈详情页面,点击编辑堆栈,并进行所需更改。然后,再次运行Plan操作。
  6. 如果不需要进一步更改,请返回到堆栈详情页面,点击Terraform操作,并选择Apply。


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


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

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


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


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


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