自动化Heroku CLI登录

yk9xbfzb  于 2022-11-24  发布在  其他
关注(0)|答案(4)|浏览(138)

我正在开发一个bash脚本来自动克隆一些项目和dev虚拟机中的另一个任务,但是我们在Heroku中有一个项目,存储库在其中。

> heroku login

和这个提示输入凭证,我读了“帮助”指南上包括的二进制和文档但我找不到任何东西来自动插入用户名和密码,我想要这样的东西:

> heroku login -u someUser -p mySecurePassword

存在着任何与之相似的方式吗?

w9apscun

w9apscun1#

Heroku CLI仅使用您的用户名和密码来检索API密钥,该密钥存储在您的~/.netrc文件(Windows上为$HOME\_netrc)中。
您可以手动检索API密钥并将其添加到~/.netrc文件中:
1.登录Heroku Web界面
1.导航到您的帐户设置页面
1.向下滚动到API Key部分,然后单击Reveal按钮
1.复制API密钥
1.打开您的~/.netrc文件,或使用您喜爱的文本编辑器创建它
1.增加以下内容:

machine api.heroku.com
  login <your-email@address>
  password <your-api-key>
machine git.heroku.com
  login <your-email@address>
  password <your-api-key>

<your-email@address>替换为向Heroku注册的电子邮件地址,将<your-api-key>替换为从Heroku复制的API密钥。
这应该可以手动完成heroku login自动完成的任务。**但是,我不推荐这样做。**运行heroku login可以更轻松地完成同样的任务,并且出错的机会更少。
如果您决定在计算机或帐户之间复制~/.netrc文件,则应注意两个主要警告:

如果您打算使用heroku login以外的任何机制登录Heroku,请务必小心。

ds97pgxw

ds97pgxw2#

您可以生成一个不过期的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浏览器时如何使用Heroku CLI的问题,例如,如果您通过SSH在EC2设备上工作:

$ 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后,复制“令牌”,并运行以下命令:

set HEROKU_API_KEY=ddf4a0e5-9299-4c5f-8820-b51c52fce4f9
heroku run ls --app my-app
unhi4e5o

unhi4e5o3#

如果你的目标只是获取源代码,你可以使用一个简单的git客户端。你只需要api密钥

获取API密钥的步骤

  • 登录Heroku Web界面
  • 导航到您的帐户设置页面
  • 向下滚动到“API密钥”部分,然后单击“显示”按钮
  • 复制API密钥

使用git下载源代码

使用此url模板进行git克隆

https://my_user:my_password@git.heroku.com/name_of_your_app.git

在我的例子中,user值是我的电子邮件,没有domain

Example : 
if mail is **duke@gmail.com**
user for heroku auth will be **duke**

最后像克隆其他git仓库一样克隆它:

git clone https://duke:my_password@git.heroku.com/name_of_your_app.git
hc2pp10m

hc2pp10m4#

我同意 Heroku 现在应该已经提供了一种方法来使用他们的更高级别的CLI工具完成此任务。
您可以通过简单地使用 curlHeroku API来避免极端的解决方案(您应该这样做,就像Chris在他的answer中提到的那样)。Heroku 允许您使用您的 *API令牌 *(可通过 Heroku Jmeter 板上的用户设置/profile page获得)。
然后,您可以使用API来实现您希望使用他们的命令行工具执行的任何操作。
例如,如果我想获取某个应用的所有配置变量,我会编写一个脚本,执行如下操作:

-H "Accept: application/vnd.heroku+json; version=3" \
-H "Authorization: Bearer YOUR_TOKEN```

If *YOUR_APP_NAME* had only one config variable called *my_var* the response of the above call would be 

    { 
        "my_var": some_value
    }

I've found using this all the time in CI tools that need access to *Heroku* information / resources.

相关问题