Heroku 和 GitHub:"Items could not be retrieved, Internal server error"

Heroku and GitHub: "Items could not be retrieved, Internal server error"

我只想连接到我的 GitHub 帐户。当我这样做时,我收到此错误消息,因为页面右上角会弹出一个红色的小窗口:

Items could not be retrieved, Internal server error.

截至 2022 年 5 月 25 日,在 19:52 UTC,GitHub 集成已 re-enabled:

We are happy to report that the GitHub integration is re-enabled! You can now reconnect with GitHub and restore your Heroku pipeline functionality, including Review Apps, with newly generated tokens.

You can connect to GitHub immediately or wait for the enhanced integration as described in this blog post. To re-establish your GitHub connection now, please follow these instructions.

引用的博客 post 关于“增强集成”的内容如下:

In an effort to improve the security model of the integration, we are exploring additional enhancements in partnership with GitHub, which include moving to GitHub Apps for more granular permissions and enabling RFC8705 for better protection of OAuth tokens. As these enhancements require changes by both Heroku and GitHub, we will post more information as the engagement evolves.

未提及增强集成可用性的时间表。


2022 年 4 月 15 日至 5 月 25 日,Heroku's GitHub integration feature was disabled while Heroku investigated a security breach。在那段时间里,仍然可以通过其他方式进行部署,最著名的是通过 git push.

To mitigate impact from potentially compromised OAuth tokens, we will revoke over the next several hours all existing tokens from the Heroku GitHub integration. We are also preventing new OAuth tokens from being created until further notice. Your GitHub repositories will not be affected in any way by this action.

Which Heroku features have become non-operative due to the removal of the Heroku-GitHub integration?

  • Enabling review apps
  • Creating (automatic and manual) review apps
  • Deploying (automatic and manual) review apps
  • Deploying an app from GitHub (either manual or automatic)
  • Heroku CI cannot create new runs (automatically or manually) or see GitHub branch list
  • Heroku Button: unable to create button apps from private repositories
  • ChatOps: unable to deploy or get deploy notifications
  • Any app with a GitHub integration may be affected by this issue. To address specific integration issues, please open a case with Heroku Support

正在从 GitHub 部署迁移到 Git 部署

在 2022-04-21 23:53 UTC,Heroku 提供了从 GitHub-based 部署迁移到 Git-based 部署的扩展说明:

While our customers remain unable to reconnect to GitHub via the Heroku dashboard, we wanted to share a supplement to the code deployment methods previously provided. For instructions on how to change your deployment method from GitHub to Heroku Git, please refer to the following Help article: How to switch deployment method from GitHub to Heroku Git with all the changes/app code available in a GitHub repo.

这只是暂时的,有关此问题的更多详细信息here

您可以同时推送到 GitHub 和 Heroku 以获得临时解决方案:

git push -u origin <branch>
git push heroku <branch>

我遇到了同样的情况,正如其他人所说,这是由于 Heroku 安全问题造成的。同时,您可以使用 Heroku CLI 部署代码。

因此,在 Heroku 网络仪表板上,select Heroku Git:

然后使用 heroku login.

设置 Heroku CLI

最后,如果您的存储库已经存在于 GitHub 上,您需要通过 运行 添加一个新的远程:

heroku git:remote -a your_app_name
git push heroku master

您可以在 the official documentation 中找到有关此解决方案的更多信息。

这是由于他们的状态门户 here 上报告的问题所致。

目前,解决方案是使用另一种推送策略。

目前最好的方法是使用他们的 远程Heroku CLI。它的步骤是:

1。如果尚未安装 Heroku CLI,请安装

更多关于安装和设置的信息可以得到here

2。使用heroku login命令

执行登录

系统将提示您使用默认浏览器 window 完成 Heroku 门户的登录。

3。假设您已经在 Heroku 上设置了您的应用程序(如果没有,请遵循 this),您只需使用 Heroku CLI 为您的 Git 存储库添加一个新的远程。

运行 heroku git:remote -a example-app - 将“example-app”替换为您的应用名称。

4。 git remote -v检查遥控器是否设置成功

您应该会看到类似这样的响应:

heroku  https://git.heroku.com/your-app-name.git (fetch)
heroku  https://git.heroku.com/your-app-name.git (push)

5。将您的分支推送到新的 heroku 远程

git push heroku your_branch_name

6。您应该会在终端中看到您的部署进​​度


此答案的参考来自 here,如果需要此答案中提供的信息以外的更多信息,也可以使用它。

我看到了之前的答案,但由于我遇到了 review-apps(PR 应用程序)的问题,在这种情况下,大多数情况下您将使用不同的分支机构,所以这里有一个推送您的东西的解决方案除了 Heroku 的 (master/main) 分支。

首先确保您的远程源设置正确

heroku git:remote -a your_awesome_app

您也可以通过 git remote -v 确认,您应该会看到您的来源指向您的 Heroku 应用程序。

git remote -v

heroku    https://git.heroku.com/your_awesome_app.git (fetch)

此处来源名称为heroku.

如果您想从 main 部署您的更改分支

git push heroku main

如果你想从功能分支推送你的更改(* main 分支)

然后使用下面的命令将你的功能分支推送到 Heroku

git push heroku feature:main
  • heroku - 是您的原始名称(用 git remote -v
  • 确认您的原始名称
  • feature - 是您当前的分支,而不是 main/master 分支(使用 git branch 或 [=20 检查您的分支名称=])

如果您在尝试推送时遇到错误,可能是因为开发和部署的分支名称不同。在这种情况下,请按照以下说明操作;

If you are developing on a branch and deploying via Git you must run:

   git push heroku <branchname you're developing on>:<branch you're deploying from>

本文详细介绍了该行为:

Duplicate Build Version Detected

我正在使用带有 macOS 11.6.5 (Big Sur) 版本的 2014 MacBook Pro 命令

brew tap heroku/brew && brew install heroku

我收到一条错误消息,并收到一条消息,要求我更新到最新 Xcode。最新的 Xcode 需要最新的 macOS,我无法升级到(我需要 2015 MacBook Pro 或更新版本)。对于 2014 款 MacBook Pro,我能够安装 Xcode_13.2.1.xip 并且能够 运行。现在我可以将更新推送到 Heroku。

brew tap heroku/brew && brew install heroku

这是我在 Heroku 中使用的简单工作模式。这是为了帮助以前可能没有经历过的其他人。我以前(2014-5)用过这个,昨晚不得不重新设置它才能推送。

首先添加Heroku远程:

git remote add heroku https://git.heroku.com/YOUR-APP.git

由于 GitHub 通常是“来源”(git push origin...),这会添加另一个远程目的地“heroku”(git push heroku... )

git remote

输出:

heroku
origin

我的 code/git/pushing 模式:

  1. 本地开发也是一样。推送到 GitHub,合并,没有任何变化。
  2. 将部署设置为“Heroku git”,如@a-chris 所述。
  3. 要推送到 Heroku,只需将正确的分支推送到新添加的“heroku”远程源。我使用 --force 选项排除任何可能的冲突。除非你之前一直在使用 Heroku Git 和分支,否则应该只有一个分支——通常是“master”分支。

这将触发部署。您可以在仪表板和终端中观看或查看。将新的“heroku”源代码视为转储代码的目录以进行提升,并且不是您想要保留历史记录的存储库等。A second-class 这种特殊模式的公民。

我现在从我的本地终端而不是 auto-deploy 或通过仪表板按钮推送。如果您的组织很大,我建议控制访问。许多开发人员可能没有处理多个目标存储库或意外推送的经验。

要触发本地推送,请确保您的主人(或其他)是最新的...注意您的提交哈希值!

这将使您遵循 等建议。

我遇到了同样的问题。我已经安装了 cli。

git remote

输出:

heroku
origin

git remote -v

输出:

heroku  https://git.heroku.com/YOUR-APP.git (fetch)
heroku  https://git.heroku.com/YOUR-APP.git (push)
origin  https://github.com/GitUserName/yourRepo.git (fetch)
origin  https://github.com/GitUserName/yourRepo.git (push)

如果您的分支名为 main,请使用 Git 分支进行验证。例如,你会这样做:

git push heroku main

对我来说是

git push heroku master

现在推送您的本地更改

git push heroku master

输出:

To https://git.heroku.com/YOUR-APP.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'https://git.heroku.com/YOUR-APP.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

我不在乎它和遥控器有什么不同。我一直在本地开发,并没有意识到自动 Git 部署失败了。我关心本地的变化:

git push heroku master -f

现在部署的应用程序按预期工作。

正在为本地计算机工作。

对于远程 SSH 服务器,您将面临 IP 不匹配 错误。

解决方法:

  1. 登录 Heroku 网站

  2. 转到帐户设置

  3. 显示 the panel

    中的 API 键
  4. 在服务器 CLI 中,键入 heroku login -i

  5. 输入邮箱,使用API键作为密码,即可按照Git远程推送

    的剩余步骤进行

对于那些将此集成用于部署目的的人,我建议您在此处使用部署到 Heroku GitHub 操作:

Deploy to Heroku

这样,您就不必对部署工作流程进行重大更改。

有一个update regarding this issue。您现在可以启用更新中提到的 GitHub 集成。

如果还是不行,您可以尝试移除与GitHub的App连接(断开连接),然后重新添加连接。再次添加连接也可以在隐身模式下完成,因为有时会出现与 cookie 相关的问题 (mentioned here)。