在设置你的第一个 CI/CD 管道之前你应该知道什么?

一篇文章了解CI/CD管道全流程 从CI/CD过程开始,包含所有阶段并负责创建自动化和无缝的软件交付的一系列步骤称为CI/CD管道工作流。使用CI/CD管道,软件发布工件可以从代码提交阶段到测试、构建、部署和生产阶段在管道中移动和前进。这个概念非常强大,因为一旦指定了一个管道,它的一部分或全部就可以实现自动化,从而加快流程并减少错误。换句话说,CI/CD管道使企业更容易一天自动多次交付软件。 DevOps工程师经常会因为CI/CD中各个阶段的自动化而与CI/CD管道混淆。虽然不同的工具可以使CI/CD中的各个复杂阶段实现自动化,但由于人工 阅读详情

您想要设置您的第一个自动部署管道,用于构建、测试并将代码更改部署到您的目标云环境。您已经花了几天时间阅读文档和博客来弄清楚您的自动部署管道应该包含哪些内容。但这一切似乎真的势不可挡。他们提到了各种工具,如AWS、Azure、GitHub Actions、Ansible、Jenkins、CircleCI、Terraform和Kubernetes——名单不胜枚举。而且您不确定初始自动部署管道需要哪一个。

❓您的第一个持续交付管道需要做什么和不做什么?

❓这种最小可行管道的必要组成部分是什么?

❓哪些工具是您初始管道的正确选择?

本文重点阐述了您应该如何回答上述问题的思考过程,以便您可以快速开始构建您的第一个交付管道。

01

假设

这篇文章推荐了构建您的第一个 CI/CD 管道的思考过程,假设如下:

  • 您想在云上托管您的应用程序。

  • 像您这样的初创公司希望优化速度,同时保留在扩展时自定义管道的灵活性。

02

CI/CD 定义的快速回顾

持续集成是尽可能频繁地将更改合并到主分支的过程。然后通过创建构建并针对构建运行自动化测试来验证这些更改。

持续交付是持续集成的扩展,因为它会在构建阶段后自动将所有代码更改部署到测试和/或生产环境。这意味着虽然您的构建和测试是自动化的,但部署触发器(比如单击按钮)是手动的。但是一旦开始部署,就不需要人工干预了。

持续部署类似于持续交付,只是部署的触发器也是自动化的。

所以,

  • 持续交付是持续部署的一部分。

  • 持续集成是持续交付和持续部署的一部分。

这篇文章的其余部分使用 CD 来指代持续交付和持续部署。您的思考过程和设置它们的工具选择将是相同的。

03

初始 CD 流水线应该自动化什么?

在决定您的初始管道(也称为最小可行管道)应该是什么时的指导原则是解决当前问题并将理论问题留给未来。采取小步骤,不要试图在一开始就建立一个完全成熟的管道。

虽然您的小步骤应该是您的应用程序用例的功能,但下面列出的是最必要的步骤 - 分为两个阶段。

先决条件

构建任何 CI/CD 管道的先决条件是开发人员定期将其代码提交到中央存储库。对于长期未合并到主分支的功能分支,开发人员应通过尽可能频繁地合并上游来使其保持最新。

第 1 阶段:解决持续集成

  1. 从您的 VCS 中提取分支的最新代码。

  2. 对分支代码运行单元测试,以检查应用程序没有因为新提交推送到分支而损坏。

  3. 每当您配置的事件发生时,触发分支代码的构建。

  4. 使用构建工具在服务器上运行代码构建。

  5. 作为构建过程的一部分,创建代码的一个或多个构建工件。

  6. 将构建工件存储在安全且可访问的云位置。

第 2 阶段:解决持续交付问题

  1. 启用触发将构建工件/应用程序部署到目标云环境(测试/登台/生产等)。

  2. 在手动触发部署时,它会自动将应用程序部署到目标环境,而无需任何停机时间。

  3. 提供一种简单的方法来确定部署是成功还是失败,并提供详细信息。

注意:您的初始管道不需要实施持续部署。

04

初始 CD 管道不应该做什么?

由于实施管道的每个步骤都需要花费时间,因此值得对您希望自动化的每个步骤进行成本效益分析,而不是上一节中提到的步骤。根据我们的经验,一开始,大多数应用程序不需要完全自动化的 CD 工作流程来完成以下工作:

  • 使用基础架构即代码配置和管理资源

  • 回滚部署

  • 多区域或多云部署

  • 自动缩放以动态添加或删除实例

  • 管理许多测试阶段,如性能测试、UI 测试等

注意:在确定最小可行 CD 管道的职责时,请认识到您可能需要根据应用程序的用例添加一个或多个步骤。例如,支付处理应用程序可能比员工休假管理软件对错误部署更敏感。在这种情况下,前者的最小可行 CD 管道应该有一个步骤来快速回滚错误的部署,而后者可以先跳过它。

05

最小可行 CD 管道的必要组件是什么?

鉴于初始管道需要做什么,让我们看一下构建这样一个管道的必要组件。

  1. 版本控制系统 (VCS),例如GitHub和GitLab

  2. 托管您的应用程序基础设施的公共云提供商,例如AWS、Azure和GCP

  3. CI 工具:在应用程序代码上构建和运行测试

  4. CD 工具:将应用程序代码部署到目标环境

06

为您的初始管道选择正确工具的关键标准

对于初始 CD 管道的每个组件,您都有大量工具可供选择。我们建议您选择具有以下特征的工具:

  • 完全托管:完全托管的服务管理完成其工作所需的资源以及任何基础架构,因此您无需投入时间和人员来完成它。只有当您的应用程序需要严格的合规性并要求对您的代码或数据进行严格控制和规范访问时,您才应该在构建初始交付管道时考虑自托管。

  • 易于扩展:可以通过使用代码或与第三方库集成轻松修改和扩展。

  • 丰富的插件生态系统: 广泛的插件池为加速管道自动化提供支持。

  • 解决管道的一个或多个阶段:工具解决的步骤越多,构建管道所需的工具就越少。例如,GitHub 既提供了版本控制系统,也提供了与自己的 CI/CD 的直接集成。

  • 成本:工具的定价结构应该符合您的预算,即使在您扩展后也是如此。

07

推荐的最小可行管道

在构建您的第一个交付管道时,您有两个类别可供选择。

类型 1:管道即代码

管道即代码意味着您使用存储在存储库(例如 Git)中的代码配置部署管道中的步骤 - 构建、测试和部署。它使您能够以与管理应用程序代码相同的方式跟踪和管理对这些配置的更改——使用版本控制和拉取请求。

我们建议您选择下面指定的三个选项之一。

  • GitHub for VCS 和GitHub Actions for CI/CD

  • 用于 VCS 的 GitLab 和用于CI/CD 的GitLab 管道

  • 用于 VCS 的 BitBucket 和用于CI/CD 的BitBucket 管道

优点

  • 它们使您能够直接从其平台构建、测试和部署,而无需与任何其他工具集成。

  • 他们都提供:

◎完全托管的服务:他们提供、管理和扩展您的构建服务器以连续扩展并同时处理多个构建,这样您的构建就不会在队列中等待。

◎自托管运行器:您可以将构建指向您指定的机器上运行。这可以是您在防火墙后面或您管理的私有云上托管自己的服务器。

  • 独立于云和平台。

  • 用于常见任务的内置模板。

缺点

  • 编写部署管道时涉及陡峭的学习曲线。学习如何使用正确的语法和模块正确编写一个需要时间。

  • 这些管道可以达到 1000 多行代码,更新和维护它们可能会让人头疼。

  • 仅当您的团队还使用 Jira 和 Confluence 等其他 Atlassian 工具时才选择 BitBucket,因为它可以与它们顺利集成。

注意:AWS CodePipeline和Azure Pipeline等解决方案也是管道即代码的示例,并且易于设置。但是,它们不可定制,因为与非 AWS 或非 Azure 工具/库的集成很困难。它们还使您完全依赖特定的云提供商。当您设置您的第一个管道时,您可能更明智地保留您希望如何发展您的管道的选项,然后决定您是否希望完全依赖特定的云提供商。

类型 2:发布自动化平台

发布自动化平台无需编写代码来创建管道。它们在管道上作为代码提供了一层抽象。这种抽象进一步简化了管道的创建和管理。

Argonaut就是这样一种工具。您可以在不到五分钟的时间内在您自己的云中运行您的第一个 CI/CD 管道。

08

你应该如何发展你的管道

建立初始管道后,请跟踪您仍然手动执行的操作以及频率。您可以通过自动化以下操作来改进您的初始管道:

  • 代码覆盖分析:在构建步骤中添加代码覆盖工具以确定测试覆盖的代码百分比,如果低于某个阈值,则构建失败。假设开发人员添加了有用的测试,这可以确保代码质量。

  • 多种环境:很难在本地开发环境中测试您的应用程序如何与其他服务、队列和数据库交互。在部署到生产环境之前,使用暂存环境对此进行测试。

  • 安全集成:使用Snyk等工具来监控您的应用程序依赖项是否存在漏洞。

  • 快速部署回滚:使用一种部署策略,确保如果您的应用程序在部署后立即无法使用,您只需选择要将其恢复到的最后一个版本,然后立即回滚到该版本。由于该版本之前已经过测试,因此它不应该再次经历流水线阶段。您可以从各种部署方法中进行选择,例如金丝雀部署、蓝/绿部署等。

  • 快速修复发布:一些生产错误可能需要您通过绕过管道阶段(如测试)来提交和推送修复。虽然有风险,但您需要配置管道,使其支持在几秒钟内部署修补程序。

  • GitOps 实践:随着您的软件扩展,您应该采用GitOps实践——Git 来控制和管理您的基础设施和应用程序配置。

○使用基础架构即代码工具(例如Terraform)来管理您的基础架构。

○为 Kubernetes使用ArgoCD或Flux ,为您的无服务器 Lambda 应用程序使用无服务器堆栈。

09

总结

在产品开发的早期阶段,当您争分夺秒地发布产品更新时,您可能会倾向于推迟自动化 CI/CD 管道。虽然向您的客户提供新功能是重中之重,但在构建持续的 CI/CD 管道方面采取一些小步骤将帮助您更快、更可靠地发布功能。

  • 一步一步自动化。不要试图在第一天就建立成熟的管道。

  • 在其他人之前自动执行最重复的任务,例如部署回滚之前的构建步骤。

  • 选择能够解决您当前需求、快速上手且不会让您陷入困境的工具,这样您就可以在扩展时轻松修改管道。

CI/CD详解 & Jenkins 介绍与实战 本文大纲概览: CI/CD 概念与工作流程 详解 Jenkins安装、启动、初始化配置 使用Jenkins部署github上的 xzll-im 微服务项目 freestyle方式 push代码后自动部署 pipeline方式部署 pipeline + push 方式 本文实操过程中,相关工具版本信息如下: centos版本: CentOS Linux release 7.9.200... 阅读详情

相关推荐

限制 CI/CD 管道成功的 5 个痛点

持续集成和交付管道(CI/CD) 通过在每次更改代码时运行测试和编译来自动化软件开发过程。CI/CD 是有效的 DevOps方法的主要组成部分之一,其中代码作者身份与 IT 运营和质量保证功能相结合,以创建更全面的工作流。不过,CI/CD 管道可能很难做好。确定流程的哪些部分应该自动化、优化各个管道的实施以及使团队能够从系统中获得最大价值,所有这些都需要整个组织的刻意关注和承诺。在本文中,我们将探讨经常阻碍 CI/CD 采用的五个具体痛点。有意识地解决这些常见的陷阱可以使您的流程更可靠且更易于控制。

学海无涯苦作舟的博客 1272

CI/CD管道

CI/CD管道指的是持续集成(Continuous Integration, CI)、持续交付(Continuous Delivery, CD)和持续部署(Continuous Deployment, CD)的组合流程,用于自动化软件开发过程中的构建、测试和部署环节。这些实践旨在提高软件开发的质量和效率,同时减少人为错误。

weixin_45734473的博客 1015

掌握CI-CD管道:加速软件交付的现代实践

持续集成与持续部署(CI-CD)是一种软件开发实践,旨在通过频繁地将代码集成到主干来实现快速、可靠的软件开发流程。在本章中,我们将深入了解CI-CD的概念、历史发展以及它在当今软件开发领域的核心重要性。CI-CD包含了两个主要的实践:持续集成(Continuous Integration)和持续部署(Continuous Deployment)。持续集成指的是开发人员将代码变更频繁地集成到共享仓库中,并通过自动化构建和测试确保代码变更不会破坏项目。

weixin_30632267的博客 1198

CI/CD 管道安全:构建和部署之外的最佳实践

鉴于对快速创新和敏捷方法论采用的需求,持续集成/持续部署 (CI/CD) 管道已成为构建所有 DevOps 流程的基础。他们是高效交付的支柱。

网络研究观 6298

自动化部署到Vercel的CI/CD管道构建指南

本文将深入探讨如何使用GitHub Actions搭建自动化部署到Vercel的CI/CD管道。从检出仓库到运行端到端测试,再到最终部署应用程序,我们将一步一步详细解析整个过程。

weixin_33363025的博客 1283

提升Jenkins CI/CD效率:创建与管理管道库

自定义步骤是管道库中的核心组件,它们允许开发者在Jenkins CI/CD流程中注入个性化的操作,从而实现流程自动化和优化。在这一章节中,我们将深入探讨自定义步骤的概念,并介绍如何创建和组织它们,以及实现它们并进行测试的方法。自定义步骤通过封装重复的代码逻辑,为Jenkins管道提供了一个可复用的代码块,大大减少了维护成本并提升了开发效率。它的好处不仅在于简化了复杂流程的管理,还在于提高了代码的可读性和可维护性。自定义步骤通常被编写为独立的Groovy类,每个类代表一个步骤。

weixin_42600407的博客 972

提升管道效率:你需要知道如何识别CI/CD管道中的主要障碍

许多企业已通过持续集成、交付和部署 (CI/CD) 来更频繁地发布产品。CI/CD管道加速了软件开发,但同时,也有存在阻碍其效率的因素。阅读本文,您将了解到如何判断阻碍管道运行效率的因素,找到它们的具体位置并解决它们。当阻碍管道运行效率的因素不复存在,您的CI/CD管道效率将持续提高,为公司节省人力与财力。持续集成、开发和交付管道有助于加快软件开发。一个很好的使用案例是,Autodesk采用CI/CD之后提高了生产力。如果实施得当,管道可以缩短上市时间,提高新功能和版本稳定性。但是你知道管道内部发生了什么情

weixin_49715102的博客 261

14、基于Terraform的GCP CI/CD管道搭建指南

本文详细介绍了如何在Google Cloud Platform(GCP)上使用Terraform搭建一个完整的CI/CD管道,以实现Docker容器的自动化构建、测试和部署。内容涵盖多环境部署、工作区设置、动态资源配置、资源供应器的使用,以及GCP相关服务如Cloud Source Repositories、Cloud Build、Container Registry和Cloud Run的集成。文章还对比了一体化部署与两阶段部署的适用场景,并深入分析了管道的各个阶段与设计要点,帮助开发者高效构建稳定的云原生

t1u2v的博客 132

想在20分钟内设置好CI/CD管道,按这四个步骤就行了

软件需要速度。持续集成和持续部署(CI/CD)保证了速度(和更好的质量),但仅仅安装管道是不够的。CI/CD需要不断的改进,以确保你在软件开发生命周期中获得最大的收益。下...

开源云中文社区 709

STC51单片机串口多字节数据接收的优化策略

本文深入探讨了STC51单片机串口多字节数据接收的优化策略。针对数据丢包、粘包等常见痛点,核心思路是采用“缓冲队列+定时器超时”模式,将实时处理转变为“先收纳,后处理”。文章详细讲解了硬件初始化、中断服务程序优化(快速入队与激活超时裁判)以及主循环的非阻塞设计,并进阶介绍了环形缓冲区实现与错误处理,旨在构建稳定可靠的串口通信系统。

weixin_29264201的博客 374

华为2024机考真题集合

2.中位数是指把一组数据从小到大排列,最中间的那个数,如果这组数据的个数是奇数,那最中间那个就是中位数,如果这组数据的个数为偶数,那就把中间的两个数之和除以 2,所得的结果就是中位数。在实际考试中会随机抽三道题目进行考察,其中两道100分卷题和一道200分卷题,总共400分。幼儿园组织活动,老师布置了一个任务:每个小朋友去了解与自己同一个小区的小朋友还有几个。3.查找整型数组中元素的众数并组成一个新的数组,求新数组的中位数。1.众数是指一组数据中出现次数量多的那个数,众数可以是多个。

qq_25360769的博客 5093

工程化 CI/CD 管道安全实践

随着业务越发复杂,系统架构从单体走向微服务,CI/CD 管道的复杂性也会相应增多,每个阶段都可能会产生大量的敏感数据,这些敏感数据往往会成为巨大的攻击杠杆。 试想一旦攻击者拿到了源码仓库的访问凭证,那么整个 CI/CD 环境都可能遭到沦陷 在Gitlab的CI/CD 起因统计报告的最后有这样一句话: 我们之所以这么频繁的发布程序,是因为采用了 DevOps 方法,并且主要归功于 CI/CD 中的持续集成、自动化测试和持续部署。 当然,安全也义不容辞。

Eolink 的博客 894

在中国大陆使用 LiveKit 集成阿里云语音交互服务

通过集成阿里云的语音和模型服务,我们可以快速构建出适合中国用户的 LiveKit 智能语音应用。LiveKit Agents 框架的模块化设计使得替换底层服务变得异常简单,只需要更换相应的插件实例即可。使用 WebSocket 版本的阿里云 ASR 接口以获得更低的延迟。利用通义千问的 Function Calling 能力对接智能家居或企业内部 API。结合 LiveKit 的视频处理能力,打造具备视觉交互的数字人。希望这篇博客能为你在实时音视频与 AI 结合的探索之路上提供帮助!

星空漫野 1238

使用Cicada构建CI/CD管道

使用Cicada构建CI/CD管道 项目介绍 Cicada 是一个基于 TypeScript 的 CI/CD 平台,它允许开发者用熟悉的 TypeScript 语言来编写持续集成和持续部署的流程。此项目已归档且不再维护,但其提供的创新方式——利用TypeScript来定义管道,给开发人员带来了更加灵活和强大的管道配置能力。通过Cicada,团队可以本地测试他们的管道,并轻松部署至云端以响应每次推送...

gitblog_00574的博客 1045

deepfake detection数据集

最全Deepfake数据集总结,包含各个数据集下载链接: https://github.com/deepfakeinthewild/deepfake_in_the_wild Dataset name Download Generate method Deepfake videos Actors Deepfake-TIMIT low download De...

where_is_horse的博客 1万+

机器人空间平滑过渡-6点5次贝塞尔曲线

在工业机器人应用中,空间直线或者圆弧等笛卡尔运动中常使用贝塞尔曲线作为过渡平滑, 而6个控制点5次贝塞尔曲线更具备轨迹平滑、速度可导、加速度连续等要求,往往应用于 高级的机器人控制系统中。 贝塞尔曲线(Bézier curve)定义: 五次贝塞尔曲线公式为 化简得到 从上述式子来看,跟五次多项式是一致的,因此跟5次多项式轨迹规划也有相似之处。 但也存在不一致的地方。若使用...

4329

如何在GitLab CI/CD中触发多项目管道

持续集成(CI)是在将代码合并到master分支之前自动进行代码构建和测试的实践。这使开发人员可以及早的发现错误和频繁地合并代码,同时降低了将新错误引入主源代码存储库的风险。代码运行CI之...

DevOps持续集成的博客 1259

在overleaf中使用bibtex引用参考文献

最近在挑选写tex的平台,挑来挑去,个人感觉overleaf给我带来的体验感是最舒适的。不过由于对内部的文件组织和make进行了一层封装,所以与一般的本地平台编译tex会有一点不同。此处写一下在overleaf中使用bibtex的方法。 在tex中使用bibtex引用文献是一件很舒适的事,毕竟这是tex的优点之一(要是tex比word难用,我干什么不去用word,hhh) 第一步,我们创建一个.bib文件,名字随便起,我这边起为reference.bib。 然后打开谷歌学术,搜索你想要引用的文章,并找到

锦恢的博客 4万+

DevSecOps CI/CD 管道中数字供应链安全的集成策略

由于用于扫描制品的工具会不断更新以检测新出现的漏洞,因此与过去的扫描结果相比,最近的扫描结果更有可能是准确的,并能提供更好的保证。CI 和 CD 流水线的驱动工具处于更高的级别,会调用一系列特定功能的工具,如用于从版本库中检出代码、编辑和编译、代码提交和测试的工具,这包括软件成分分析SCA工具、静态应用安全测试 SAST和动态应用安全测试 DAST等。该策略可能包括检查参与 CI 流程的每个职能部门是否使用了正确的密钥来生成证明,是否找到了所需的证明,以及是否指定了根据相关元数据评估证明的方法。

软件供应链安全选型指南 1348

BioEmu 扩散模型加速传统分子动力学(MD)模拟

BioEmu 是一种创新的生成式深度学习系统,通过高效采样和准确预测蛋白质的动态机制,为蛋白质科学和药物设计提供了新的工具。它在多构象采样、MD 模拟拟合和蛋白质稳定性预测方面表现出色,同时显著降低了计算成本。BioEmu 的开发为未来蛋白质动态研究和应用奠定了坚实基础。

weixin_42357472的博客 320

提高RFID检测距离以及检测速度的方法总结

摘要:提高RFID检测距离需优化阅读器功率、标签灵敏度、天线设计及频段选择,同时减少环境干扰;提升检测速度则需改进防碰撞算法、增强并行处理能力、精简数据传输。实际应用需平衡两者关系,如物流仓储采用UHF频段、高增益天线和动态Q算法实现远距离高速读取,ETC系统则通过微波频段和高速调制实现超远距离快速识别。不同场景需针对性优化硬件配置和系统参数。

start_up_go的博客 293

将Docker镜像安全扫描步骤添加到CI/CD管道

使用GitlabCI和Trivy介绍 如今,镜像安全扫描变得越来越流行。这个想法是分析一个Docker镜像并基于CVE数据库寻找漏洞。这样,我们可以在使用镜像之前知道其包含哪些漏洞,因此...

DevOps持续集成的博客 1150

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【Android开发者必看】使用JetBrains TeamCity为Android项目构建CI/CD管道详细指南

如前所述,Gradle 任务build还负责对所有生成的构建工件运行单元测试。不过,在某些情况下,您可能只想在应用的几个变体上运行测试。在这种情况下,您需要将任务替换为适合您的用例的任务。例如,如果您要为应用的免费版本的 release 变体创建一个未签名的 APK,并对其运行单元测试,则应将替换为。为此,请点击顶部导航窗格中的Projects(项目),然后点击(Android 应用 Teamcity)下的Build(构建)。在下一个页面上,与上一步的操作一样,点击右上角的(编辑配置)按钮。

weixin_49715102的博客 1352

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Kubernetes 的 CI/CD 管道概述

An Overview of CI/CD Pipelines With KubernetesTake a look at CI/CD approaches in a Kubernetes ecosystem, best practices for implementing an efficient CI/CD framework, and popular open-source CI/CD too...

DevOps持续集成的博客 592

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Azure DevOps CI/CD 管道的 Swift 项目部署指南

本文详细介绍了如何在Azure DevOps中为Swift项目配置CI/CD管道。主要内容包括准备工作、创建管道、设置触发器、定义任务(如安装CocoaPods、运行Firebase Crashlytics)、构建Swift项目以及错误处理方法。文中提供了具体的YAML配置示例,帮助开发者快速搭建自动化构建流程,以提高开发效率和软件质量。通过完善的CI/CD流程,开发者可以实现更稳定的Swift应用发布。

m0_74337424的博客 443

如何在 GitLab CI 管道中设置变量

GitLab CI 的变量系统可让您将数据注入 CI 工作环境。您可以使用变量来提供配置值,创建可重用的管道,并避免将敏感信息硬编码到.gitlab-ci.yml文件中。 在本指南中,我们将了解如何在自己的 CI 系统中设置和使用变量。有几个选项可用,具体取决于您希望在哪里显示值以及您希望更改它们的频率。 基础 最简单的变量是键值对,它们作为环境变量注入到管道的执行上下文中。您可以在.gitlab-ci.yml文件中将它们作为标准环境变量引用: test: script: - echo "$E.

学海无涯苦作舟的博客 7736
上一篇: 开发者们看过来 | 这是我见过运维圈最“卷”的产品发布会
下一篇: 优维低代码:构件 slot 说明
优维科技EasyOps
博客等级 码龄5年 1483粉丝 395原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值