我知道你可以从github自动部署到heroku,但我还没有找到一种方法只将子文件夹从github推送到heroku。
从命令行我知道可以通过以下方式执行此操作:
git subtree push --prefix <subfolder> heroku master
但是,我想知道是否有一种方法可以使用github与heroku集成,以便在将提交添加到分支时自动提取特定的子文件夹。
答案 0 :(得分:12)
2018更新!若要使用heroku进行自动部署,您需要对要部署的github存储库具有 admin 访问权限。
在Deploy选项卡中,滚动到Deployment方法并连接您的Github帐户。找到仓库并点击连接。现在应该在您的github中将heroku授权为Oauth应用。
如果找不到存储库: 或者您的github未授权Heroku,或者您没有创建此存储库,因此需要确保您对该存储库具有管理员权限。如果无法做到这一点,请通过访问Heroku仪表板中的“访问”选项卡并将该管理员添加为协作者来邀请回购的管理员加入您的heroku应用程序。然后,管理员登录到heroku并在此处完成步骤1。然后,您可以完成以下步骤。
在“设置”标签内,设置一个配置变量,以告知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
。
再次在“设置”选项卡内,您需要添加一个Buildpack,它将告诉heroku查找您的文件夹而不是部署回购根目录。那里应该已经有1个buildpack来告诉heroku它是哪种服务器(javascript / node.js,python / django等)。
输入此URL以添加buildpack https://github.com/timanovsky/subdir-heroku-buildpack.git,并确保其位于buildpack链的顶部(拖动左侧的行使其位于您添加的任何其他buildpack之上
在“部署”选项卡中,滚动到“自动部署”,然后单击黑色按钮以启用自动部署
答案 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>
将子文件夹推入该分支