2012-05-27 41 views
1

对于我的Rails应用程序,我通常从标记版本部署到生产环境,然后在用户界面中显示标记,将git describe --always的输出分配给config/application.rb中的变量。如何在heroku上显示RoR应用程序代码版本?

现在我正在将应用程序移动到Heroku,并且部署到heroku只会使用主分支,所以此技巧不再适用。

当我部署到heroku时,是否有任何其他方式为我的代码分配版本号并将其显示在UI上?

感谢, 斯图尔特

回答

0

git tag满足您的需求?

为什么旧的技巧不再工作?

+0

因为我把主人推到了heroku,所以它没有任何标签。 –

3

您可以将变量通过在本地运行此命令时,你推到Heroku的新变化添加到Heroku的配置:

heroku config:add GIT_TAG=`git describe --always` 

然后你就可以在你的应用程序的配置访问此:

version = ENV['GIT_TAG'] || `git describe --always` 

当应用程序在Heroku上运行时,它将接收配置变量(ENV['GIT_TAG']),并且在开发中本地运行时,它将回退到运行git describe --always

您将需要在每次部署时更新Heroku配置变量,但我通常将这种事情添加到部署脚本或rake任务(以及有用的东西,如创建标记部署的新标记以及运行任何新的Heroku上的数据库迁移)。

+0

是的,但是因为我将* master *推给了heroku,'git describe'没有我的git标签。 –

+0

对不起,如果我不清楚:你应该在推送新版本时在本地运行'heroku config:add'命令。在Heorku上运行时,Ruby代码会接收到'GIT_TAG'环境变量,并且在开发中本地运行时会回退运行'git describe'命令。 – georgebrock

+1

我已经更新了我的答案以澄清。 – georgebrock

0

如果你想在用户界面上显示它,那么一个git SHA输出可能不是特别有用 - 你有两个选择,在你的用户友好版本号中设置一个Heroku配置变量或者在你的设置中设置一个版本号从主服务器部署时增加的代码。您可以将部署包装在一个rake任务中,该任务将版本号增加到一个文件(然后将其读取到git并提交它),或者只是增加配置变量中的值。

此外,不要忘记Heroku发布管理http://blog.heroku.com/archives/2010/11/17/releases/,你也许可以在这里使用它来获取版本号。

+0

是的,我想我需要用这样的非git解决方案。或者只是一起摆脱版本号。 –

相关问题