【问题标题】:heroku CLI auth by tokenheroku CLI 通过令牌进行身份验证
【发布时间】:2020-07-17 03:56:58
【问题描述】:

每次从 Gitlab 注册表构建 docker 映像并将其推送到 Heroku 注册表后,我都需要执行 heroku container:release web 到 Heroku 运行映像(发布),但我想自动执行此操作

我将 heroku CLI 工具安装添加到 gitlab-ci-yml,但我无法通过令牌验证 heroku CLI
当我尝试设置 HEROKU_API_KEY=token 并运行 heroku login 时出现错误 Error: Cannot log in with HEROKU_API_KEY set
还尝试使用 HEROKU_DEBUG 执行此操作,但调试器信息无法帮助我
我不能使用~/.netrc

有什么方法可以验证 heroku CLI 或自动在 heroku 中发布 docker 映像?

当前 gitlab-ci.yml:

before_script:
    - apt install snapd
    - snap install --classic heroku
    - HEROKU_API_KEY=$HEROKU_API_TOKEN heroku login
    - docker login -u $REGISTRY_UNAME -p $REGISTRY_PWD registry.gitlab.com
    - docker login --username=_ --password=$HEROKU_PWD registry.heroku.com
script:
    # a lot of tag & push lines
    - heroku container:release web

【问题讨论】:

  • 我可能遗漏了一些东西。如果您已经设置了 API 密钥,为什么还要登录?

标签: heroku heroku-cli


【解决方案1】:

如果您设置了HEROKU_API_KEY 环境变量,则不必再次登录。 API 密钥将用于 Heroku CLI 命令(如果存在)。

确保使用heroku authorizations:create 创建永不过期的令牌。查看this 了解详细说明。

参考:https://github.com/heroku/cli/issues/502#issuecomment-309099883

请注意,gitgit push heroku master 命令不会使用 API 密钥。请参阅this 了解更多信息。

【讨论】:

  • 不,我不使用 heroku 的 git。我只是在 gitlab CI 中构建我的图像,然后 gitlab 的 CI 将它交付给 heroku。但是在我执行heroku container:release web 之前,heroku 不会开始运行图像。我为身份验证创建了 heroku 令牌,但 gitlab 的运行器无法在 heroku 中进行身份验证(执行heroku container:release web),错误为Error: Cannot log in with HEROKU_API_KEY set
  • @sula 正如我在回答中提到的,如果您已经拥有 API 密钥,则无需执行 heroku login
  • 尝试运行 HEROKU_API_KEY=never-expiring-token heroku container:release web 时遇到错误:提供的凭据无效。错误:无法使用 HEROKU_API_KEY 设置登录 命令失败:heroku 登录。尝试运行 export HEROKU_API_KEY=never-expiring-token 然后 heroku container:release web 得到同样的错误。也尝试使用永不过期的令牌并得到相同的错误
【解决方案2】:

通过更改导致令牌更改和重新创建新令牌的帐户密码解决了问题
然后再次运行HEROKU_API_KEY=token heroku container:release web 成功

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-12
    • 2014-10-30
    • 1970-01-01
    • 1970-01-01
    • 2013-08-07
    • 1970-01-01
    • 1970-01-01
    • 2014-12-17
    相关资源
    最近更新 更多