对于我的 Rails 应用程序,我通常从标记版本部署到生产环境,然后在用户界面中显示标记,将输出分配git describe --always
给config/application.rb
.
现在我将一个应用程序移动到 Heroku,并且部署到 Heroku 只发生在使用 master 分支,所以这个技巧将不再起作用。
当我部署到 Heroku 时,是否有任何其他方法可以为我的代码分配版本号并在 UI 上显示它?
谢谢,斯图尔特
对于我的 Rails 应用程序,我通常从标记版本部署到生产环境,然后在用户界面中显示标记,将输出分配git describe --always
给config/application.rb
.
现在我将一个应用程序移动到 Heroku,并且部署到 Heroku 只发生在使用 master 分支,所以这个技巧将不再起作用。
当我部署到 Heroku 时,是否有任何其他方法可以为我的代码分配版本号并在 UI 上显示它?
谢谢,斯图尔特
每当您将新更改推送到 Heroku 时,您可以通过在本地运行此命令来将变量添加到 Heroku 配置:
heroku config:add GIT_TAG=`git describe --always`
然后您可以在应用程序的配置中访问它:
version = ENV['GIT_TAG'] || `git describe --always`
当应用程序在 Heroku 上运行时,它将获取配置变量 ( ENV['GIT_TAG']
),当它在本地开发中运行时,它将回退到 running git describe --always
。
每次部署时都需要更新 Heroku 配置变量,但我通常将这种东西添加到部署脚本或 rake 任务中(以及创建标记部署的新标签和在 Heroku 上运行任何新数据库迁移等有用的东西)。
如果你想在 UI 上显示它,那么 git SHA 输出可能不是特别有用 - 你有两个选择,设置一个带有用户友好版本号的 Heroku 配置变量,或者在你增加的代码中设置一个版本号当您从 master 部署时。您可以将部署包装在 rake 任务中,该任务将版本号增加一个文件(然后将其读取到 git 并提交它)或简单地增加配置变量中的值。
另外,不要忘记 Heroku 发布管理http://blog.heroku.com/archives/2010/11/17/releases/,您也可以在这里使用它来获取版本号。
不git tag
符合您的需求?
为什么老把戏不再奏效了?