2017-03-15 43 views
7

我在Travis上有一堆IntegrationTest,我需要在之後運行我的Ruby on Rails應用程序已部署到Heroku。我怎樣才能做到這一點?Trigoku Travis在Heroku部署後運行

我嘗試使用HTTP-POST方法,但使用Travis required custom headers and JSON bodyHeroku does not support both。有另一種方法嗎?

+0

如果你有興趣參加Michal的答案#1,你可以[viaSOCKET](https://viasocket.com)。我是其開發人員之一。您既不需要創建自定義應用程序,也不需要部署任何東西。 – 31piy

回答

1

我可以想到幾個解決方案,但沒有一個是完美的。一:你可以創建一個簡單的應用程序,將普通的Heroku部署鉤子轉換爲Travis可以接受的格式。當然你需要將它託管在某個地方,但它對於Amazon Lambda或類似的解決方案來說是一個很好的用例。如果你想嘗試無服務器的話,我認爲你有一個完美的案例。而託管成本幾乎沒有。

二:你可以在Heroku上使用發佈階段。創建一個腳本bin/notify-travis,並將其寫入您的Procfile release: bin/notify-travis。問題是如何獲得有關部署代碼的所有信息,如提交。爲此,您可以啓用名爲dyno-metadata的實驗室功能。它會注入額外的配置變量,其中一個是HEROKU_SLUG_COMMIT,其中包含commit sha。如果需要更多數據,則此解決方案可能無法工作。確保bin/notify-travis返回0.它將在部署之前運行。如果失敗,你的代碼將不會被部署。

三:你可以找到或編寫自定義的buildpack,將webhook發送給Travis。問題是它將在構建階段運行。如果發生錯誤,您的代碼可能不會部署,但您將發送webhook。同樣,在解決方案二中獲得有關構建的所有必需信息也可能會有問題。

所以你有一些選擇。我想第一個是最好的,但它可能不符合你的其他要求。