jjzjj

小微企业如何在10分钟内实现持续交付

云效DevOps 2023-03-28 原文

背景:小微企业如何在10分钟内实现持续交付,小型企业一般是指研发人数少于30人的企业,这些企业有的处于生存期,有的处于发展期,要求产品迭代速度要赶上市场更新速度。对于研发流程,一般没有专职的管理人员,希望引进成熟的方案把游击队改造成正规军,用小而精的技术团队驱动大业务、大市场,进而实现企业和团队的持续交付大发展。

 
你有问题,我有方案。云效助力中小企业发展,适合你的解决方案才是最好的方案。任何软件研发过程都必须解决两个问题:代码怎么管、产品怎么发?不希望引入复杂的流程、不希望增加额外的人员消耗,又可以解决实际问题并获得效能提升。借助云效,只需要“十分钟,两步走”您就可以拥有成熟的持续交付能力:
 
第一步,用云效代码平台进行代码托管和评审;
 
第二步,用云效流水线进行持续集成和交付。
 

1 、当前小型企业持续交付中遇到的挑战

 
如果没有引入成熟的工具和方法,研发过程一般面临这些挑战:
 
• 团队没有统一的研发管理流程,工具无约束,遵守流程规范基本靠自觉;
 
• 日常发布流程中人工干预过多,缺乏自动化部署能力;
 
满足团队日常开发的需求,能够顺畅地部置到生产环境,需要:
 
• 统一的代码托管和评审;
 
• 一致的构建和运行环境;
 
• 规范的自动化发布流程。
 

2、 基于云效解决方案

 
2.1 云效持续交付能力
 
云效,企业级一站式DevOps解决方案,源于阿里巴巴先进的管理理念和工程实践,致力于成为数字企业的研发效能引擎!云效提供从“需求->开发->测试->发布->运维->运营”端到端的协同服务和研发工具,支持公共云、专有云和混合云多种部署形态,通过人工智能、自动化技术的应用助力开发者提升研发效能,持续快速交付有效值。
 
 
 
2.2 我们的优势
 
2.2.1 代码管理
 
• 自动化代码检测提供安全扫描快速暴露代码安全问题,同时提供代码规约检查保障代码质量。
 
• 阿里巴巴自研,适合企业级代码库,提供企业间数据隔离及企业-代码库-成员三级权限管控能力。
 
• 安全稳定的代码库完善的日志审计、IP白名单等实现访问控制,让你的代码安全无忧。
 
• 多样化代码评审完善的配置能力支持丰富的代码评审场景,自动化代码扫描提高评审效率。
 
说明
立即体验:云效代码管理
 
2.2.2 流水线
 
• 钉钉消息通知,流水线运行结果,即时准确地反馈到钉钉群。降低沟通成本,提升团队工程协同。
 
• 快速生成流水线,适用多种场景,通过模版来快速创建流水线,提供可视化编排和结果展现,所见即所得;
 
• 自动化质量保障手段,支持代码扫描、安全扫描,人工测试卡点等多种质量红线,确保业务交付质量。
 
• 支持多语言Java、Node.js、Python、PHP、Golang等语言脚手架生成代码框架,可以对接主流代码仓库;
 
• 软件发布支持保障业务稳定交付,通过灰度发布、分批发布的策略,保障业务交付的稳定。
 
说明 立即体验:云效流水线Flow
 
2.3 解决方案架构图
 
结合代码管理平台和持续交付流水线,为小微企业实现随时集成,每日交付提供了很好的基础保障,真正实现持续快速交付有效价值。
 
 
 
• 过程中任何问题通过钉钉,自动化地及时反馈到指定负责人,做到准确反馈、即时响应,快速恢复。
 
• 开发者根据任务安排,创建特性分支,通过线下编译和自测通过提交代码;
 
• 代码提交自动触发代码扫描,通过后发起合并请求,根据代码库设置发送给指定的代码评审员进行评审;
 
• 完成代码评审后合并集成分支,自动触发集成分支流水线,完成构建、部署和测试环境验证工作,验证通过合并到发布分支;
 
• 根据发布时间人工触发发布分支流水线,完成构建、预发部署验证、发布审核等流程,审批通过部署生产环境;
 
2.4 两步开启持续交付
 
第一步,先把代码托管起来
 
1. 快速创建代码仓库
 
通过代码库右上角,点击【添加代码库】,可以选择新建代码库和导入代码库,代码库克隆支持HTTPS和SSH两种协议;
 
 
2. 开启代码扫描
 
在提交和合并请求中,可以自动触发代码扫描任务。目前提供了两种扫描能力:敏感信息扫描及Java规约扫描。管理员可以在【设置】-【集成与服务】中开启设置代码扫描的时机,或者开启和关闭扫描;
 
 
3. 引入代码评审
 
通过【分支设置】完成代码评审场景定制,例如设置集成分支为保护分支,需要通过新建合并请求-通过合并请求-合并分支流程完成;
 
 
第二步,用流水线实现自动交付
 
1. 一键创建流水线
 
点击流水线列表右上角的【新建流水线】按钮,开始创建流水线,选择研发语言和流水线模版;
 
 
2. 编辑流水线场景
 
通过流水线编辑功能,结合企业场景快速配置以下2条流水线:
 
•集成环境流水线
 
 
【步骤说明】
 
*触发方式选择:代码提交触发;
 
*集成分支开始构建编译;
 
*编译通过部署测试环境;
 
*测试同学测试验证;
 
*验证通过代码合并发布分支;
 
•发布环境流水线
 
 
【步骤说明】
 
*发布分支开始构建编译;
 
*编译通过部署预发环境;
 
*预发环境验收测试;
 
*验证通过开始发布单审核;
 
3.5 用户旅程
 
通过以下内容详细介绍如何快速实现从代码提交到交付的过程。【场景为:Java单应用主机部署】;
 
  • 新建特性分支,开始编码
 
开发人员可以通过代码平台在线方式或者本地新建分支开始编码,代码完成后提交远端分支;工具开始自动执行java开发规约和敏感信息扫描,可以直观看到检查结果,便于进一步改进;
 
  • 新建合并请求发起代码评审
 
分支规约扫描通过后开始新建合并请求发起代码评审,强制代码评审有利于提高代码质量,帮助开发人员尽早发现问题,提高问题修复的效率;
 
 
分支通过代码评审后,点击“合并”按钮,代码自动合并到集成分支,随即触发集成分支流水线,开始构建和测试环境部署。
 
 
  • 启动集成测试和验证
 
集成分支构建部署到测试环境后,测试同学开始进行测试验证,根据测试结果选择“验证通过”或者“验证不通过”,测试通过后代码合入发布分支;
 
  • 启动生产环境发布和审核
发布分支构建部署预发环境并且测试验证通过后,提交生产环境发布单审批,指定的同学“通过”后开始生产环境部署;
 
  • 查看流水线运行结果
所见即所得,流水线运行过程直观展示,企业可完整看到当前流水线运行所处阶段和场景;
 
•集成环境流水线
 
 
•发布环境流水线
 
 
  • 获得反馈信息
流水线中配置钉钉群通知插件,可以将流水线运行过程中的信息反馈相应同学,便于快速定位和排查问题,钉钉群流水线运行结果:
 
 

4、更多场景

 
随着研发团队规模不断壮大,产品线逐渐丰富,加强测试和质量保障是绕不开的步骤,基于流水线自动化测试和红线卡点可以有效保障产品交付质量,根据需求选择合适的流水线任务加入到现有流程中,企业可以灵活定义适合自身场景的玩法。
 
本文通过“两步走”介绍了如何在10分钟内建立企业专属的流水线场景,快速规范代码托管和应用发布,获得研发效能成倍提升。
 
云效,企业级一站式DevOps解决方案,源于阿里巴巴先进的管理理念和工程实践,致力于成为数字企业的研发效能引擎!云效提供从“需求->开发->测试->发布->运维->运营”端到端的协同服务和研发工具,支持公共云、专有云和混合云多种部署形态,通过人工智能、自动化技术的应用助力开发者提升研发效能,持续快速交付有效值。
 

关于我们

了解更多关于云效DevOps的最新动态,可微信搜索关注【云效】公众号;

彩蛋:公众号后台回复【指南】,可获得《阿里巴巴DevOps实践指南》&《10倍研发效能提升案例集》;

看完觉得对您有所帮助别忘记点赞、收藏和关注呦;

有关小微企业如何在10分钟内实现持续交付的更多相关文章

  1. ruby - 如何在 Ruby 中顺序创建 PI - 2

    出于纯粹的兴趣,我很好奇如何按顺序创建PI,而不是在过程结果之后生成数字,而是让数字在过程本身生成时显示。如果是这种情况,那么数字可以自行产生,我可以对以前看到的数字实现垃圾收集,从而创建一个无限系列。结果只是在Pi系列之后每秒生成一个数字。这是我通过互联网筛选的结果:这是流行的计算机友好算法,类机器算法:defarccot(x,unity)xpow=unity/xn=1sign=1sum=0loopdoterm=xpow/nbreakifterm==0sum+=sign*(xpow/n)xpow/=x*xn+=2sign=-signendsumenddefcalc_pi(digits

  2. ruby - 如何在 buildr 项目中使用 Ruby 代码? - 2

    如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby​​

  3. ruby - 什么是填充的 Base64 编码字符串以及如何在 ruby​​ 中生成它们? - 2

    我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%

  4. ruby-on-rails - 如何在 ruby​​ 中使用两个参数异步运行 exe? - 2

    exe应该在我打开页面时运行。异步进程需要运行。有什么方法可以在ruby​​中使用两个参数异步运行exe吗?我已经尝试过ruby​​命令-system()、exec()但它正在等待过程完成。我需要用参数启动exe,无需等待进程完成是否有任何ruby​​gems会支持我的问题? 最佳答案 您可以使用Process.spawn和Process.wait2:pid=Process.spawn'your.exe','--option'#Later...pid,status=Process.wait2pid您的程序将作为解释器的子进程执行。除

  5. ruby - 如何在续集中重新加载表模式? - 2

    鉴于我有以下迁移:Sequel.migrationdoupdoalter_table:usersdoadd_column:is_admin,:default=>falseend#SequelrunsaDESCRIBEtablestatement,whenthemodelisloaded.#Atthispoint,itdoesnotknowthatusershaveais_adminflag.#Soitfails.@user=User.find(:email=>"admin@fancy-startup.example")@user.is_admin=true@user.save!ende

  6. ruby - 如何在 Ruby 中拆分参数字符串 Bash 样式? - 2

    我正在为一个项目制作一个简单的shell,我希望像在Bash中一样解析参数字符串。foobar"helloworld"fooz应该变成:["foo","bar","helloworld","fooz"]等等。到目前为止,我一直在使用CSV::parse_line,将列分隔符设置为""和.compact输出。问题是我现在必须选择是要支持单引号还是双引号。CSV不支持超过一个分隔符。Python有一个名为shlex的模块:>>>shlex.split("Test'helloworld'foo")['Test','helloworld','foo']>>>shlex.split('Test"

  7. ruby - 如何在 Lion 上安装 Xcode 4.6,需要用 RVM 升级 ruby - 2

    我实际上是在尝试使用RVM在我的OSX10.7.5上更新ruby,并在输入以下命令后:rvminstallruby我得到了以下回复:Searchingforbinaryrubies,thismighttakesometime.Checkingrequirementsforosx.Installingrequirementsforosx.Updatingsystem.......Errorrunning'requirements_osx_brew_update_systemruby-2.0.0-p247',pleaseread/Users/username/.rvm/log/138121

  8. ruby-on-rails - 如何在 ruby​​ 交互式 shell 中有多行? - 2

    这可能是个愚蠢的问题。但是,我是一个新手......你怎么能在交互式ruby​​shell中有多行代码?好像你只能有一条长线。按回车键运行代码。无论如何我可以在不运行代码的情况下跳到下一行吗?再次抱歉,如果这是一个愚蠢的问题。谢谢。 最佳答案 这是一个例子:2.1.2:053>a=1=>12.1.2:054>b=2=>22.1.2:055>a+b=>32.1.2:056>ifa>b#Thecode‘if..."startsthedefinitionoftheconditionalstatement.2.1.2:057?>puts"f

  9. ruby-on-rails - 如何在我的 Rails 应用程序 View 中打印 ruby​​ 变量的内容? - 2

    我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby​​中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R

  10. ruby - 如何在 Rails 4 中使用表单对象之前的验证回调? - 2

    我有一个服务模型/表及其注册表。在表单中,我几乎拥有服务的所有字段,但我想在验证服务对象之前自动设置其中一些值。示例:--服务Controller#创建Action:defcreate@service=Service.new@service_form=ServiceFormObject.new(@service)@service_form.validate(params[:service_form_object])and@service_form.saverespond_with(@service_form,location:admin_services_path)end在验证@ser

随机推荐