贵司发布一次代码需要多长时间?

2017-06-14 11:13:30 +08:00
 Lucups
搞个小调查。

标准格式: 公司规模,项目类型,技术栈,发布工具,发布时长,你认为是否可以提升?
10055 次点击
所在节点    程序员
98 条回复
Clarencep
2017-06-15 09:07:20 +08:00
@lightening 你们用的什么框架居然要 5 分钟之久?我们最长的也就 2 分钟左右。


@jyf
@vjnjc migration 👍+1 自从用了 migrations 脚本,再也不怕 N 多环境之间数据库的结构同步问题了。。。特别是对于有 N 多从库的情况。
liuzhedash
2017-06-15 09:27:49 +08:00
@Clarencep #40 刚开始转 git 的时候,这是 git@oschina 推荐的的做法,刚刚又看了一下已经不推荐这么做了,想来是终于有人意识到了问题
oska874
2017-06-15 09:44:21 +08:00
3 年
clino
2017-06-15 09:47:13 +08:00
@Clarencep
@liuzhedash git 用在生产环境有什么问题?
这个贴有 4 个人这么说了,谁能列一下相关的坏处呢?
liuzhedash
2017-06-15 09:59:15 +08:00
@clino #44
1、生产环境不应该有代码库的信息,比如你每次的 commit 都会在.git 下面,这些存储空间的占用是没有意义的
2、生产环境可能不能连接到代码库
haozxuan001
2017-06-15 10:05:26 +08:00
@liuzhedash 如果仅仅是以上两点,我认为并没有充分的理由拒绝在正式环境用 git pull 部署,首先第一点,commit 的存储绝对不会过大,而目前廉价的硬盘,足以让你忽略这点占用,第二点,就更不需要担心了,可以通过运维手段解决。
jyf
2017-06-15 10:07:19 +08:00
@vjnjc 你们碰到过原来某字段是 int 现在变成 varchar 这种情况么 按这种 你的 migration 怎么写呢
kosilence
2017-06-15 10:19:55 +08:00
@liuzhedash 生产环境 build docker 镜像,git pull 完了以后删除 .git 资料库文件,然后再上传镜像,这样应该是 OK 的吧
vjnjc
2017-06-15 10:21:12 +08:00
@jyf 只会加字段,不会改类型
clino
2017-06-15 10:30:40 +08:00
@liuzhedash
- "生产环境不应该有代码库的信息",我觉得如果是 python 这类直接用源代码运行的应该有,因为万一有时候有问题直接现场就能看出代码是在哪个版本上,生产环境的代码有没有被碰过
- "些存储空间的占用是没有意义的" 同上,我认为是有意义的,当然前提是用源代码运行的这种,不是那种编译出二进制运行的
- "生产环境可能不能连接到代码库" 如果能连那么这点是不是就不是理由了?
liuzhedash
2017-06-15 10:32:58 +08:00
@haozxuan001 #46
是的,其实这些不是决定性的理由,但是确实是存在的问题

@kosilence #48
既然都用 docker 部署了,其实和 git 已经没什么关系了
tomoya92
2017-06-15 10:42:07 +08:00
git pull

pm2 restart all
DingSoung
2017-06-15 10:43:59 +08:00
原来你们的代码不用编译直接就拿去跑了
clino
2017-06-15 10:49:25 +08:00
@liuzhedash 即使用 docker 也一样可以用 git,我们有这样的用法,需要版本控制的部分是映射目录到 docker 里面的

@dingsoung 动态脚本语言哪个不是这样?
Clarencep
2017-06-15 11:02:03 +08:00
@clino git pull 的方式部署我以前也用过,发现会有一些问题,后来才切换到 jenkins + rsync 的方式:

1. 生产环境上并不一定是所有文件都是在 git 中,git pull 并不能把所有文件拉上去(比如 node_modules 文件夹、vendor 文件夹,而在生成环境执行 npm install/composer install 又比较好资源影响正常业务运行,还不太稳定)
2. 有的时候会临时在生产环境上改个东西,要是忘记恢复了的话,git pull 会失败 (/ □ \)
3. git 是搭在内网,而生产服务器是在云上,网络不好打通(而且把 git 服务器暴露在公网上有安全风险)
clino
2017-06-15 11:12:48 +08:00
@Clarencep
1 这个就要具体看业务是怎样的,所以 git 是不是适合不能一概而论
2 我怎么觉得这是一个好处呢?
3 有一个 workaround 方法是先 push 到生产环境下的一个 bare git,然后生产环境的 git 是从这个 bare clone 出来的,这样 push 完这个 bare 以后再 pull 就行了
yw9381
2017-06-15 11:13:49 +08:00
@holyghost 如果是使用这种方式的话,你访问一下网站目录.git/config,就能看到 git 的欣欣,基于此之上,可以吧 git 相关的元数据全部拉回来,然后 reset 一下得到最新版本的代码。参加之前一个朋友做的小工具 GitHack
yw9381
2017-06-15 11:14:53 +08:00
yw9381
2017-06-15 11:20:16 +08:00
@holyghost @clino @Clarencep
这暴露出来的是安全问题,在部署上这没有任何问题,在 webserver 上是可以访问到.git 文件夹的,里面的东西也能访问到,如果了解 git 的工作原理的话,有了.git 这整个文件夹也就意味着有了整个代码库,对于线上版本来说代码库里泄露的东西太多了,诸如数据库连接信息(阿里云 RDS 是可以直接远程连接的,除非你设置了白名单 IP,然而大部分人都不管),代码逻辑等等,如果有心人基于此做代码审计发现漏洞然后加以利用,嗯你懂得。我在安全行业生涯中有过这样的案例,入口点就是一个 git 信息泄露,最终渗透到了服务器层。个人感觉安全意识还是蛮重要的一件事
ezreal
2017-06-15 11:26:44 +08:00
git co > cp to temp dir > npm i > webpack > gz pack > download > kill nginx > kill node > rm original code > unpack new code > start node > start nginx 大概 3-5 分钟吧

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

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

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

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

© 2021 V2EX