为了方便起见:192.168.1.195服务器=A服务器,192.168.1.9服务器=B服务器

背景:本人在A服务器上搭建了一个jenkins环境,同时我的应用服务器是B服务器,这个时候我应该使用jenkins的SSH插件去把A服务器的war包丢到B服务器上去,然后再启动B服务器的tomcat即可,但是在这个步骤上遇到了问题:

由于A服务器上jenkins的workspace存在多个项目,如下图:

A服务器上的workspace存在3个项目,gdxf是dev分支项目,gdxf_uat是测试分支项目,gdxf_prod是正式环境分支项目,因此我在使用SSH的时候的Source files的路径写的是 如下路径,这个时候我的war包一直丢不到B服务器上,如下图:

然后查阅相关资料得到Source files的路径是相对于workspace的路径,那我上面的路径是没毛病的啊,最后看了jenkins的SSH插件使用方法,提供了两种Source files的路径方式:

  1. **/*.war
  2. target/*.war

其实这两种方法的效果是一样的,那么我就使用 **/*.war路径:

发现可以在我B服务器的 zip路径下找到core.war包,但是发现并不是gdxf_prod的war包,而是gdxf路径下面的war包,显而易见:使用**/*.war包不能保证core.war包的正确性,那么我就想了一个思路,那就是在将A服务器上的war包丢到B服务器之前先将其他非gdxf_prod的文件夹删除掉,这个时候就只剩下gdxf_prod下的war包了因此就能保证传输的正确性。因此在构建war包之前将其他项目删除掉:

脚本:

rm -fr !\(gdxf_prod|gdxf_prod@tmp\)

rm -fr 就不在做赘述,!表示:非;\( 中的\表示转义;这条命令的意思是:删除非gdxf_prod和gdxf_prod@tmp的所有文件,因此在进行后续操作即可。

由于正式环境急需启动,这个是我的临时解决方案,后续会继续补充。

刚接触jenkins,如有错误,欢迎批评指正。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐