1.CI/CD 与 DevOps 的框架框架8个主要区别
2.什么是持续集成(CI)/持续部署(CD)?
3.通过 Jenkins 构建 CI/CD 实现全链路灰度
4.了解 Apple 的 CI 构建服务 Xcode Cloud
CI/CD 与 DevOps 的8个主要区别
CI/CD 是一种让程序员能迅速并可靠地更新代码的做法,而 DevOps 则包括一系列方法和思想,网站网站让开发和运维团队更好地协作,源码源代使产品从设计到使用都能更加高效。框架框架两者都追求软件开发的网站网站高效,但它们在具体操作上有所不同。源码源代源码开花
CI/CD 通过持续集成和持续交付自动化代码更新过程,框架框架确保代码更新快速、网站网站可靠。源码源代而 DevOps 则更侧重于开发和运维团队的框架框架合作,以及简化产品开发的网站网站整个流程。
DevOps 的源码源代目标是通过消除开发和运维团队之间的障碍,提高协作效率,框架框架实现快速、网站网站持续的源码源代软件交付。而 CI/CD 则通过自动化测试和构建流程,确保代码更新的效率和质量。
DevOps 包含 CI/CD,但还有更多的内容,如跨团队沟通、持续监控、故障恢复等。而 CI/CD 是一个流程,强调自动化和持续的代码更新。
在范围上,CI/CD 关注代码集成、测试和部署,而 DevOps 则涉及整个软件开发生命周期的优化。
在阶段上,CI/CD 包括源码、构建、测试和部署四个阶段,而 DevOps 则包含从规划、编码到运营的全周期。
在实施上,CI/CD 可以通过工具如 Jenkins 实现,而 DevOps 则需要文化和流程的转变,通过自动化和持续优化实现高效开发。
在好处上,CI/CD 有助于快速可靠地更新代码,而 DevOps 则能提高开发效率,增强团队协作,实现持续改进和自动化。
使用案例显示,CI/CD 流水线在 ReactJS 等项目中有效提升开发流程,微盘平台源码而 DevOps 则在 Meta 等大型企业中推动软件交付的无限潜力。
总结,CI/CD 和 DevOps 都追求快速和健壮的软件开发,但它们在范围、目的、流程、实现、阶段和优势方面有所不同。
什么是持续集成(CI)/持续部署(CD)?
在软件开发中,持续集成(CI)和持续交付(CD)是两个常用的术语。它们究竟代表了什么含义呢?本文将为您详细解释这些概念以及与之相关的持续测试(CT)和持续部署(CD)。
想象一下工厂的装配线,它以快速、自动化、可重复的方式生产出消费品。在软件开发领域,持续交付(CD)就是以类似的方式,从源代码生成发布版本。而启动这一过程的是持续集成(CI),它确保代码的质量,并将最终产品提供给用户。推动这一切高效运行的,正是运维开发(DevOps)践行者。
“持续”一词在这里指的是一种随时可运行的状态,而非持续不断地运行。在软件开发中,它涵盖了多个核心概念和最佳实践。其中,将源代码转换为可发布产品的多个任务和作业串联而成的软件“管道”,就是持续交付管道。
持续交付管道的工作流程通常包括源代码跟踪、构建、测试、指标采集和版本管理等方面。这些作业是自动化的、高效的,并且可重复的。如果作业成功,工作流管理器将触发管道中的下一个作业;如果作业失败,则会发出警报,以便尽快纠正问题。
在持续交付管道中,快速失败(fail fast)是一种重要的概念。它指的微信传播源码是在管道流程中尽快发现问题并快速通知用户的方式,以便及时修正问题并重新提交代码。
持续集成(CI)是在源代码变更后自动检测、拉取、构建和进行单元测试的过程。其目标是快速确保开发人员新提交的变更是好的,并且适合在代码库中进一步使用。
持续测试(CT)是指在代码通过持续交付管道时运行扩展范围的自动化测试的实践。它包括单元测试、集成测试、系统测试等多种形式,以确保代码质量。
持续交付(CD)通常是指整个流程链,包括持续集成、持续测试和可选的持续部署。其目标是自动化、效率、可靠性、可重复性和质量保障。
持续部署(CD)是指能够自动提供持续交付管道中发布版本给最终用户使用的想法。这可以通过蓝/绿测试/部署、金丝雀测试/部署、功能开关、暗箱发布等多种方法实现。
运维开发(DevOps)是一种关于如何使开发和运维团队更容易合作开发和发布软件的一系列想法和推荐的实践。持续交付管道是DevOps理念的一种实现。
管道即代码(pipeline-as-code)是将管道实现表示为代码,以便它可以与代码一起存储、评审、跟踪和重建的通用术语。
DevOps如何影响生产软件的基础设施?传统的硬件系统需要配套的软件,而DevOps则通过标准化交付、虚拟机和容器等技术,实现了易于重现和可跟踪的环境。
通过 Jenkins 构建 CI/CD 实现全链路灰度
本文介绍通过 Jenkins 构建流水线的方式实现全链路灰度功能。
在发布过程中,为了整体稳定性,我们总是希望能够用小部分特定流量来验证下新发布应用是否正常。
即使新版本有问题,也能及时发现,控制影响面,保障了整体的稳定性。
整体架构
我们以如下 Demo 为例:
为了保证稳定,我们约定如下上线流程:
其中,在灰度验证中,分时横盘突破源码有几种不同的策略
部署应用&创建泳道
按照参考文档部署应用后,我们首先要区分线上流量和灰度流量。
创建泳道组,将整个链路涉及到的应用全选:
然后创建泳道组,将符合规则的应用划入 gray 泳道:
注:没有匹配的流量,会走到基线环境,也就是没有打标的应用节点上。
配置完成后,访问网关,如果不符合灰度规则,走基线环境:
如何符合灰度规则,走灰度环境:
配置 Jenkins 流水线
本文实践需要将源码打包后执行镜像推送,请确保 Jenkins 有权限推送到镜像仓库中。具体操作,请参见使用 kaniko 构建和推送容器镜像。
在 Jenkins 命名空间下使用生成的 config.json 文件创建名为 jenkins-docker-cfg 的 Secret。
在 Jenkins 中创建全链路灰度发布流水线
基于 Jenkins 实现自动化发布的流水线,通过该流水线可以使应用发布具备可灰度、可观测、可回滚的安全生产三板斧能力。
1. 在 Jenkins 控制台左侧导航栏单击新建任务。
2. 输入任务名称,选择流水线,然后单击确定
3. 在顶部菜单栏单击流水线页签,在流水线区域配置相关参数选择,输入脚本路径,然后单击保存。
您可以参考以下的文件填写好指定的参数,当然您也可以根据需求编写 Jenkinsfile ,并上传至 Git 的指定路径下(流水线中指定的脚本路径)。
构建 Jenkins 流水线
1. 在 Jenkins 控制台单击流水线右侧的图标。
2. 单击流水线的开始构建。
说明:第一次构建因为需要从 Git 仓库拉取配置并初始化流水线,所以可能会报错,再次执行 Build with Parameters,生成相关的参数,填写相关的参数,再次执行构建。
查看部署状态,代码打包,镜像构建及发布,灰度部署阶段都已经完成,结束灰度阶段等待确认。
结果验证
1. 登录容器服务控制台,通用炒股源码指标在控制台左侧导航栏中,单击集群。
2. 在集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情。
3. 在集群管理页面左侧导航栏选择工作负载 > 无状态。
4. 在无状态应用列表页面,spring-cloud-a-gray应用已经自动创建,并且它的镜像已经替换为spring-cloud-a:gray版本。
5. 在集群管理页面左侧导航栏选择网络 > 服务,选择设置的命名空间,单击zuul-slb服务的外部端点,查看真实的调用情况。
6. 登录 MSE 治理中心控制台,在应用详情页面,可以看到灰度流量已经进入到灰度的 Pod 中。
全量发布应用
结果验证通过之后,确认全量发布。
1. 在 Jenkins 控制台中,单击目标流水线名称。
2. 单击需要全量发布的阶段,在请确认是否全量发布对话框中输入 true,然后单击确认。
3. 在容器服务控制台,发现 spring-cloud-a-gray 应用已经被删除,并且 spring-cloud-a 应用的镜像已经替换为 spring-cloud-a:gray 版本。
4. 在 MSE治理中心控制台,发现灰度流量已经消失。
回滚应用
如果发现验证结果不符合预期时,则回滚应用。
1. 在 Jenkins 控制台中,单击目标流水线名称。
2. 单击需要全量发布的阶段,在请确认是否全量发布对话框中输入 false,然后单击确认。
3. 在容器服务控制台,发现 spring-cloud-a-gray 应用已经被删除,并且 spring-cloud-a 应用的镜像仍然是老版本。
4. 在 MSE 治理中心控制台,发现灰度流量已经消失。
总结
在微服务治理架构中,全链路灰度功能能提供虚拟泳道,极大的方便了测试、发布时的快速验证,能够帮助 DevOPs 提升线上稳定性。
阿里云微服务引擎(MSE)能够给您带来全生命周期的、全方位的微服务治理能力,保障您的线上稳定性、提升开发、运维效率。
了解 Apple 的 CI 构建服务 Xcode Cloud
Xcode Cloud 是 Apple 为开发者提供的持续集成构建服务。以下是开始将它用于您自己的软件创建的方法。
在?WWDC? 上,Apple 为其开发 IDE 推出了名为?Xcode?Cloud 的新云构建服务。
Xcode Cloud 是托管在 Apple 服务器上
的持续集成
(CI) 构建服务,允许开发团队协作并自动执行软件配置和构建的构建和软件打包服务。持续集成背后的理念是,一个机器人或一组机器人监视源代码存储库中的代码更改,然后以特定的时间间隔检索源代码,自动构建软件组件,并自动将其分发给利益相关者。
使用 CI,开发人员和公司可以通过允许其他计算机手动管理构建过程来加快构建和分发时间。有了 CI,开发人员不得不花时间进行手动构建的日子已经一去不复返了。
将 CI 视为自动化生成工程师 一个可以为你管理生成和分发各个方面的机器人。
要求要使用 Xcode Cloud,您必须满足以下要求:
注册 Apple Developer Program使用 Xcode .0.1 或更高版本在 Xcode 的设置中添加您的 Apple ID在 App Store Connect 中为您的 App 添加 App 记录将 Xcode Cloud 连接到您的在线源代码管理系统成本Apple 现在为每个 Apple 开发者帐户提供 小时的 Xcode Cloud 免费计算时间。额外的计算小时数为 、 和 个计算小时,范围从每月 . 美元到 . 美元不等。
有关详细信息,请参阅?Xcode Cloud 概述页面。
复杂性请注意,使用 Xcode Cloud 并非易事。苹果试图让Xcode Can更容易上手,但这些努力都失败了。
Xcode Cloud 很复杂,要完全理解如何使用它,您可能需要阅读多达
十
个或更多 Apple 开发者文档的不同部分——而 Apple 的开发者文档已经过于冗长和分散。
你可能会发现自己在 Apple 的 Xcode Cloud 开发人员页面上从一个链接跳到下一个链接,却发现你已经浏览了文档,以至于你忘记了你打算理解的主题。
App Store Connect 是 Apple 的 Web 门户,开发者和团队可在其中管理团队成员、App 设置、详细信息以及开发者之间的协作。对于 App Store Connect 和 Xcode Cloud,您需要拥有 Apple 开发者帐户和 Apple ID 才能登录。
存在帐户问题、团队和权限问题、源代码管理设置和配置以及 App Store Connect 问题。
特别是,如果你在 App Store Connect 的“证书、标识符和描述文件”部分中有一个较旧的 App ID,并且在 Xcode Cloud 发布后没有设置它,你可能会发现 App Store Connect 门户中的 Xcode Cloud 标签页根本无法用于该 App:
旧版 App ID 上的 Xcode Cloud 失败。Apple 目前对此没有任何解释,在这种情况下,您唯一的办法是首先从 App Store 中删除该 App,删除 App ID,然后使用相同的 App Bundle ID 创建一个新 App ID,然后在 App Store Connect 中为该?App?ID 设置 Xcode Cloud。
这是苹果的荒谬和不可原谅的疏忽。
更糟糕的是,如果您必须删除并重新创建 App ID,您还可能丢失该 App 的所有过去指标和分析数据,并且您必须重新输入并重新上传所有 App 细节、屏幕截图和影片到 App Store Connect。
您或您的团队成员还需要熟悉源代码管理,例如 git、GitHub 或其他受支持的源代码管理系统之一。
您至少需要阅读以下大部分文档:
App Store 连接App Store Connect 的证书、标识符和描述文件App Store Connect 的团队和成员管理Xcode 源代码管理Xcode 演唱和功能Xcode 方案和共享关于使用 Xcode Cloud 进行持续集成和交付为您的团队配置 Xcode Cloud使依赖项可用于 Xcode Cloud使用 Xcode Cloud 的要求源代码管理要求配置您的第一个 Xcode Cloud 工作流程此外,Apple 在 Xcode 中更改了 Xcode 的构建系统,因此如果您还不熟悉这些更改,则需要阅读 Xcode?
发行说明中的?
Xcode 构建系统发行说明
页面。
准备好花费数小时甚至
数天
的时间查看 Apple 的开发者文档。
项目和工作区要求您必须在项目或工作区中配置一长串内容才能使用 Xcode Cloud。这个列表很大,所以我们不会在这里讨论。
您可以在 Apple Xcode Cloud 要求页面中阅读有关?Xcode?项目和工作区要求的更多信息。
项目满足要求后,必须将 Xcode Cloud 配置为在 GitHub、GitLab、BitBucket 或 BitBucket 服务器上访问项目的源代码管理帐户。Xcode Cloud 需要基于 git、支持网络的 SCM 系统才能工作。
如果您的项目有 SCM(源代码管理)管理员,请让他们配置 Xcode Cloud 和开发团队的帐户,以使用上述 SCM 服务之一在 Xcode Cloud 中访问您的 SCM 帐户。
将 Xcode Cloud 连接到 GitHub。Apple 在为您的团队配置 Xcode Cloud?页面上提供了更多信息。
Apple 还在 Xcode Cloud 要求页面上提供了有关使用生成或修改 Xcode 项目或工作区的第三方工具的警告:
重要提示
:Xcode Cloud 需要始终存在的一致 Xcode 项目或工作区。如果您使用动态生成或编辑项目或工作区的第三方工具,则 Xcode Cloud 的初始配置和后续构建可能会失败。
如果您尚未将 Xcode Cloud 连接到 SCM 系统,当您打开已在 App Store Connect 中设置了 App ID 和捆绑 ID 的 Xcode 项目时,下次打开 Xcode 项目时,您可能会在 Xcode 中看到以下警告:
更深入地了解构建细节查看并理解所有 Xcode Cloud 和 App Store Connect 开发者信息,将 Xcode Cloud 连接到 GitHub 或其他受支持的云 SCM 服务,并将 App ID 配置为使用 Xcode Cloud 后,即可开始在 Xcode 本身中使用它。
作为一项 CI 服务,Xcode Cloud 允许您指定要监控的源代码存储库,包括要使用的分支、配置构建、运行和监控构建,以及检查构建是否存在错误。Xcode Cloud 机器人允许您使用 Apple 的 TestFlight 构建分发应用程序和服务配置何时运行构建、监控构建以及自动何时分发构建。
例如,您可以将 Xcode Cloud 机器人设置为每晚运行构建,以及在特定项目里程碑、发生源代码提交时或仅在存储库中的某些分支发生更改时运行构建。
Xcode Cloud 机器人可以告诉您构建何时以及是否失败、导致失败的原因以及责任人。
Xcode 中的“Xcode 云概览”窗格。设置 Xcode Cloud 机器人后,构建会在您指定的时间自动运行,您不再需要担心构建软件 Xcode Cloud 会为您处理所有构建。
当前版本的 Xcode Cloud 能够在您授权后登录您的 GitHub 存储库,并检索源代码以在 Apple 的 Xcode Cloud 服务器上自动私下构建。所有代码下载和构建都在 Apple 的服务器上进行,因此您不必担心将构建计算机配置为构建服务器。
您还可以通过单击“Xcode 可以构建摘要”选项卡中的“我的”选项卡来查看整个团队或仅为您查看所有构建状态和错误。
使用“我的”选项卡仅查看您的结果。在 Xcode 中使用 Xcode Cloud一旦所有的设置和文档麻烦都解决了,苹果
已经
使Xcode Cloud在Xcode IDE应用程序中相当容易使用。您还可以在面向开发人员的 Apple App Store Connect Web 门户中查看和配置一些 Xcode Cloud 详细信息。
要在?Mac?上的 Xcode IDE 中开始使用 Xcode Cloud,请启动 Xcode,然后从屏幕顶部菜单栏的“产品”菜单中选择“Xcode Cloud-Create Workflow”:
请注意,在 Xcode 项目的 App ID、团队和签名设置以及 SCM 信息连接到 Xcode Cloud 之前,Xcode Cloud 菜单项不会显示在?Xcode?中。
接下来,在项目或工作流窗口左侧的 Xcode 项目编辑器中,选择“本地”选项卡旁边的“云”选项卡。这会将 Xcode 中的视图切换到 Xcode Cloud 视图。
在“云”视图中,您可以看到当前项目的所有生成工作流和任务。您还可以在此视图中查看最近生成的结果。
云视图右侧还有一个“开始构建”按钮,用于立即开始运行构建。App Store Connect 中的构建布局视图与网页版面类似。
如果生成因错误而失败,则概述窗格中将显示“重新生成”按钮。
Xcode Cloud 工作流程Xcode Cloud 使用
工作流
来设置构建条件,以便在构建开始时运行。
若要在 Xcode 项目中创建新的 Xcode Cloud 工作流,请在左侧项目窗口导航器中选择“云”选项卡,然后从 Xcode 的菜单栏中选择“Product-Xcode Cloud-Create Workflow”。
这将在 Xcode 中打开 Xcode Cloud 项目载入表:
在这里,您可以授予对 GitHub 上的源代码存储库或其他受支持的基于 Git 的服务之一的访问权限。这假设您的 SCM 系统已在上述 Xcode Cloud 设置步骤中连接。
授予对 GitHub 的访问权限。授予访问权限后,您可以在工作表中为 Xcode Cloud 工作流程设置初始条件。其中包括启动条件、环境、操作和发布操作。
您还可以通过电子邮件或 Slack 设置通知。
在“常规”行下,可以为工作流指定名称和描述,从弹出菜单中选择存储库,然后选择项目或工作区。在下一步中设置初始生成条件之前,您需要设置这些条件。
在“常规”选项卡下设置工作流信息。在“启动条件”下,您可以选择用于构建的 git 分支、何时根据 SCM 更改触发构建,以及是在任何文件更改时还是基于自定义条件启动构建。
设置生成的所有启动条件后,单击“保存”按钮。
设置生成开始条件。您还可以设置在生成期间和之后要执行的环境设置和操作。
配置 Xcode Cloud 工作流程后,Xcode Cloud 将开始根据您设置的条件运行基于云的构建。
监测您可以随时通过点按 Xcode 项目导航器窗口中的“云”标签页,或在 App Store Connect 的“Xcode?云”标签页下查看构建状态。
Xcode 项目导航器中的“云”选项卡提供了所有构建的摘要、每个构建的结果以及每个项目参与者可能发生的任何错误。通过“概述摘要”窗格,可以快速浏览所有生成结果。
陡峭的学习曲线,但非常有用一旦您度过了陡峭的学习曲线,Xcode Cloud 就具有很大的潜力。但是,除非您是一个非常快速的阅读者,否则请准备好至少花几天时间查看文档并使用 Xcode Cloud 和 Xcode 的功能来掌握产品。
为了使 Xcode Cloud 无缝且易于使用,Apple 需要首先修复 App Store Connect 问题,然后在 Apple Store Connect 中简化配置。在升级签名和功能功能的方式中进行一些自动配置会很好。
最重要的是,Apple 减少、缩短、精简和整合了开发者文档,以便更快、更轻松地学习和使用 Xcode 云。
从团队和自动化的角度来看,毫无疑问,Xcode Cloud 是有益的。从构建服务器基础架构和管理中解放出来,对任何开发团队来说都是一个胜利。
即使在最高层,每月的 Xcode Cloud 成本也可能远低于同等的构建和服务器工程师团队。
一旦 Apple 解决了上述问题,Xcode Cloud 将成为任何公司或开发团队的巨大资产。
在以后的文章中,我们将深入探讨如何使用 Xcode 工作流程,以及如何在 Xcode Cloud 中运行测试。