草庐IT

企业研发治理转型利器:华为云发布流水线服务CodeArts Pipeline

华为云开发者社区 2023-03-28 原文
摘要:2月27日,华为云正式发布流水线服务CodeArts Pipeline,旨在提升编排体验,开放插件平台,以及提供标准化的DevOps企业治理模型,将华为公司内的优秀研发实践赋能给伙伴和客户。

本文分享自华为云社区《企业研发治理转型利器 华为云发布流水线服务CodeArts Pipeline》,作者:华为云头条。

软件持续交付流水线是一个可视化的自动化任务编排调度平台,串联编译构建、代码检查、自动化测试、部署发布等任务,承载软件从代码提交到发布上线全自动化流程。一次配置后即可重复触发执行,避免频繁低效的手工操作。

流水线工程能力伴随软件技术的发展也在逐步演进,现有的DevOps工具链集成有很大的局限性。

数据显示,一套成熟的Pipeline工具链涉及20多种研发工具,企业搭建往往需要3个月,其中40%的时间在管理和配置工具。如何帮助企业建设自动化、标准化和规范化的流水线解决方案成为新的课题。

2月27日,华为云正式发布流水线服务CodeArts Pipeline,旨在提升编排体验,开放插件平台,以及提供标准化的DevOps企业治理模型,将华为公司内的优秀研发实践赋能给伙伴和客户。

▶流水线串联研发作业全流程,沉淀华为研发数字化资产

华为公司在软件开发领域有30年以上的交付经验,从早期的无线基站、路由器,到后来的终端应用,再到云计算服务,持续交付和流水线作业系统也同样在做持续演进。

该演进过程大致可分成三个阶段:

第一个阶段为自动化,将软件交付的各道工序以流水线的方式统一定义,一次编排,可重复执行,降低流程因手工干预导致的质量风险,极大提高了软件开发效率。但是随着业务的发展,研发管理者面临新的问题:

  • 如何保证开发人员的代码合入质量?
  • 如何保证软件交付过程中的必经步骤都被正确执行?
  • 如何保证变更过程中的质量?
  • 如何将团队内的优秀经验和实践共享给其他团队?
  • 如何保证所有团队的工程能力建设一致?

这就需要演进到后续阶段解决上面的问题。

第二阶段为标准化。标准化流程通常需要依靠人的管理,但是“人治”经验难以形成有效的知识资产被其他团队继承和使用,并且软件发布过程中时常会出现流程未被正确执行而导致的现网事故。

流水线承载了从代码开发到软件发布全过程研发数据,企业每年流水线作业系统上积累的数据,都是一笔关键的知识资产,要让这批资产有效利用起来,也就是以数字化的方式辅助企业进行研发治理。

第三阶段为规范化。华为通过多年的持续交付实践经验,总结出了一套行之有效的研发策略管理模型,以数字化的管理方式将要求内置在流水线中,规范流水线每个阶段的质量管理要求,也将软件交付从依靠人的治理转变为工具和流程的自动化治理,真正将企业的研发治理模型和流水线作业系统相结合,让开发者无感开发,流程天然合规。

▶华为云CodeArts Pipeline,将华为研发交付实践赋能伙伴和客户

华为流水线的核心为编排调度+开放平台+企业研发治理。过去,华为云CodeArts Pipeline一直致力于协助客户软件工程能力建设,流水线已具备任务编排调度、执行策略管理、质量门禁等核心能力。本次发布的重点是提升编排体验,开放插件平台,以及提供标准化的DevOps企业治理模型,将华为公司内的优秀研发实践赋能给伙伴和客户。

▍特性一:灵活高效的流水线编排能力,5分钟完成流水线创建

流水线是开发人员极为重要的工作平台,使用体验对企业的研发效率影响很大,企业的配置管理工程师通常要对成百上千的流水线进行频繁的创建、编排和更新。

华为云CodeArts Pipeline注重一站式体验,所见即所得的交互方式,降低用户的学习和使用成本,本次的全新UI升级,重在提升编排体验,让开发人员可在5分钟内完成个人流水线的创建。通过串并行的混合编排,多层任务嵌套等更灵活的编排模式,快速完成企业多个研发场景流水线工程建设。

▍特性二:开放可扩展的流水线插件平台,助力企业研发资产快速集成

中大型企业一般都会有自己的流水线工具链,在企业上云后,对于企业自建的CICD工具,开源工具等资产无法被继承和复用,造成大量的重复建设和浪费。

华为云CodeArts Pipeline提供了一套标准的流水线扩展插件接入方式,让企业能够快速将已有的工具接入到插件平台,或者基于自身业务需求快速开发和发布插件,并在企业内进行共享和共建。

其优势在于:

  • 低代码、可视化插件开发体系,降低开发成本,提升开发效率;
  • 统一插件接入标准,支持企业快速开发插件,快速适配业务需求。

注:目前流水线扩展插件只面向企业开放

▍特性三:微服务DevOps变更模型,小特性需求交付周期缩短到1天

传统ICT领域软件通常按大颗粒版本进行发布,集中式版本发布的显著问题是每个版本承载特性过多,从需求提出到正式上线时间跨度大,响应周期长,影响企业抢占市场。

华为云CodeArts Pipeline给企业提供了一种微服务模型,将企业大军团的作战方式转变为小团队精英作战,支持每个微服务独立的进行开发、验证、部署及上线发布,缩短需求的发布周期,同时支撑企业按照业务功能来组织团队,优化管理模型,运作更为精细化,团队运作效率也可以得到有效的提升。

为保证业务快速上线,关键能力是软件高效的自动化部署,大规模的软件部署通常是让开发人员感到痛苦的事情。

CodeArts Pipeline提供了微服务DevOps变更模式,为软件的开发到发布构建一个可重复且可靠的自动化过程。通过以任务交付为对象,缩小每次变更范围,小批量、小粒度、频繁的按需发布和部署,降低发布风险。

微服务变更模型优势在于:

  • 天然的OneTrack开发模式,代码主干和现网版本始终一致;
  • 特性分支自动化集成验证和一键回退,可按需集成和发布;
  • 项目管理流,作业流,分支管理流自动协同
  • 需求、代码、变更全流程E2E可追溯

在华为内部,通过基于微服务架构改造和特性解耦,并采用变更管理实践,最终达成:

  • 完成团队全栈工程师能力建设;
  • 轻量级测试,变更验证工作量降低80%
  • 小特性需求交付周期,从3-5天缩短到1天

▍特性四:企业级CI/CD策略管理,2000+企业治理规则助力缺陷自动拦截

Policy As Code(策略即代码)是一种通过代码定义和管理自动化策略的方法,基于代码的自动化而不是依赖手动流程来管理策略,允许团队更快地交付并减少人为配置错误的可能性,是一种提高软件交付质量的最佳实践。

DevOps模式质量管理强调工具化承载和自动化检查,华为云CodeArts Pipeline通过策略的代码化管理,将安全、质量、可信等规则内置在流水线中。DevOps策略管理模型以数字化的方式治理企业研发流程,将企业治理规则沉淀为企业的资产。

其优势在于:

  • 标准化作业流程,策略模板可继承可复制
  • 策略统一管控,并开放自定义策略能力;
  • 策略可应用于流水线各个阶段。

在华为公司,可信构建、开源治理、代码检查、自动化测试、安全生产、合规扫描等策略内置在流水线中,共沉淀企业治理模板2000多个,软件发布缺陷率降低80%以上。

▍特性五:云原生发布管理,一键回滚,现网问题快速修复

云原生技术有助于构建和运行可弹性扩展的应用,降低微服务的部署依赖,使工程能够轻松对系统做出频繁和可预测的重大变更。云原生发布不依赖于特定的云基础设施,而是通过集中的编排调度系统进行动态管理和调度,完成软件快速、低风险部署。

借助以上优势,企业可以面对市场的变化快速做出响应。云原生应用可以在公有云、混合云和私有云中提供一致的体验,本次重磅推出云原生发布管理特性。

其优势在于:

  • “小步快跑”的方式实现低成本,高效率,高质量的软件发布;
  • 发布过程中的事件单管理,变更过程可视化
  • 流水线支持版本一键回滚

基于以上五大特性,华为云CodeArts Pipeline可以帮助企业建设高效的、可扩展的流水线自动化作业系统,并且通过DevOps研发策略管理,持续规范化客户流水线建设,助力企业高效高质量交付。

如今,华为流水线服务已经支持华为公司云计算、ICT、终端等多个产业的软件持续交付,支撑超过6万软件开发人员日常工作,每日执行高达百万次。

未来,华为云CodeArts Pipeline将在平台的开放性,研发数字化治理上持续发力。支持跨workflow的编排、跨平台的交互能力;持续外溢更多企业策略管理模型。CodeArts Pipeline始终以帮助企业建设自动化、标准化和规范化的流水线作业系统为目标,持续为客户创造价值。

华为云CodeArts Pipeline服务已上线,欢迎体验~

 

点击关注,第一时间了解华为云新鲜技术~

有关企业研发治理转型利器:华为云发布流水线服务CodeArts Pipeline的更多相关文章

  1. ruby - 使用 ruby​​ 和 savon 的 SOAP 服务 - 2

    我正在尝试使用ruby​​和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我

  2. ruby - 具有身份验证的私有(private) Ruby Gem 服务器 - 2

    我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..

  3. ruby-on-rails - 启动 Rails 服务器时 ImageMagick 的警告 - 2

    最近,当我启动我的Rails服务器时,我收到了一长串警告。虽然它不影响我的应用程序,但我想知道如何解决这些警告。我的估计是imagemagick以某种方式被调用了两次?当我在警告前后检查我的git日志时。我想知道如何解决这个问题。-bcrypt-ruby(3.1.2)-better_errors(1.0.1)+bcrypt(3.1.7)+bcrypt-ruby(3.1.5)-bcrypt(>=3.1.3)+better_errors(1.1.0)bcrypt和imagemagick有关系吗?/Users/rbchris/.rbenv/versions/2.0.0-p247/lib/ru

  4. ruby-on-rails - s3_direct_upload 在生产服务器中不工作 - 2

    在Rails4.0.2中,我使用s3_direct_upload和aws-sdkgems直接为s3存储桶上传文件。在开发环境中它工作正常,但在生产环境中它会抛出如下错误,ActionView::Template::Error(noimplicitconversionofnilintoString)在View中,create_cv_url,:id=>"s3_uploader",:key=>"cv_uploads/{unique_id}/${filename}",:key_starts_with=>"cv_uploads/",:callback_param=>"cv[direct_uplo

  5. ruby - 用 Ruby 编写一个简单的网络服务器 - 2

    我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b

  6. ruby-on-rails - 在 Rails 中调试生产服务器 - 2

    您如何在Rails中的实时服务器上进行有效调试,无论是在测试版/生产服务器上?我试过直接在服务器上修改文件,然后重启应用,但是修改好像没有生效,或者需要很长时间(缓存?)我也试过在本地做“脚本/服务器生产”,但是那很慢另一种选择是编码和部署,但效率很低。有人对他们如何有效地做到这一点有任何见解吗? 最佳答案 我会回答你的问题,即使我不同意这种热修补服务器代码的方式:)首先,你真的确定你已经重启了服务器吗?您可以通过跟踪日志文件来检查它。您更改的代码显示的View可能会被缓存。缓存页面位于tmp/cache文件夹下。您可以尝试手动删除

  7. 华为OD机试用Python实现 -【明明的随机数】 2023Q1A - 2

    华为OD机试题本篇题目:明明的随机数题目输入描述输出描述:示例1输入输出说明代码编写思路最近更新的博客华为od2023|什么是华为od,od薪资待遇,od机试题清单华为OD机试真题大全,用Python解华为机试题|机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为o

  8. 华为常用命令 - 2

    system-view进入系统视图quit退到系统视图sysname交换机命名vlan20创建vlan(进入vlan20)displayvlan显示vlanundovlan20删除vlan20displayvlan20显示vlan里的端口20Interfacee1/0/24进入端口24portlink-typeaccessvlan20把当前端口放入vlan20undoporte1/0/10删除当前VLAN端口10displaycurrent-configuration显示当前配置02配置交换机支持TELNETinterfacevlan1进入VLAN1ipaddress192.168.3.100

  9. ruby - 我的 Ruby IRC 机器人没有连接到 IRC 服务器。我究竟做错了什么? - 2

    require"socket"server="irc.rizon.net"port="6667"nick="RubyIRCBot"channel="#0x40"s=TCPSocket.open(server,port)s.print("USERTesting",0)s.print("NICK#{nick}",0)s.print("JOIN#{channel}",0)这个IRC机器人没有连接到IRC服务器,我做错了什么? 最佳答案 失败并显示此消息::irc.shakeababy.net461*USER:Notenoughparame

  10. ruby - Rails 开发服务器、PDFKit 和多线程 - 2

    我有一个使用PDFKit呈现网页的pdf版本的Rails应用程序。我使用Thin作为开发服务器。问题是当我处于开发模式时。当我使用“bundleexecrailss”启动我的服务器并尝试呈现任何PDF时,整个过程会陷入僵局,因为当您呈现PDF时,会向服务器请求一些额外的资源,如图像和css,看起来只有一个线程.如何配置Rails开发服务器以运行多个工作线程?非常感谢。 最佳答案 我找到的最简单的解决方案是unicorn.geminstallunicorn创建一个unicorn.conf:worker_processes3然后使用它:

随机推荐