2009-10-17 63 views

回答

6

Heroku用提交散列ENV['COMMIT_HASH']設置環境變量。

至於時間戳,如果您在那裏託管您的代碼,您可以使用散列點擊github api。看起來ruby-github gem可以幫助你,或者你可以自己做HTTParty

+7

'ENV ['COMMIT_HASH']'適用於Bamboo,但不適用於Cedar。 – 2012-02-29 17:20:37

1

有安裝在Heroku grit。所以你可以使用它打開倉庫。

repo = Repo.new(Rails.root + '.git') 
last_commit = repo.commits.first 
p last_commit.id 
p last_commit.authored_date 
+1

感謝您的提示。不幸的是,在heroku控制檯中它不適用於我(它在應用程序本身會有所不同嗎?)。在Repo.new之後,我得到'Grit :: NoSuchPathError:'任何想法? – 2009-10-18 14:43:54

+0

試圖解決類似的問題,我可以證實,這不符合描述。 – Andrew 2011-01-27 06:29:48

+1

這不起作用,因爲.git目錄在Heroku上不可用,至少不在當前的Cedar堆棧中。 – 2012-08-08 12:21:49

2

這樣做的原因是因爲當你的應用部署到賽道網格服務請求時,它就是被編譯成「彈頭」的快速部署,並將該渣屑沒有按」不再有git repo了。

+0

這似乎是第一個評論(由Rich Apodaca)回答http://stackoverflow.com/a/1584452/1034080(由Damien MATHIEU)的迴應。 – 2012-01-12 15:23:37

1

另一種方法是使用rake任務進行部署,該任務從本地回購獲取所需的版本信息並更新Heroku一側的環境變量。然後,您可以使用標籤,或提交散列或其他任何內容,而不必依賴Heroku方面的行爲。

例如,如果你想使用最新的標籤,在你的rake任務:在任務的身體

def app_version 
    %x[git describe --tags --abbrev=0].strip 
end 

然後:

run "git push blah:blah blah" 
run "heroku config:add APP_VERSION=#{app_version}" 

我想能夠從Heroku的git上直接獲取這些信息,而不是間接偷偷摸摸地找到它,但我從來沒有想過如何做到這一點。