三个项目,三个服务器,该如何部署?

2018-05-28 16:04:04 +08:00
 LeungJZ

没有运维。

前提

其实都隶属于同一个项目:

有三台服务器:

每台服务器对应不同的域名,所以项目中请求的 URL 也会作出相应的更改。

项目架构:vue + webpack

目前解决办法

每个项目下都有三个文件:

config/prod.env.js 中,通过 process.env.NODE_ENV 来判断当前的环境来选择 API 接口地址:

const AUTH_API = 
  process.env.NODE_ENV === 'production:test' ? '"http://xxxtest.example.com/"' 
  : process.env.NODE_ENV === 'production:show' ? '"http://xxxshow.example.com/"' 
  : '"http://xxx.example.com/"'

每次部署都要跑一遍 3 个脚本,然后通过 scp 传到对应服务器的对应文件夹。但是 3 个项目都得跑一遍。

想法

使用 jenkins 进行部署,但是用了发现好像只是将执行脚本的环境将本地搬到了线上罢了。

而且,这样的话,还需要将 jenkins 所在的 docker 的 sshkey 添加到各个服务器上,才能成功 scp。

不知道还有没有其他好的办法。

并且,对于 chalk 的输出貌似不能正常显示。

说明

暂时不需要测试。

1351 次点击
所在节点    程序员
4 条回复
LeungJZ
2018-05-28 22:12:21 +08:00
大佬们都去哪里了?
cleveryun
2018-06-03 09:01:52 +08:00
为啥不直接在代码里通过域名来判断在封装请求的方法里动态改接口域名部分呢?这样就只用编译一次了,发布要发三次这个肯定的。
这样就可以编译一次,然后并联往三台服务器 scp 发文件了,时间上比串联的编译三次发三次快多了。
有个 npm-run-all 的包处理串并联任务比较方便。
串并联可能用词不对,反正知道啥意思就行
cleveryun
2018-06-03 09:04:24 +08:00
我是服务端 node 程序里判断环境才像你说的那样弄的,不同环境分别编译一次
LeungJZ
2018-06-03 11:10:43 +08:00
@cleveryun
因为不仅仅只有一个 API 域名啊,大概有,3 个左右,而且都是写在 process.env 里头,那么,一改全部都得改了。(虽然已经拷贝一份在 window 下)

也谢谢你的建议,可以尝试一下。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/458390

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX