【问题标题】:Deploy branch on Heroku via API [duplicate]通过 API 在 Heroku 上部署分支 [重复]
【发布时间】:2019-07-01 21:20:53
【问题描述】:

我在 heroku 上设置了一个通过 GitHub 自动部署的应用程序。这个设置很棒,我不想改变任何东西。

现在有一个用例,我需要在不更改代码的情况下不时部署应用程序(构建过程会获取一些最近的数据)。

我可以通过转到用户界面并单击“部署分支”轻松地重新部署应用程序。但是我很想通过 API 来做到这一点。我在Heroku Platform API Documentation 中找不到任何有助于实现这一目标的东西。

我可以通过GitHub deployment API 创建部署,但这似乎不会触发 Heroku 上的部署。

关于如何在 Heroku 上触发特定应用程序部署的任何线索?

编辑:我无法真正使用答案 Redeploy Heroku app without code changes,因为没有答案可以通过 HTTP API 提供此功能。

【问题讨论】:

  • 感谢您的指点。但是我需要能够通过 HTTP API 来做到这一点。

标签: github heroku


【解决方案1】:

Heroku 目前没有用于 GitHub Sync 的公共 API。所以你需要使用他们的平台 API 来create a build

GitHub 在 URL https://github.com/<organization>/<repository>/archive/master.zip 下为您提供了一个 tar.gz(当然,您需要在标头中传递一个授权令牌)。

使用 curl,您可以执行以下操作:

curl -n -v https://github.com/<organization>/<repository>/archive/master.zip

该 URL 将重定向到 GitHub 上经过身份验证以允许下载的 URL。重复使用该 URL 来创建 Heroku 构建:

curl -n -X POST https://api.heroku.com/apps/<app name>/builds \
  -d '{
  "source_blob": {
    "url": "<the URL fetched before>",
    "version": "<the version of the code you're trying to deploy>"
  }
}' \
  -H "Content-Type: application/json" \
  -H "Accept: application/vnd.heroku+json; version=3"

这将触发一个新的构建,从 GitHub 下载代码。有效地在内部执行与 GitHub Sync 相同的操作。

你也可以看这个教程:https://devcenter.heroku.com/articles/build-and-release-using-the-api

【讨论】:

  • 该解决方案对我有用。但是生成的 github URL 会在一段时间后过期,所以我想知道是否有办法通过 URL 传递身份验证。
  • 没有办法获得永久生成的 URL(这基本上是一个带有定时凭证的 S3 URL)。每次都需要先跟随重定向。
  • 原来有一种方法可以做到这一点,而无需获取重定向。使用此 URL 模式,您每次都可以使用您的 github 令牌:api.github.com/repos/:user/:repo/tarball/…
  • @leifg 不,使用新的 github api,您必须将访问令牌作为标头传递。完成此操作后,它将返回临时的redirect 链接
猜你喜欢
  • 2016-11-20
  • 2012-12-31
  • 2018-08-27
  • 1970-01-01
  • 2021-01-23
  • 2021-10-20
  • 2021-03-06
  • 2016-10-12
  • 1970-01-01
相关资源
最近更新 更多