2016-09-18 49 views
1

是否有腳本或繞過Heroku Toolbelt登錄提示的制裁方式?我遇到了一些聲稱提供解決方案(期望,環境變量,在.netrc中插入環境變量等)的黑客,但我真的很想找到一個穩定的解決方案。CI環境中的腳本「heroku登錄」

回答

4

從我在文檔中看到的,有三種方法可以解決這個問題。

第一個是authenticate via Login&Password(bleh)。知道了輸入格式 - 在其他登錄在一行,密碼 - 我們可以catecho數據:

通過安全ENV瓦爾:

(
    echo "$HEROKU_CREDENTIALS_EMAIL" # or you can plaintext it, if you're feeling adventurous 
    echo "$HEROKU_CREDENTIALS_PASSWORD" 
) | heroku login 

Travis CI settings screen showing secure env vars

突出的重要組成部分(變量名稱和安全性)。

或通過一個加密的文件:

準備在回購根命名.heroku_cred文件:

[email protected] 
IAmPdohertyAndThisIsMyPasswordIWorkHereWithMyOldMan 

然後對它進行加密:

travis encrypt-file .heroku_cred 

這會給你兩件事情:一個名爲.heroku_cred.enc的文件在repo根目錄下,並且會解密Travis上的文件。 git add加密文件(注意而不是意外抓取未加密的文件!)並將命令添加到before_install。然後,到了那裏你想要的Heroku認證的地方添加:

cat .heroku_cred | heroku login 

現在,這種方法吮吸兩方面的原因:第一,你用你的文字密碼,這是可怕的,因爲如果你泄漏」 100%性交,如果你改變它,你的構建將開始虛假失敗。

下一個方法是使用the HEROKU_API_KEY env var,這可能會「干擾auth命令的正常運行」,但這並不重要,因爲您無論如何都不以其他方式進行身份驗證。

這樣做不需要更改.travis.yml,只有一個名爲HEROKU_API_KEY一個安全的環境變量包含來自

heroku auth:token 

冉你的機器上(如果你很可能認證)的輸出。

Travis CI settings screen showing secure env var

突出的重要組成部分(變量名和安全性)。

該方法結合了安全性(所使用的OAuth令牌,它可以被撤銷)和簡單的安裝。

還有第三種方法:using ~/.netrc,它將與整個生態系統進行合作,就像通過CLI使用用戶名和密碼進行身份驗證一樣(但您使用的是OAuth令牌,這更好)。

跟隨在這一個步驟類似於1.2:

首先創建這樣一個名爲.heroku-netrc一個文件,其中包含您的~/.netrc負責的部分與Heroku的(details)認證:

machine api.heroku.com 
    login [email protected] 
    password c4cd94da15ea0544802c2cfd5ec4ead324327430 
machine git.heroku.com 
    login [email protected] 
    password c4cd94da15ea0544802c2cfd5ec4ead324327430 

然後,對其進行加密,運行:

travis encrypt .heroku-netrc 

你會得到一個解密指令(將其添加到before_install)和.heroku-netrc.enc,您應該在git add(注意不要添加未加密的.heroku-netrc)。隨後,將其添加到install步:「謝謝」

cat .heroku-netrc >> $HOME/.netrc 
+0

我剛拔掉這件事作參考,認爲我應該採取第二個說,花時間把這樣一個有用的,詳細的答案放在一起。 – pdoherty926