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