對於我的Rails應用程序,我通常從標記版本部署到生產環境,然後在用戶界面中顯示標記,將git describe --always
的輸出分配給config/application.rb
中的變量。如何在heroku上顯示RoR應用程序代碼版本?
現在我正在將應用程序移動到Heroku,並且部署到heroku只會使用主分支,所以此技巧不再適用。
當我部署到heroku時,是否有任何其他方式爲我的代碼分配版本號並將其顯示在UI上?
感謝, 斯圖爾特
對於我的Rails應用程序,我通常從標記版本部署到生產環境,然後在用戶界面中顯示標記,將git describe --always
的輸出分配給config/application.rb
中的變量。如何在heroku上顯示RoR應用程序代碼版本?
現在我正在將應用程序移動到Heroku,並且部署到heroku只會使用主分支,所以此技巧不再適用。
當我部署到heroku時,是否有任何其他方式爲我的代碼分配版本號並將其顯示在UI上?
感謝, 斯圖爾特
不git tag
滿足您的需求?
爲什麼舊的技巧不再工作?
您可以將變量通過在本地運行此命令時,你推到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上的數據庫遷移)。
是的,但是因爲我將* master *推給了heroku,'git describe'沒有我的git標籤。 –
對不起,如果我不清楚:你應該在推送新版本時在本地運行'heroku config:add'命令。在Heorku上運行時,Ruby代碼會接收到'GIT_TAG'環境變量,並且在開發中本地運行時會回退運行'git describe'命令。 – georgebrock
我已經更新了我的答案以澄清。 – georgebrock
如果你想在用戶界面上顯示它,那麼一個git SHA輸出可能不是特別有用 - 你有兩個選擇,在你的用戶友好版本號中設置一個Heroku配置變量或者在你的設置中設置一個版本號從主服務器部署時增加的代碼。您可以將部署包裝在一個rake任務中,該任務將版本號增加到一個文件(然後將其讀取到git並提交它),或者只是增加配置變量中的值。
此外,不要忘記Heroku發佈管理http://blog.heroku.com/archives/2010/11/17/releases/,你也許可以在這裏使用它來獲取版本號。
是的,我想我需要用這樣的非git解決方案。或者只是一起擺脫版本號。 –
因爲我把主人推到了heroku,所以它沒有任何標籤。 –