从子文件夹自动部署heroku

时间:2016-08-29 01:21:41

标签: git heroku github deployment web-deployment

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

从命令行我知道可以通过以下方式执行此操作:

git subtree push --prefix <subfolder> heroku master

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

3 个答案:

答案 0 :(得分:12)

2018更新!若要使用heroku进行自动部署,您需要对要部署的github存储库具有 admin 访问权限。

在Heroku仪表板中:

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

在Deploy选项卡中,滚动到Deployment方法并连接您的Github帐户。找到仓库并点击连接。现在应该在您的github中将heroku授权为Oauth应用。

如果找不到存储库: 或者您的github未授权Heroku,或者您没有创建此存储库,因此需要确保您对该存储库具有管理员权限。如果无法做到这一点,请通过访问Heroku仪表板中的“访问”选项卡并将该管理员添加为协作者来邀请回购的管理员加入您的heroku应用程序。然后,管理员登录到heroku并在此处完成步骤1。然后,您可以完成以下步骤。

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

在“设置”标签内,设置一个配置变量,以告知Heroku查找要部署的服务器代码的路径。

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

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

然后,您应该在左侧框中将配置变量设置为PROJECT_PATH,在右侧框中将配置变量设置为back-end

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

再次在“设置”选项卡内,您需要添加一个Buildpack,它将告诉heroku查找您的文件夹而不是部署回购根目录。那里应该已经有1个buildpack来告诉heroku它是哪种服务器(javascript / node.js,python / django等)。

输入此URL以添加buildpack https://github.com/timanovsky/subdir-heroku-buildpack.git,并确保其位于buildpack链的顶部(拖动左侧的行使其位于您添加的任何其他buildpack之上

步骤4)-启用自动部署

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

自动部署完成!现在检查构建日志并确保没有任何错误

答案 1 :(得分:3)

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

Heroku使用buildpack来检测语言&amp;你的项目框架。关于here的更多信息。

我找到了buildpack here的源代码。然后你只需要查看检测脚本。对于python checks requirements.txt文件,所以我使用ln -s server/requirements.txt requirements.txt创建了一个符号链接。

我的Procfile如下所示:web: gunicorn --pythonpath server/api app:app

现在一切正常!

答案 2 :(得分:-2)

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

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