美文网首页
CircleCI自动部署egg.js项目

CircleCI自动部署egg.js项目

作者: treeQQ | 来源:发表于2019-07-30 14:41 被阅读0次

CircleCI自动部署egg.js项目

怎么接触到CircleCI

在看Vue源码时,发现工程里有.circleci目录,然后研究了下.发现CircleCI是个持续集成的工具.引用Vue作者尤雨溪的话:"CircleCI 真是个神器,可以 github push 触发,可以 cron 定时触发,可以用 Zapier/IFTTT 发 webhook 到 API 触发,具体代码用 docker 想跑什么都可以,还免费... 用来做各种任务自动化太爽了,比 lambda 还爽"

那我们的服务端项目,就可以用CircleCI不断集成新的代码,发布新的功能. 我们的前端项目,也可以用CircleCI不断集成新的代码,添加新的功能.

用已有的一个项目实践下

刚好我的github账户下有个基于egg.js写的的服务端项目, 可以用来实践下.

之前我的发布代码的步骤是:

  1. 用github客户端push最新的代码到master分支
  2. 在终端中,通过ssh连接到远端服务器
  3. 通过npm stop 停掉egg项目
  4. 进入到项目所在目录,通过git pull命令拉取最新代码
  5. 更新数据库结构, npx sequelize db:migrate --env=production
  6. 通过npm start 开启egg项目

如何通过CircleCI,让这些在github push 新代码到master分支时,自动执行?

两个job

build

  1. 打开https://circleci.com 用github账号登录
  2. 在控制台左侧找到add projects, 选择要管理的项目,点击Set Up Project
  3. 在项目根目录下创建.circleci目录,在此目录下创建config.yml文件, 将步骤2中的配置文件代码拷贝到config.yml中
  4. 根据自己项目的项目,添加docker镜像, 我需要添加一个mariadb和redis镜像, 可见我的项目中.circleci/config.yml 链接
  5. build, 并解决发现的错误
  6. 直到build成功

deploy

  1. 如果是github私有仓库的话,需要配置 SSH 公钥, 可以走SSH渠道免密拉取代码
  2. 在项目配置中添加服务器的ssh key, 这个key要在自己电脑上生成好
  3. 在添加了build任务的config.yml中,添加deploy任务
  4. circleci项目配置中设置SSH_USER和SSH_HOST
  5. deploy中添加run 写入ssh连接服务器代码,和连接成功后执行的命令

config中添加workflow,组合build和deploy链接

这样每次有新的代码push到master分支就会自动测试,自动部署

别人的配置参考链接

注意

build完后, 发现yarn test这一步报错了. 细看里边的错误, 大部分都是一些语法规范错误. 果然能发现自己代码的一些问题,改正后build成功

deploy遇到的问题

通过ssh user@host "commond" 通过这种方式执行的命令,bash会找 ~/.bashrc文件,把里边的环境变量加载出来。和直接在终端里ssh登陆,然后在输入命令加载环境变量方式不同

相关文章

网友评论

      本文标题:CircleCI自动部署egg.js项目

      本文链接:https://www.haomeiwen.com/subject/uckvrctx.html