如何在执行git push操作时自动切换激活的Spring Profile配置


实现方案
可以通过Git自带的pre-push钩子完成自动修改,操作步骤如下:
- 进入项目根目录下的
.git/hooks文件夹,找到pre-push.sample示例文件,复制后重命名为pre-push(删除.sample后缀) - 编辑
pre-push脚本,根据你的配置文件格式添加对应修改逻辑:- 若使用
application.properties格式,示例逻辑如下(以修改为prod环境为例):
# 替换配置项取值,Linux环境请把sed -i '' 改为 sed -i sed -i '' 's/^spring.profiles.active=.*/spring.profiles.active=prod/' src/main/resources/application.properties # 将修改同步到当前提交,避免产生多余提交记录 git add src/main/resources/application.properties git commit --amend --no-edit --allow-empty- 若使用
application.yml格式,示例逻辑如下:
sed -i '' 's/ active:.*/ active: prod/' src/main/resources/application.yml git add src/main/resources/application.yml git commit --amend --no-edit --allow-empty - 若使用
- 给脚本添加执行权限,终端执行命令
chmod +x .git/hooks/pre-push即可
如果需要根据推送的分支自动切换不同的环境值,可以在脚本中增加分支判断逻辑,示例如下:
# 获取当前推送的分支名 current_branch=$(git rev-parse --abbrev-ref HEAD) if [ "$current_branch" = "dev" ]; then target_profile="dev" elif [ "$current_branch" = "prod" ]; then target_profile="prod" else target_profile="test" fi # 把上面替换配置的固定prod值改成变量$target_profile即可
团队协作场景下,可以把写好的钩子脚本放到项目公共目录,新增一键安装脚本让成员首次拉取项目后执行一次,即可完成本地钩子配置。
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

