您可以生成一个不过期的OAuth令牌,然后通过环境变量将其传递给CLI。如果您需要从调度程序无限期地运行Heroku CLI命令,并且不希望登录过期,则此方法非常有用。请按如下方式操作(顺便提一下,这些不是实际的令牌和ID):
$ heroku authorizations:create
Creating OAuth Authorization... done
Client: <none>
ID: 80fad839-876b-4ea0-a41e-6a9a2fb0cf97
Description: Long-lived user authorization
Scope: global
Token: ddf4a0e5-9294-4c5f-8820-b51c52fce4f9
Updated at: Fri Aug 02 2019 21:26:09 GMT+0100 (British Summer Time) (less than a minute ago)
获取该授权的令牌(而不是 ID),然后将其传递到您的CLI:
$ HEROKU_API_KEY='ddf4a0e5-9294-4c5f-8820-b51c52fce4f9' heroku run ls --app my-app
Running ls on ⬢ my-app... up, run.2962 (Hobby)
<some file names>
$
顺便提一下,这也解决了在启用Heroku账户的MFA但您的计算机没有Web浏览器(例如,如果您正在通过SSH在EC2盒子上工作)时如何使用Heroku CLI的问题。
$ heroku run ls --app my-app
heroku: Press any key to open up the browser to login or q to exit:
› Error: quit
$ HEROKU_API_KEY='ddf4a0e5-9299-4c5f-8820-b51c52fce4f9' heroku run ls --app my-app
Running ls on ⬢ my-app... up, run.5029 (Hobby)
<some file names>
$
编辑:针对Windows机器
在运行 heroku authorizations:create
之后,复制“Token”,然后运行以下命令:
set HEROKU_API_KEY=ddf4a0e5-9299-4c5f-8820-b51c52fce4f9
heroku run ls --app my-app
myapp
的文件夹包含您的应用程序,那么运行heroku git:clone -a myapp
就没有意义了。您想要实现什么目标? - Chris