上半年在做微信文档的时候,有一些自动化的需求,比如像一键发布,git push 发布,自动发布等。后面推动内部运维,做了 devops 的尝试。以前手工发布会经常遇到 环境问题、权限问题、测试问题,基本上此次都要解说好久,而且大部分都是重复描述,我只能说:我太难了。
整体感觉上来说,在接入 devops 之后,彻底解决了我在 开发 和 客服 之间身份徘徊的问题,让我能够更加专注到开发中去。
借由此机会,顺便了解下业界关于自动化系统的方案。
在日常开发中,遇见两种比较具有代表性的系统,一个是腾讯内部的蓝盾流水线(pipeline),一个是 github Action(yml) 。
(本人作为一个非专业且业余的开发者来说,还是挺中意 腾讯蓝盾 这种傻瓜式流水线的模式。
在自动化系统中,有几个必备概念需要了解,便于你在后续开发中的应用,CI(Continuous Integration, 持续集成)、CD(Continuous Delivery, 持续交付)、CD(Continuous Deployment, 持续部署),还有一个 DevOps(自动化运维) 。
参考下图,可能更明确些:
最后还有个 DevOps,这个概念就很玄学,可以说 DevOps 是一种自动化理念,通过 CI/CD 的方式来保持测试环境和生产环境的一致性, 解决运维和开发之间的沟通问题。这个概念可以参考下图:
前段时间在做微信文档自动化时,devops 其实就已经带给我了很大的震撼(原来微信以前的运维系统这么难用。之后,组内有部分是小程序业务,了解了一下,基本现状是一切围绕开发者工具,搞个 Macos 系统 + 微信开发者工具,通过 http 的方式来调用工具提供的脚本命令。这个也是业界大部分自动化系统的做法。
整体来说,只要你搞的自动化系统上有开发者工具,其他的自动化操作都可以完成。不过,细细挖掘会发现,这样做的成本还是有点高,比如,你原先在一个组里面做了一个自动化系统,但是,你很难将这个自动化系统再推广到其他组去(分享能力差,不易复用。
因为和工具那边隔的很近,有消息工具已经把 代码上传的能力放出来,这样做解决了自动化系统大部分的工作量,点个赞。