jenkins,git集成开发问题

蟲蟲 发布于 2014/12/02 11:52
阅读 4K+
收藏 0
先说一下环境背景,jenkins本身有一台服务器作为部署服务器,应用服务器上不做jenkins和git,而是通过jenkins服务器数据仓库更新后将代码推向应用服务器。
原有状况是每次jenkins更新后会将项目全部重新部署到应用服务器(shell完成)。
现在需要只推送更新带代码文件,而非全部的项目文件,同时应用服务器会根据流量状况动态的增删以做负载均衡。
问题是,jenkins如何只区分更新文件并部署到应用服务器
现向大家求教,先提出自己的解决办法和难点
1.为每台应用服务器部署统一环境的jenkins环境(最坏的考虑办法,毕竟对整个服务器架构改动较大)。
2.获取每次git更新的文件,通过shell推送到动态应用服务器上,此方法是我现在正在考虑和实践的方向。现在遇到了问题,当push的时候,若只有一次commit的话,可以通过git命令获取本次push的代码,但当有多次commit而一次push的情况下,那么就需要对比两次版本的区别以找出更改的代码文件(git diff命令),那么就需要知道jenkins在pull代码前的版本号,和本次push的版本号。本次push的最新版本号可以获得,但jenkins在pull之前的版本号版本号缺无法在shell脚本中通过命令获取,因为pull操作是jenkins的git本身自完成的,也就是说在shell执行之前,pull已完成,jenkins的版本号已与远端仓库的版本号相同,无法获取。我现在被逼无奈开始看jenkins的git-plugin的源码,想着从插件着手,将上述操作全部放入到插件中自完成。
还望各位大神给予更好的帮助,非常感谢呀
加载中
0
Feng_Yu
Feng_Yu

使用rsync即可,rsync会自动判定是否需要传输文件。


蟲蟲
蟲蟲
就是按你的方法解决问题了
0
GodByeWord
GodByeWord
在Jenkins安装一下git 插件,这样每次都自动拿最新代码,不会像你那样,只拿一部分代码...
0
GodByeWord
GodByeWord
仔细看了下你说的:" 但当有多次commit而一次push的情况下,那么就需要对比两次版本的区别以找出更改的代码文件" ---这是什么意思,为什么要对比?
Feng_Yu
Feng_Yu
回复 @蟲蟲 : 使用git diff不就可以比出来么?
蟲蟲
蟲蟲
多次commit的情况下会有多个版本号,需要比对当前版本号和最新版本号之间的文件区别
返回顶部
顶部