jenkins发布时候替换项目文件

在项目开发过程中,通常会有各种运行环境,比如开发环境、测试环境以及生产环境等。这些环境的一些配置一般都是不一样的,如数据库配置、Redis地址,一些属性配置等。如果我们在发布到不同环境时候都是手动修改配置,难免容易出错,而且这种方式不值得提倡。然后其实像maven也有提供profile功能来灵活切换配置文件,但是这种方式有个不好的地方是需要在项目在存放不同环境的配置,一般来说生产环境的配置信息不对普通开发开放的。

在这样的情况下,结合之前公司的工作经验,自己整理出一个更好的方案。这个方案可以实现以下几点功能:

  • 项目部署到不同环境中,能自动切换配置文件
  • 重要配置文件可以不对普通开发开放

实现原理:在代码仓库中创建一个额外的仓库来存放不同环境的配置文件,在拉取项目代码后,去仓库拉取配置文件项目,根据不同的环境选择不同目录下的配置文件,替换要发布的项目中的配置文件。然后就是正常的使用maven进行编译,部署等。

1、创建配置文件代码仓库

在gitlab中创建一个新项目,用于存放配置文件,目录如下:

  • dev
  • db.properties
  • redis.properties
  • test
  • db.properties
  • redis.properties
  • prd
  • db.properties
  • redis.properties

这里只是大概给个例子,实际按自己项目的需要放置。

2、配置jenkins脚本

jenkins的流程是:git clone代码下来之后,执行以下脚本

#生成临时文件夹
tempdir=profiles$RANDOM

#替换资源文件
git clone git@xxx.git ./$tempdir

#替换资源文件
cp -rf ./$tempdir/prd/* ./src/main/resources

#删除配置文件
rm -rf ./$tempdir

#maven编译,这里的maven命令需要注意自己的maven地址
/usr/share/maven/bin/mvn clean package -Dmaven.test.skip=true

#在这里之后可以使用就打好包了,可以使用jenkins Deploy war/ear to a container 插件部署war到tomcat
#或者是docker相关命令 自己补充