是否有受制裁的方式来编写脚本或绕过Heroku Toolbelt的登录提示?我遇到过一些声称提供解决方案的黑客(期望,环境变量,插入环境变量等。),但我真的很想找到一个稳定的解决方案。
答案 0 :(得分:5)
从我在文档中看到的,有三种方法可以解决这个问题。
第一个是authenticate via Login&Password(bleh)。知道输入格式 - 在一行登录,在另一行登录 - 我们可以cat
或echo
中的数据:
通过安全env vars:
(
echo "$HEROKU_CREDENTIALS_EMAIL" # or you can plaintext it, if you're feeling adventurous
echo "$HEROKU_CREDENTIALS_PASSWORD"
) | heroku login
突出显示重要部分(变量名称和安全性)。
或通过加密文件:
在repo root中准备一个名为.heroku_cred
的文件:
pdoherty926@gmail.com
IAmPdohertyAndThisIsMyPasswordIWorkHereWithMyOldMan
然后加密它:
travis encrypt-file .heroku_cred
这将给你两件事:repo根目录中名为.heroku_cred.enc
的文件和在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
跑到您的机器上(您可能已经过身份验证)。
突出显示重要部分(变量名称和安全性)。
此方法结合了安全性(使用的OAuth令牌,可以撤销)和设置的简单性。
还有第三种方式:using ~/.netrc
,它将与整个生态系统合作,就像您通过CLI使用用户名和密码进行身份验证一样(但是您正在使用相反,OAuth令牌,这是更好的。)
此步骤的步骤类似于1.2:
首先创建一个名为.heroku-netrc
的文件,其中包含负责使用Heroku(details)进行身份验证的~/.netrc
部分,如下所示:
machine api.heroku.com
login me@example.com
password c4cd94da15ea0544802c2cfd5ec4ead324327430
machine git.heroku.com
login me@example.com
password c4cd94da15ea0544802c2cfd5ec4ead324327430
然后,要加密它,请运行:
travis encrypt .heroku-netrc
您将获得解密命令(将其添加到before_install
)和.heroku-netrc.enc
,您应git add
(请注意不要添加未加密的.heroku-netrc
)。然后,将其添加到install
步骤:
cat .heroku-netrc >> $HOME/.netrc