This topic created in 2973 days ago, the information mentioned may be changed or developed.
我们公司的工作模式是这样的。
部署了 gitlab, 然后前端创建 git 仓库开发。
前端在 git 里开发。生成 dist 目录,然后提交代码。进行管理。
若要发到其它环境(如 test,uat)。
那么需要到 Jenkins 上“点一下”(其实就是通过 Jenkins 在不同的服务器上拉取那个 git 仓库的代码)
但是有服务器上拉取 git 会产生冲突。。。然而前端本地的仓库里却没冲突。
这个时候我们解决方案是 直接去对应环境的服务器上 删库 重新拉仓库,然后部署。
请问大家是怎么解决的呢?
17 replies • 2018-04-17 16:28:14 +08:00
 |
|
1
jasonhzy Apr 17, 2018
现在是在服务器上直接 git pull 代码,也可以本地代码直接上传到指定的服务器
|
 |
|
2
jasonhzy Apr 17, 2018
或者针对冲突查看下原因,再此基础上处理
|
 |
|
3
loshine1992 Apr 17, 2018
肯定是服务器上的文件被改过了,hotfix 也要提交合并才行。
|
 |
|
4
networm Apr 17, 2018 via iPhone
Jenkins 上执行 git clean -df git fetch git reset --hard origin/master
这样可以保证 Jenskins 上的仓库与服务器上完全一致
|
 |
|
5
awing Apr 17, 2018
dist 目录里生成的东西,不应该提交上去吧。。。。。。。另外 gitlab 不能用 webhook 吗?
|
 |
|
6
shalk Apr 17, 2018 via iPhone
Jenkins 上“点一下”会产生冲突 没有描述清楚。改改 jenkins 的 job 吧.
|
 |
|
7
rockyou12 Apr 17, 2018 via Android
Jenkins 的 scm 有好几种策略的,可以拉取前先还原的,lz 可以看下
|
 |
|
8
vast0906 Apr 17, 2018
给个建议,gitlab 中存放源代码,jenkins 做编译,然后 ansible 将编译好的包传到对应机器,通过 jenkins 的构建参数化和 ansible 的 tag。这样的好处在于 jenkins 只需要一台,编译打包不需要在本地执行。
|
 |
|
9
lcorange Apr 17, 2018
我是在 jenkins 里面编译,然后把生成好的 dist 目录打包,然后 scp 传到部署的机子,解压部署。 dist 目录是不加入 git 的
|
 |
|
10
ox180 Apr 17, 2018
关于出现冲突,应该前端解决吧,解决冲突完,提交代码仓库,然后通过钩子推给 jenkins,jenkins 再去做其他事情就行了。不需要手动点下 jenkins....
|
 |
|
11
pmispig Apr 17, 2018
pull 之前先执行 git reset --hard git clean -fdx
|
 |
|
12
yufz Apr 17, 2018
git clean -fd git checkout -f xxx
|
 |
|
13
aleung Apr 17, 2018 via Android
用 gitlab 了,为啥不用 gitlab ci ?
|
 |
|
14
Youen Apr 17, 2018
step 里面部署完之后删除 workspace. 下次 git clone --depth=1
|
 |
|
15
kisnows Apr 17, 2018
dist 目录不上 git
|
 |
|
16
zhoulouzi Apr 17, 2018
jenkins 为什么要解决冲突问题。
|