2016-09-18 50 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