-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
馨房 DEV LOG 之部署 #23
Labels
Comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
一. 项目背景
目前馨房这个项目完成了一部分功能,代码放在了
GitHub
的私有仓,是一个monorepo
,用了lerna
管理。现由于一直是在dev
环境下开发,没有考虑到生产环境,怕拖到后面很麻烦,于是决定把部署这块搞好再继续开发剩下的内容。需要部署的内容如下:NestJS
(NodeJS)
React
+UmiJS
MySQL
项目并没有写单测,部署为
Nginx
+PM2
,本次部署大前提:除了自身服务器,不另外花钱😁二. 方案选择
Circle CI
,Travis CI
和Jenkins
等push
到GitHub
,服务器写个监听脚本,利用Webhook
触发更新dist
(打包) 后的内容,将打包后的内容扔到远程服务器中触发脚本更新我的考虑:
yarn build
这一过程放在服务器上运行,因为要装一堆node_modules
webhook
于是,我开始了第一个构想
Circle CI
,因为看到Vue
也是用它,而且支持私有仓免费。不用Travis
的原因是我记得私有仓是要收费的,而Jenkins
占的内存实在太大了,3、400 M,开着感觉有些浪费了。三. 接入 Circle CI
需要
Circle CI
做的事情:package
,前端?后端 ?还是两个都需要?开始解决:
第一个问题很容易解决,按
Circle CI
的接入方法,就可以实现了第二个问题比较复杂,怎么知道本次修改的是那个端的内容呢?于是陷入了沉思,就各种查
Circle CI + lerna
,Circle CI + monorepo
。 后来在GitHub
上的一个Go
项目 上找到了答案:可以在Circle CI
上获取到上次构建成功的commit ID
和本次提交的commit ID
,然后git diff
获取到修改的内容,决定本次构建,顿时恍然大悟(其实是自己运用不够深刻,知道git diff
却不知道可以拿两次提交的comit ID
做比较,同时也跟着学了一番Shell
命令 😂)第三个问题,一开始也不清楚怎么弄,于是又开始查。然后发现了这个
然后按上面的操作步骤,添加完成
SSH Key
后,配置config.yml
接着可以在
CI
上看到意思是无法确认host主机的真实性,只知道它的公钥指纹,问你还想继续连接吗?我们需要输入 yes 才可以进行下一步。但是我们在
CI
上是不可以输入的,那怎么办呢?这时后就要考虑公钥登录的方式了。具体就不展开了,我最终没有选择这种方式。因为我尝试了 N 次构建后,CI 提示我用量达到了 59%,我才知道这不是永久免费的 😏
四. 目前方案
run build
后执行一段Node
脚本Node-SSH
登录远程服务器,并更新相对应的打包的内容五. 其他补充
推荐学习 SSH 相关基础知识
数据库这方面在阿里云的
centOS
上安装MySQL8.0
也是坑,推荐安装文章同时需要注意给用户授予远程访问的权限
同时记得在阿里云开放对应的数据库端口
学到的
shell
命令:The text was updated successfully, but these errors were encountered: