检测Vagrantfile中的git branch并用它来控制vm配置脚本,只控制网络ip地址等

时间:2015-04-19 09:28:29

标签: git vagrant

我的公司有一个奇怪的情况,我们有一个包含我们所有代码的巨型git存储库。

在短期内将代码分成库和模块是非常困难的。

但我们希望根据代码应该扮演的角色“生成”服务器,例如网站,肥皂网服务,休息网络服务等。

一个想法是使用git分支来表示变化。代码将大部分相同,但控制服务器行为的配置文件将不同。

我把它写入了我们的bash配置脚本,它可以工作。

我现在想看看Vagrant是否支持这样的计划。

感谢。

1 个答案:

答案 0 :(得分:1)

你必须自己实现切换逻辑,但这应该是相当微不足道的。

某处(可能在configure区块之前),您想要了解当前分支是什么:

branch = `git rev-parse --abbrev-ref HEAD`

然后,使用此选项,但您需要在框中定义。例如,您可以根据分支切换供应商:

# snip
shell_provisioner = case branch
                    when 'master'  then 'path/to/provisioner.sh'
                    when 'widgets' then 'path/to/widgets.sh'
end

config.vm.provision :shell, path: shell_provisioner

这是无限灵活的,取决于您实际想要根据分支变化的内容。如果需要,我很乐意扩展它。