关于jenkins自动部署多个分支的问题

西夏一品堂 发布于 2016/08/08 10:10
阅读 8K+
收藏 1
大家好:问一个关于jenkins自动部署的问题
我有一个maven项目,使用的是assemble插件打包,打成的是类似tomcat的目录结构的zip(有bin,conf,lib等目录),
其中bin目录里面有启动,停止脚步,启动之后,项目就会占用一个端口,这个端口是配置的
jenkins在build的时候,除了要打包项目之外,还要scp到测试机部署
大致的步骤如下:
1:通过ssh插件,执行测试机上面的脚本,执行pre build操作(停止应用,删除运行文件)
2:jenkins build
3:scp编译后的zip文件到测试环境
4:通过ssh插件,执行测试环境上的脚本,执行解压zip,执行启动脚步启动应用


现状问题来了
随着并行需求很多,git分支也很多,测试环境需要同时部署很多个分支到测试环境
上面的步骤是把zip scp到固定的目录中去,启动
现在要部署多份,端口还不能重复
我又不想改代码里面的端口配置,因为合并分支的时候,可能会覆盖掉原来的端口
请问,这个有什么好的解决方法解决jenkins自动部署的问题
加载中
0
Feng_Yu
Feng_Yu
简单,jenkins的pipeline支持code,不同的分支存入不同的Jenkinsfile文件即可
西夏一品堂
西夏一品堂
回复 @Feng_Yu : 非常感谢,马上去试试
Feng_Yu
Feng_Yu
回复 @西夏一品堂 : 甚至build前跑一下shell命令或groovy脚本替换一下配置就完事了
Feng_Yu
Feng_Yu
回复 @西夏一品堂 : https://wiki.jenkins-ci.org/display/JENKINS/Multi-Branch+Project+Plugin 这个插件可以试试。另外你也可以写变量注入啊,不同环境定义不同的配置就可以了
Feng_Yu
Feng_Yu
回复 @西夏一品堂 : 能迁移到pipeline的尽可能迁移到pipeline code上,这个可以说是jenkins的趋势了。我找找看,我记得jenkins有插件可以支持不同branch不同处理
西夏一品堂
西夏一品堂
目前没有用到pipeline的功能,还有其他的方法吗?
0
leo108
leo108

监听端口能否通过启动参数来设置?如果可以,改造下启动脚本

  1. 启动脚本判断当前环境是否是测试环境(可以通过Jenkins的env来判断)
  2. 如果不是测试环境则端口号为线上端口号
  3. 如果是测试环境,则指定一个端口范围,比如8000-9000,并查找这个端口范围内的未被占用的端口,使用该端口启动即可

西夏一品堂
西夏一品堂
回复 @leo108 : 在代码里面,我不知道当前代码是属于哪个分支。所以我想能不能用jenkins解决,因为jenkins知道当前是build哪个分支
leo108
leo108
回复 @西夏一品堂 : 那也简单,根据分支名求一个hash值,把这个hash值作为端口号,这样同一个分支占用的端口号就不会变了
西夏一品堂
西夏一品堂
回复 @leo108 : 同一个分支,我希望多次部署都用一个端口。比如说,现在测试人员测试的好好的,重新部署一份,端口变了,这样会被骂的
leo108
leo108
回复 @西夏一品堂 : 对于测试环境,每次部署端口不一样有什么问题?
西夏一品堂
西夏一品堂
围内的未被占用的端口,使用该端口启动即可。这样有可能的结果是,第一次部署和第二次部署,端口不一样
0
各种打杂
各种打杂

jenkins + docker啊。你的这个需求太适合不过了

返回顶部
顶部