我是如何用Jenkins+Maven实现高效率参数化构建的?
| 次条有免费学习资料~
在我们执行自动化脚本的时候,经常我们需要在不同的环境之间切换,比如:测试环境 <-> 预发布环境 <-> 生产环境,而一般我们的代码上传到版本控制系统(Git or SVN),通过 Jenkins 持续集成构建我们的 job。
一旦环境发生了变化,又或者是我们要执行的用例集发生了变化,我们需要改动项目的配置,重新将代码上传至版本控制系统重新构建,整个流程下来比较浪费时间。
Jenkins 的参数化构建可以完美解决这一问题。
Jenkins 参数化配置
进入任务配置页面->【General】
选择【构建】选项
如果选择的是 Maven 风格任务,
如果是选择freestyle(自由风格)任务,
Maven 项目配置
Step1:
<!-- 不同的测试环境 -->
<profiles>
<!-- 开发环境 -->
<profile>
<id>dev</id>
<properties>
<env>dev</env>
</properties>
</profile>
<!-- 测试环境 -->
<profile>
<id>test</id>
<properties>
<env>test</env>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<!-- 线上环境 -->
<profile>
<id>product</id>
<properties>
<env>product</env>
</properties>
</profile>
</profiles>
在 build 标签下添加如下配置:
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<filters>
<filter>src/main/filters/filter-${env}.properties</filter>
</filters>
Step3:
Environment=dev
host=http://127.0.0.1
port=8081
jdbc-url=xxxx
jdbc-username=xxxx
jdbc-password=xxxx
server.port=${port}
# Environment
Environment=${Environment}
Host.url=${host}
# 数据源配置
datasource.url=${jdbc-url}
datasource.username==${jdbc-usernamel}
datasource.password==${jdbc-password}
datasource.driver-class-name=com.mysql.cj.jdbc.Driver
Step4:
Properties properties = new Properties();
try {
properties.load(ClassLoader.class.getResourceAsStream("/application-maven.properties"));
} catch (IOException e) {
e.printStackTrace();
}
String value = properties.getProperty("Environment");
这样即可通过不同的配置执行我们的自动化脚本。