从子文件夹自动部署heroku

Div*_*eto 18 git deployment github heroku web-deployment

我知道你可以从github自动部署到heroku,但我还没有找到一种方法只将子文件夹从github推送到heroku.

从命令行我知道可以这样做:

git subtree push --prefix <subfolder> heroku master
Run Code Online (Sandbox Code Playgroud)

但是,我想知道是否有一种方法可以使用github与heroku集成,以便在将提交添加到分支时自动提取特定的子文件夹.

nox*_*xon 18

2018年更新! 要使用heroku启用自动部署,您需要具有要部署的github存储库的管理员访问权限.

在Heroku仪表板中:

步骤1) - 将github存储库连接到Heroku

在Deploy选项卡中,滚动到Deployment方法并连接您的Github帐户.找到回购并点击连接.heroku现在应该被授权为你的github中的Oauth应用程序.

如果你找不到回购:你的github没有授权Heroku,或者你没有创建这个回购,需要确保你有管理员权限.如果无法做到这一点,请通过转到Heroku Dashboard中的Access选项卡并将管理员添加为协作者,邀请repo的管理员访问您的heroku应用程序.管理员然后登录到heroku并在此完成第1步.之后,您可以完成以下步骤.

步骤2) - 将Heroku Config Var PROJECT_PATH设置为您的服务器文件夹

在Settings选项卡中,设置config var以告诉Heroku找到要部署的服务器代码的路径.

示例:假设您的回购名称是MyRepo,它有2个子文件夹.back-end包含一个Node.js服务器并front-end包含一个React应用程序.你的github目录如下所示:

MyRepo/front-end/package.json MyRepo/back-end/package.json

然后,您应该将配置var设置PROJECT_PATH为左侧框和back-end右侧框.

步骤3) - 设置将部署PROJECT_PATH文件夹的Heroku Buildpack

再次在Settings选项卡中,您需要添加一个Buildpack,它将告诉heroku查找您的文件夹而不是部署repo root.应该已经有1个buildpack告诉heroku它是什么类型的服务器(javascript/node.js,python/django等...).

输入此URL以添加buildpack https://github.com/timanovsky/subdir-heroku-buildpack.git确保它位于buildpack链的顶部(拖动左侧的行以使其位于任何其他构建包之上)补充道.

步骤4) - 启用自动部署

在"部署"选项卡内,滚动到"自动部署",然后单击黑色按钮以启用自动部署

Auto Deploy完成!现在检查构建日志并确保没有任何错误

  • 非常感谢您使用 heroku 网站而不是命令行 (8认同)
  • 如果我能投两票,我会的。这太棒了! (4认同)
  • @LupyanaMbembati 本指南与在多目录 github 存储库中持续部署单个目录密切相关。如果您想连接前端和后端,您可以使用 Heroku 管道或多个 Heroku 应用程序,从不同的应用程序提供前端和后端服务,并使用 REST 连接两者。就我个人而言,我使用 netlify 作为前端,使用 heroku 作为后端,但有时我喜欢将所有代码放在一个存储库中。 (2认同)

sap*_*ens 6

我能够让它工作。我有一个server包含 Python Flask 应用程序的子文件夹,我想使用 GitHub 集成自动部署它。

Heroku 使用 buildpacks 来检测项目的语言和框架。更多关于这里

我在这里找到了我的 buildpack 的源代码。然后你只需要查看检测脚本。对于Python它检查requirements.txt文件,所以我利用由符号链接ln -s server/requirements.txt requirements.txt

我Procfile看起来是这样的:web: gunicorn --pythonpath server/api app:app

现在一切正常!


Bar*_*uch 5

为了从子文件夹进行自动部署,我所做的就是在 GitHub 中创建一个新分支并推送子文件夹,然后将 Heroku 设置为自动部署到该分支。

用于git subtree push --prefix <subfolder> origin <branch>将子文件夹推入该分支

  • 如果我的语气是敌对的,我很抱歉——在这里留下评论,因为今天谷歌搜索这个问题的解决方案导致(当前/最新)使用“git subtree x”。我认为对于其他考虑到这一点的流浪者来说值得一提。 (3认同)