据我所知,大公司的代码上线流程一般都会很规范,有专门的代码发布系统。但小公司的话,可能会没有实力去开发这种发布系统,所以想了解下这个问题。
如果是我的话,我的做法应该是: 首次部署使用 git clone,后续代码的变更则使用 git pull
这种做法好不好?或者有没有更好的做法呢?

据我所知,大公司的代码上线流程一般都会很规范,有专门的代码发布系统。但小公司的话,可能会没有实力去开发这种发布系统,所以想了解下这个问题。
如果是我的话,我的做法应该是: 首次部署使用 git clone,后续代码的变更则使用 git pull
这种做法好不好?或者有没有更好的做法呢?
1 en20 Jun 25, 2021 现在的公司是专人切 tag,上 rc,验收通过由测试提服务器发布申请. 以前的小公司是自己打包好然后 ftp 丢上去 |
2 whileFalse Jun 25, 2021 via iPhone git pull 容易自动合并或者卡在冲突(如果有闲人手动改了东西)。不如 git fetch ; git resethard ; git clear 不过话说回来,现在不应该都 docker 了么。 |
3 xwayway Jun 25, 2021 再小的公司,部署一个 Jenkins 很困难? |
4 sugarkeek Jun 25, 2021 jetbrains idea 直接 deploy /doge |
5 wangkun025 Jun 25, 2021 我是全干。 使用 capistrano 自动化部署。 |
6 KagurazakaNyaa Jun 25, 2021 推 docker 镜像上去,然后 kubectl apply -f |
7 Obrigado0815 Jun 25, 2021 之前小公司:前后端各自手动部署,nginx 现在颇有规模的公司:jenkins |
8 yitingbai Jun 25, 2021 打包 jar, 然后用宝塔传上去, 再启动 tmux 执行命令 java -jar xxxx |
9 Quarter Jun 25, 2021 via iPhone 愚蠢的我还不太会用 jenkins,用的 minio 上传部署文件,然后定时任务执行脚本,如果扫描到文件就脚本部署,比较 low |
10 pkoukk Jun 25, 2021 gitlab ci |
11 young Jun 25, 2021 sftp |
12 sparrww Jun 25, 2021 反正核心就一两个开发人员,怎么方便怎么来呗 |
13 code4you Jun 25, 2021 打开 SFTP 软件 然后把代码拖入到文件夹 我猜的 |
14 zardly666 Jun 25, 2021 本地提交带 dockerFile------gitlab------阿里云容器镜像----阿里云 k8s |
15 taowen Jun 25, 2021 生产环境可不只是后端的生产环境,小程序呢,iOS 呢,各种外部集成和配置呢。 |
16 wjfz Jun 25, 2021 |
17 leafre Jun 25, 2021 via Android Jenkins & docker compose |
18 Kimen Jun 25, 2021 我自己接的私活都是 jenkins+docker |
19 polyang Jun 25, 2021 git pull ?你也不怕有冲突啥的?一般都是打 tag 吧 |
20 rockyliang OP |
21 rockyliang OP @wjfz 感谢分享,这个看起来比其他人说的 jenkins 更容易使用一些 |
22 willis Jun 25, 2021 ansible |
23 rockyliang OP @polyang 因为线上服务器的代码一般都是禁止直接修改的吧,所以冲突发生的概率应该会很低 |
24 remember5 Jun 25, 2021 gitlab ci +1 |
25 yunye Jun 25, 2021 buddy.works |
26 killva4624 Jun 25, 2021 小公司搞 docker 更省事~不用云上 k8s 的话,docker-compose run 都行 |
27 xuxuxu123 Jun 25, 2021 阿里云云效 2020,30 人一下的团队可以申请免费; 包括云代码管理,项目管理,流水线部署等~~~ |
29 kera0a Jun 25, 2021 via iPhone 小公司也可以部署一个 gitlab 吧,后端前端客户端都能自动化部署。 有挺多的开源第三方工具可以帮小公司处理好。 |
30 victor Jun 25, 2021 Github Action = CI,阿里云 Flow = CD,公司技术就 1 个全职,2 个兼职的时候就这么做 |
31 nuanshen Jun 25, 2021 Jenkins 就挺好用的 |
32 labulaka521 Jun 25, 2021 k8s + gitlab+gitlan-ci |
33 labulaka521 Jun 25, 2021 @labulaka521 gitlan-ci ->> gitlab-ci |
34 myd Jun 25, 2021 git pull 一下 |
35 mahone3297 Jun 25, 2021 都那么高级的吗? 不是 sftp 上传? |
36 DUDUHA Jun 25, 2021 ①直接上手,sftp ②打包成 docker,docker run ③devops 流程走起来,gitlab+jenkins+harbor+k8s ④现成开源代码发布工具,walle ; spug 等等 |
37 LimeQAQ Jun 25, 2021 via iPhone 备份原 class 文件,关掉 tomcat,上传本地编译后的 class 文件,启动 tomcat 。 |
38 LimeQAQ Jun 25, 2021 via iPhone @mahone3297 远程桌面 ctrl c v |
39 cbasil Jun 25, 2021 php 直接 ftp... |
40 keepeye Jun 25, 2021 真是高大上,感觉大炮打蚊子。我们项目都是 go 的,编译好了直接 rsync 丢到服务器,再重启下服务就可以了,十几台服务器就是这么管理的,轻松无压力。另外好几百台 python 的服务器是通过 pscp + pssh,一个脚本搞定。 |
41 way2create Jun 25, 2021 我能决定就按我喜欢。。。决定不了领导说啥是啥 |
42 hkllzh Jun 25, 2021 后端 Spring Boot 体系。本地打包,上传 jar 。不管线上用户,直接重启 java 进程。就是暴力操作。 |
43 CantSee &bsp; Jun 25, 2021 人肉上线 |
44 karott7 Jun 25, 2021 自己学 jenkins 在测试服务器搭了个,我管理五个项目,之前每次都是手动发布测试服,累死了,还容易搞混。 docker 还不熟,想之后有空 docker+jenkins 搞个多分支发布流程 |
45 wengych Jun 25, 2021 小公司管那么多干嘛,scp 不就得了,用 xftp |
46 litchinn Jun 25, 2021 CI 工具,比如 Jenkins 这种,真的好用,而且看起来难,自己操作一遍真的不难 |
47 srx1982 Jun 25, 2021 小公司,k8s + gitlab-ci |
48 dabaibai Jun 25, 2021 jenkins 足矣 |
49 f9EHtxE2UtX3fG3 Jun 25, 2021 via Android winscp 手动拉文件? |
50 GM Jun 25, 2021 不是很明白楼上说的冲突什么的,服务器那边只更新、不提交,git pull 怎么会有冲突? |
51 lyusantu Jun 25, 2021 IDEA 有一个 Alibaba Cloud Toolkit 插件,一键打包部署至服务器然后执行脚本 |
52 atpking Jun 25, 2021 capistrano 一把梭 |
53 keifafa Jun 25, 2021 前东家的项目,因为大家手里都没有完整的代码,而且隔离网络环境只能使用光盘拷贝,所以只能到服务器上替换 class 文件,有时候线上的代码和手里的完全不一样还需要反编译然后用手敲到自己电脑上 |
54 xiaojun1994 Jun 25, 2021 ftp |
55 ysicing Jun 25, 2021 gitlab + (gitlab-ci/drone) + k8s drone-kube 弹按需 pod 构建 |
56 sadfQED2 Jun 25, 2021 via Android Go 项目,本地编译,scp 到服务器,然后重启项目。我现在正在写事故报告,因为我 scp 错文件了。 |
57 rockyliang OP @keepeye 看来是大公司,几百台服务器这么豪气,哈哈哈哈 |
58 simple2025 Jun 25, 2021 ansible 一把锁 |
59 simple2025 Jun 25, 2021 @hkllzh 我 py 也这样,虽然是用 ansible 重启 |
60 kop1989 Jun 25, 2021 via iPhone 复制 粘贴 |
61 johnsona Jun 25, 2021 叫小作坊 |
63 sagaxu Jun 25, 2021 via Android 我大 PHP 直接登陆到生产环境,线上改代码然后 F5 刷新页面看效果,改好了把代码拷一份下来 |
64 xyooyx Jun 25, 2021 我用双手成就你的梦想 |
65 atx Jun 25, 2021 rz -be rm -rf / opt/www/app ^C ^C ^Z |
66 LowBi Jun 25, 2021 via Android 直接远程服务器桌面放 jar 包 |
67 cyrivlclth Jun 25, 2021 建议用 docker,用 docker-compose run 就行了,万一要回滚还有救。 |
68 zhtttyecho Jun 25, 2021 ftp... |
70 joApioVVx4M4X6Rf Jun 25, 2021 可以选择用 ansible 之类的开源软件 |
71 fengpan567 Jun 25, 2021 jenkins |
72 cs419 Jun 25, 2021 自动化限制了大家的想象 1. 系统用 windows 2. eclipse / idea 直接启动 3. mvn tomcat 4. java -jar springboot.jar |
73 yhxx Jun 25, 2021 我见过这种操作: Vue 的前端项目 ftp 拖到服务器上,npm install,npm run dev 然后线上访问地址是 10.xx.xx.xx:8080 |
74 kongkongyzt /div> Jun 25, 2021 后端 PHP 和 Go, 部署是用的 CI(Coding) + tkex(k8s) + docker, 非常非常方便 |
75 sleshep632 Jun 25, 2021 jenkins + ansible |
76 Lemeng Jun 25, 2021 方法太多,也简单,怎么方便怎么来 |
77 dajj Jun 25, 2021 就算什么都没有, 用 git 的钩子写个脚本都能自动部署 |
78 hteen Jun 25, 2021 小公司 spug 可以 |
79 wingoo Jun 25, 2021 小公司更要全部上云+自动部署 |
80 rekulas Jun 25, 2021 @GM 应该是指有人直接线上改过东西,确实有这种情况我也遇到过。。。另外就算不冲突 pull 更新貌似也不是安全的,有可能出现部分代码更新来请求导致 bug,大公司就我所知一般是开新目录然后 nginx 无缝切换过去 不过我们也还是选择的直接 pull 更新,因为还是小公司。。。 |
81 everyx Jun 25, 2021 via Android docker swarm + 手动更新镜像 |
82 hsowan Jun 25, 2021 Jenkins: Build great things at any scale |
83 Felldeadbird Jun 25, 2021 我一直 SFTP 传上去的。将要上传的文件 通过 GIT 导出差异。 |
84 Soar360 Jun 25, 2021 如果是 .NET 项目的话,可以参看: 使用批处理(.bat)文件一键编译 .NET CORE 网站并发布至 IIS https://www.coderbusy.com/archives/1595.html |
85 rockyliang OP @sagaxu 牛逼,如果出 bug 了怎么办,直接线上修 bug 吗 |
86 pigspy Jun 25, 2021 gitlab ci 挺好用的 |
87 awing Jun 25, 2021 有 CI/CD 吗?没有,那就这样: ```bash tar -cJf - ./xxx | ssh user@hostname 'tar -xJf -' ``` |
88 jingkaimori Jun 25, 2021 @GM 生产环境的合并也不总是 fast foward,git pull 在相似代码格式变动后的自动合并能治好低血压 |
89 coolcoffee Jun 26, 2021 直接专门有个分支来 git pull 也是没问题的,已经算是有点流程了, 只要别让其他人有权限直接去改文件内容。 但更好的办法就用 git tag,每次发版本的是都打出一个 tag,然后远程去 check git tag 或者用 CICD 流去更改生产服务器的内容。 打 tag 的好处就是方便有个版本回滚,万一这次发的版本有问题,迅速找到上次发版正常的 tag 再发一次能回滚完成。 |
90 dayeye2006199 Jun 26, 2021 github actions + skaffold 部署到 k8s 感觉这个和公司大小没关系,本身也没特别复杂,就看你们的工程实践是不是重视。 大部分没法自动化部署我觉得都不是工具系统不足的问题,主要是 1. 心态 - 不信任自动化部署、连续部署 2. 不写测试 - 没有 CI,上线心慌慌 3. 政治 - 运维表示我不是没活干了 |
91 sagaxu Jun 26, 2021 @rockyliang 出 bug 再登上去现场改啊,调试的时候来点 exit(json_encode(xxx))也是日常操作了 |
92 shayuvpn0001 Jun 26, 2021 @rockyliang 现在都 DevOps 了,一边开飞机一边修飞机是基操了吧。 |
94 timothyye Jun 26, 2021 GitLab -> GitLab CI runner -> Docker Image -> Harbor -> K8S |
95 FarAhead Jun 26, 2021 cap deploy |
96 zhjy23212 Jun 26, 2021 docker 打包,还在用 docker swarm,写了个 makefile,make stop make restart |
97 MarkLeeyun Jun 26, 2021 xftp |
98 akira Jun 26, 2021 需要编译的 本地编译好,sftp 上传到服务器 不需要编译的 服务器端直接修改 |
99 vibbow Jun 26, 2021 小公司当然是直接 sftp 拖文件 |
100 xuanbg Jun 26, 2021 自然是 jenkins 点一下构建就行了 |