1 背景
小型企业一般是指研发人数少于30人的企业,这些企业有的处于生存期,有的处于发展期,要求产品迭代速度要赶上市场更新速度。对于研发流程,一般没有专职的管理人员,希望引进成熟的方案把游击队改造成正规军,用小而精的技术团队驱动大业务、大市场,进而实现企业和团队的大发展。
你有问题,我有方案。云效助力中小企业发展,适合你的解决方案才是最好的方案。任何软件研发过程都必须解决两个问题:代码怎么管、产品怎么发?不希望引入复杂的流程、不希望增加额外的人员消耗,又可以解决实际问题并获得效能提升。借助云效,只需要“十分钟,两步走”您就可以拥有成熟的持续交付能力:
第一步,用代码平台进行代码托管和评审;
第二步,用流水线进行持续集成和交付。
2 当前小型企业持续交付中遇到的挑战
如果没有引入成熟的工具和方法,研发过程一般面临这些挑战:
团队没有统一的研发管理流程,工具无约束,遵守流程规范基本靠自觉;
日常发布流程中人工干预过多,缺乏自动化部署能力;
满足团队日常开发的需求,能够顺畅地部置到生产环境,需要:
统一的代码托管和评审;
一致的构建和运行环境;
规范的自动化发布流程。
3 基于云效解决方案
3.1 云效持续交付能力
云效,企业级一站式DevOps解决方案,源于阿里巴巴先进的管理理念和工程实践,致力于成为数字企业的研发效能引擎!云效提供从“需求->开发->测试->发布->运维->运营”端到端的协同服务和研发工具,支持公共云、专有云和混合云多种部署形态,通过人工智能、自动化技术的应用助力开发者提升研发效能,持续快速交付有效值。
3.2 我们的优势
3.2.1 代码管理
阿里巴巴自研,适合企业级代码库,提供企业间数据隔离及企业-代码库-成员三级权限管控能力。
安全稳定的代码库,完善的日志审计、IP白名单等实现访问控制,让你的代码安全无忧。
多样化代码评审,完善的配置能力支持丰富的代码评审场景,自动化代码扫描提高评审效率。
自动化代码检测,提供安全扫描快速暴露代码安全问题,同时提供代码规约检查保障代码质量。
3.2.2 流水线
快速生成流水线,适用多种场景,通过模版来快速创建流水线,提供可视化编排和结果展现,所见即所得;
自动化质量保障手段,支持代码扫描、 安全扫描,人工测试卡点等多种质量红线,确保业务交付质量。
支持多语言,Java、Node.js、Python、PHP、Golang等语言脚手架生成代码框架,可以对接主流代码仓库;
软件发布支持,保障业务稳定交付,通过灰度发布、分批发布的策略,保障业务交付的稳定。
钉钉消息通知,流水线运行结果,即时准确地反馈到钉钉群。降低沟通成本,提升团队工程协同。
3.3 解决方案架构图
结合代码管理平台和持续交付流水线,为小微企业实现随时集成,每日交付提供了很好的基础保障,真正实现持续快速交付有效价值。
开发者根据任务安排,创建特性分支,通过线下编译和自测通过提交代码;
代码提交自动触发代码扫描,通过后发起合并请求,根据代码库设置发送给指定的代码评审员进行评审;
完成代码评审后合并集成分支,自动触发集成分支流水线,完成构建、部署和测试环境验证工作,验证通过合并到发布分支;
根据发布时间人工触发发布分支流水线,完成构建、预发部署验证、发布审核等流程,审批通过部署生产环境;
过程中任何问题通过钉钉,自动化地及时反馈到指定负责人,做到准确反馈、即时响应,快速恢复。
3.4 两步开启持续交付
第一步:先把代码托管起来
快速创建代码仓库
通过代码库右上角,点击【添加代码库】,可以选择新建代码库和导入代码库,代码库克隆支持HTTPS和SSH两种协议;
开启代码扫描
在提交和合并请求中,可以自动触发代码扫描任务。目前提供了两种扫描能力:敏感信息扫描及Java规约扫描。 管理员可以在【设置】-【集成与服务】中开启设置代码扫描的时机,或者开启和关闭扫描;
引入代码评审
通过【分支设置】完成代码评审场景定制,例如设置集成分支为保护分支,需要通过新建合并请求-通过合并请求-合并分支流程完成;
第二步:用流水线实现自动交付
一键创建流水线
点击流水线列表右上角的【新建流水线】按钮,开始创建流水线,选择研发语言和流水线模版;
编辑流水线场景
通过流水线编辑功能,结合企业场景快速配置以下2条流水线:
集成环境流水线
【步骤说明】
*触发方式选择:代码提交触发;
*集成分支开始构建编译;
*编译通过部署测试环境;
*测试同学测试验证;
*验证通过代码合并发布分支;
发布环境流水线
【步骤说明】
*发布分支开始构建编译;
*编译通过部署预发环境;
*预发环境验收测试;
*验证通过开始发布单审核;
*审核通过部署生产环境;
3.5 用户旅程
通过以下内容详细介绍如何快速实现从代码提交到交付的过程。【场景为:Java单应用主机部署】;
新建特性分支,开始编码
开发人员可以通过代码平台在线方式或者本地新建分支开始编码,代码完成后提交远端分支;工具开始自动执行java开发规约和敏感信息扫描,可以直观看到检查结果,便于进一步改进;
新建合并请求发起代码评审
分支规约扫描通过后开始新建合并请求发起代码评审,强制代码评审有利于提高代码质量,帮助开发人员尽早发现问题,提高问题修复的效率;
分支通过代码评审后,点击“合并”按钮,代码自动合并到集成分支,随即触发集成分支流水线,开始构建和测试环境部署。
启动集成测试和验证
集成分支构建部署到测试环境后,测试同学开始进行测试验证,根据测试结果选择“验证通过”或者“验证不通过”,测试通过后代码合入发布分支;
启动生产环境发布和审核
发布分支构建部署预发环境并且测试验证通过后,提交生产环境发布单审批,指定的同学“通过”后开始生产环境部署;
查看流水线运行结果
所见即所得,流水线运行过程直观展示,企业可完整看到当前流水线运行所处阶段和场景;
集成环境流水线
发布环境流水线
获得反馈信息
流水线中配置钉钉群通知插件,可以将流水线运行过程中的信息反馈相应同学,便于快速定位和排查问题,钉钉群流水线运行结果:
4 更多场景
随着研发团队规模不断壮大,产品线逐渐丰富,加强测试和质量保障是绕不开的步骤,基于流水线自动化测试和红线卡点可以有效保障产品交付质量,根据需求选择合适的流水线任务加入到现有流程中,企业可以灵活定义适合自身场景的玩法。
5 结语
本文通过“两步走”介绍了如何在10分钟内建立企业专属的流水线场景,快速规范代码托管和应用发布,获得研发效能成倍提升。
附录 流水线配置介绍
基于Java单应用主机部署
流水线模版:完成持续交付自动化流程,将构建,部署,测试,管控等组件化能力进行串通;
增加【阶段】:在流水线中需要按顺序执行的一组任务的集合,一个阶段可以是手动运行也可以是自动运行。
添加【任务】:在阶段中具体需要完成的动作,任务之间可以串行执行也可以并行执行,目前任务包含:代码扫描,单元测试,构建, 部署,合并代码,人工审核等功能。
构建:云效通过多种构建步骤,支持不同语言的构建能力;
制品:添加了"构建物上传"的步骤,在流水线中后续阶段部署中可以使用“构建物上传”中配置的制品;
部署:这里的部署组可以理解为不同的环境,目前支持阿里云ECS和可以出公网的非阿里云主机,支持主机分批部署策略;
回滚:流水执行记录-部署历史中,可以查看该流水线所有执行的部署历史记录,并可选择其中任意一条历史记录进行回滚操作。
接收消息反馈
流水线中配置钉钉群通知插件,为钉钉群自动发送流水线运行信息,复制钉钉机器人的 webhook 地址,编辑流水线的任务,在任务插件中选择钉钉群通知,并填写 webhook 地址和运行时机;
了解更多云效,加入钉钉群: 34532418