CMDB发布平台:go发布管理

CMDB发布平台是ezbuy的一个发布管理平台,包含了go的发布,windows serices发布,iis发布,memcache管理,svn管理,资产信息管理操作。

随着公司的业务发展,公司go的服务有100多个单实例,如果多机部署计算,是成倍数增长的,而且每天更新发布的频率高,所以如果人为的去发布,会出现以下问题:

  1. 开发人员每次update服务,都需要找运维人员发布
  2. 每次发布,没有版本信息记载,只有相应的版本号,即没有历史数据
  3. 重复工作量大,无技术可言,且容易人为发布错误
  4. 没有消息通知
  5. 开发人员各自在自己电脑上编译,然后提交到svn(环境不统一)

go现在的发布是每次jenkis自动编译通过后,自动上传到svn上,避免编译成mac os版本的go上传到svn,然后通过CMDB平台发布,发布涉及手动和自动发布两个操作:

  1. 手动:开发人员手动通过CMDB平台发布
  2. 自动:编译好后,jenkis直接调用CMDB API自动发布到线上(持续CD)

综上问题,CMDB开发了go发布管理模块,模块里包含以下功能:

  1. 部署
  2. 发布
  3. 更新go配置文件
  4. 重启go服务
  5. 版本回滚
  6. go服务状态
  7. go crontab发布更新
  8. go cron job定时任务列表

[部署]:

线上运维人员可以通过运维平台直接部署一个新的go服务


go部署

[发布]:

开发人员有权限直接发布服务到线上,无需运维人员干预,且每次发布要填入相应的tower发布url,否则不给予发布


go发布

不管服务成功与否,CMDB会调用钉钉api,将发布结果发送到钉钉消息群,同时CMDB也会保存一份日志到数据库。


go发布消息

[更新go配置文件]:

go配置文件我们会单独的将所有go实例的配置文件保存在一个svn库,这样的好处是,有版本控制,避免开发人员人为改动,且敏感信息只有相应权限的人才能查看,所以每次配置文件改表,直接相应有权限的人提交到svn,通过更新go配置文件下发的所有主机:


go下发配置文件

[版本回滚]:

线上运维同学可以通过CMDB平台回滚到相应的版本

[服务状态]:

开发人员可以实时查看go服务运行的状态

[go crontab更新]:

开发人员可以直接发布go的服务

[cron job列表]:

可以在CMDB平台查看所有的cron job和cron job上次执行的时间

最后,我们将会把go的配置文件统一线上线下环境一样,且不暴露敏感信息,敬请关注下一篇《如何利用consul-template保持线上线下配置文件一致》

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,026评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,761评论 25 709
  • 这段时间在团队里一直在负责对单元测试的探索和落地,感觉有必要总结下自己这段时间的探索成果和大家分享。加之已经忙的很...
    子循_陈奕龙阅读 1,012评论 0 3
  • 转眼间一周就过去了,这周主要就是准备项目的报名的工作,只是没想到从周二开始准备一直到今天才算彻底忙完。 ...
    gmmmmgm阅读 144评论 0 0
  • 学习 C# 的过程中时间方法的使用值得一记,尤其是已经熟悉 Java。 先看看文档摘要: DateTime.Tic...
    By_syk阅读 14,120评论 1 1