公司自动部署系统建设

       刚来到公司的时候,由于没有自动部署系统,导致每次提交完代码后都得手动scp到相应的服务器上,费时费力,还容易出错。于是,我便着手打造一套公司专用的内部部署系统。
       最开始的构想是使用drone配合gogs来完成一套部署系统,方便且功能强大。但实践的时候却由于drone文档不全,服务器空间不足(无法安装docker),git服务器配置差等因素被迫中止。
       最后在结合实际情况考虑之后,打算自建部署服务器,通过git hooks与node server构建一套部署系统。
       结构图如下
     
       首先是搭建node server,我采用express+ts-express-decorators的一个组合,ts-express-decorators使用大量装饰器取代了wrapper,使代码趋于整洁美观并提高了维护性与复用率。后端框架完成之后,便要考虑如何执行shell,这里我使用了shelljs(主要是对于child-process的一层封装),借助其强大的api,可以方便的执行各种shell命令。
       为了方便进程管理,我使用了pm2作为进程管理工具,并采用pm2-web进行相关进程的监控(不用进服务器查询进程信息了)。
       对于要使用自动部署的项目,只需在项目更目录下加上deploy.json(记录了要部署的服务器等信息)与deploy.sh(自动部署时要执行的脚本,如项目构建等)即可完成相应自动部署任务。
       遇到的问题:
       1.scp与git的权限问题:通过ssh-keygen生成rsa证书可以解决
       2.git脚本执行情况反馈:在执行git hooks的时候,发布代码的控制台会打印相关信息



评论

此博客中的热门博文

tfjs源码笔记

前端首屏渲染优化