我知道你可以从github自动部署到heroku,但是我还没有找到一种方法只把一个子文件夹从github推到heroku。从命令行中,我知道可以使用以下命令执行此操作:
git subtree push --prefix <subfolder> heroku master
然而,我想知道是否有一种方法可以使用github与heroku的集成,使其在提交被添加到分支时自动拉取特定的子文件夹。
qcuzuvrc1#
**2018更新!**要使用heroku启用自动化部署,您需要拥有要部署的github存储库的 admin 访问权限。
在部署选项卡中,滚动到部署方法并连接您的Github帐户。找到repo并点击连接。heroku现在应该被授权为Github中的Oauth应用。
***如果您找不到该存储库:***您的github没有授权Heroku,或者您没有创建该存储库,因此需要确保您拥有该存储库的管理员访问权限。如果无法做到这一点,请转到Heroku Dashboard中的“访问”选项卡并将该存储库的管理员添加为协作者,以邀请该管理员访问您的Heroku应用。然后,该管理员登录到Heroku并在此处完成步骤1。之后,您可以完成以下步骤。
在Settings选项卡中,设置一个config var,告诉Heroku要部署的服务器代码的路径。
**例如:**假设您的存储库名称是MyRepo,它有2个子文件夹。back-end包含一个Node.js服务器,front-end包含一个React应用。您的github目录如下所示:
back-end
front-end
MyRepo/front-end/package.json MyRepo/back-end/package.json然后,您应该在左框中将config var设置为PROJECT_PATH,在右框中将其设置为back-end。
MyRepo/front-end/package.json MyRepo/back-end/package.json
PROJECT_PATH
在Settings标签页中,你需要添加一个Buildpack来告诉heroku查找你的文件夹,而不是部署repo根目录。这里应该已经有一个Buildpack来告诉heroku它是什么类型的服务器(javascript/node.js,python/django,等等...)。输入此url以添加构建包https://github.com/timanovsky/subdir-heroku-buildpack.git,确保它位于构建包链的顶部(拖动左侧的线条,使其位于已添加的任何其他构建包的上方。
在“Deploy”选项卡中,滚动到“Automatic Deploys”,然后单击黑色按钮以启用自动部署
bq3bfh9z2#
我能够使它工作。我有一个server子文件夹与Python Flask应用程序,我想使用GitHub集成自动部署它。Heroku使用构建包来检测你项目的语言和框架。更多关于here的信息。我找到了我的buildpack here的源代码,然后你只需要看看检测脚本,对于python,它检查requirements.txt文件,所以我用ln -s server/requirements.txt requirements.txt做了一个符号链接。我的Procfile看起来像这样:web: gunicorn --pythonpath server/api app:app .现在一切正常!
server
requirements.txt
ln -s server/requirements.txt requirements.txt
web: gunicorn --pythonpath server/api app:app
5ssjco0h3#
为了从一个子文件夹中自动部署,我在GitHub中创建了一个新的分支,并将 JUST 推到子文件夹中,然后设置Heroku自动部署到该分支。使用git subtree push --prefix <subfolder> origin <branch>将子文件夹推入该分支
git subtree push --prefix <subfolder> origin <branch>
zxlwwiss4#
测试此解决方案:在环境变量集
至
<repo relative path to the subfolder>
为什么?我注意到了
git subtree push --prefix <subfolder> Heroku master
会自动执行此操作,Heroku很有可能会执行此操作来设置子文件夹的路径。**使用此操作,您可以将存储库设置为自动部署并声明子文件夹路径。**他们确实应该努力使这一点更加明显。
gg58donl5#
我认为现在noxasaxon的回答中存在一个问题在PROJECT_PATH中的步骤2)中,您不应该将MyRepo/front-end/package.json .放在路径变量中,而只需将front-end放在路径变量中,它就可以工作了。
MyRepo/front-end/package.json
gt0wga4j6#
在子目录中部署带有服务器的存储库的简单方法是:
现在,您可以在Heroku/Deploy中选择要部署和使用的存储库。
iqjalb3h7#
Heroku cli子文件夹部署:
在我的全栈项目中,前端和后端位于不同的文件夹中,我在后端文件夹的公共文件夹中构建前端,并且需要部署后端文件夹,为此:首先,在我的例子中,为后端文件夹创建一个子树到一个单独的分支(master)。
git subtree split -P almarket/almarket-api -b master
然后使用--force注解将其推送到heroku
git push --force heroku master
不要忘记在每次部署开始时使用删除子树git分支。
git branch --delete -D master
注意:Heroku只使用main或git master分支进行部署,因此如果您的根git分支是main,请使用以下命令,但如果您的根git分支是master,请将master替换为main
wnrlj8wa8#
到目前为止,部署子目录最简单的方法是使用Netlify --登录,然后将您的根文件夹拖到“站点”下的拖放区域,然后在“设置”-〉“构建和部署”-〉“持续部署”-〉“构建设置(首先将Netlify连接到Github存储库)您将在Base Directory字段中输入子目录名称(没有斜扛),然后CI= npm run build表示“建置命令”,最后yourSubdirectoryName/build表示“出版目录”字段。保存并触发另一个部署。
CI= npm run build
yourSubdirectoryName/build
8条答案
按热度按时间qcuzuvrc1#
**2018更新!**要使用heroku启用自动化部署,您需要拥有要部署的github存储库的 admin 访问权限。
在Heroku Jmeter 板中:
步骤1)-将github存储库连接到Heroku
在部署选项卡中,滚动到部署方法并连接您的Github帐户。找到repo并点击连接。heroku现在应该被授权为Github中的Oauth应用。
***如果您找不到该存储库:***您的github没有授权Heroku,或者您没有创建该存储库,因此需要确保您拥有该存储库的管理员访问权限。如果无法做到这一点,请转到Heroku Dashboard中的“访问”选项卡并将该存储库的管理员添加为协作者,以邀请该管理员访问您的Heroku应用。然后,该管理员登录到Heroku并在此处完成步骤1。之后,您可以完成以下步骤。
步骤2)-将Heroku配置变量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
然后,您应该在左框中将config var设置为
PROJECT_PATH
,在右框中将其设置为back-end
。步骤3)-设置一个将部署PROJECT_PATH文件夹的Heroku构建包
在Settings标签页中,你需要添加一个Buildpack来告诉heroku查找你的文件夹,而不是部署repo根目录。这里应该已经有一个Buildpack来告诉heroku它是什么类型的服务器(javascript/node.js,python/django,等等...)。
输入此url以添加构建包https://github.com/timanovsky/subdir-heroku-buildpack.git,确保它位于构建包链的顶部(拖动左侧的线条,使其位于已添加的任何其他构建包的上方。
步骤4)-启用自动部署
在“Deploy”选项卡中,滚动到“Automatic Deploys”,然后单击黑色按钮以启用自动部署
Auto Deploy完成!现在请检查生成日志并确保没有任何错误
bq3bfh9z2#
我能够使它工作。我有一个
server
子文件夹与Python Flask应用程序,我想使用GitHub集成自动部署它。Heroku使用构建包来检测你项目的语言和框架。更多关于here的信息。
我找到了我的buildpack here的源代码,然后你只需要看看检测脚本,对于python,它检查
requirements.txt
文件,所以我用ln -s server/requirements.txt requirements.txt
做了一个符号链接。我的Procfile看起来像这样:
web: gunicorn --pythonpath server/api app:app
.现在一切正常!
5ssjco0h3#
为了从一个子文件夹中自动部署,我在GitHub中创建了一个新的分支,并将 JUST 推到子文件夹中,然后设置Heroku自动部署到该分支。
使用
git subtree push --prefix <subfolder> origin <branch>
将子文件夹推入该分支zxlwwiss4#
测试此解决方案:
在环境变量集
至
为什么?我注意到了
会自动执行此操作,Heroku很有可能会执行此操作来设置子文件夹的路径。**使用此操作,您可以将存储库设置为自动部署并声明子文件夹路径。**他们确实应该努力使这一点更加明显。
gg58donl5#
我认为现在noxasaxon的回答中存在一个问题
在PROJECT_PATH中的步骤2)中,您不应该将
MyRepo/front-end/package.json
.放在路径变量中,而只需将front-end
放在路径变量中,它就可以工作了。gt0wga4j6#
在子目录中部署带有服务器的存储库的简单方法是:
现在,您可以在Heroku/Deploy中选择要部署和使用的存储库。
iqjalb3h7#
Heroku cli子文件夹部署:
在我的全栈项目中,前端和后端位于不同的文件夹中,我在后端文件夹的公共文件夹中构建前端,并且需要部署后端文件夹,为此:
首先,在我的例子中,为后端文件夹创建一个子树到一个单独的分支(master)。
然后使用--force注解将其推送到heroku
不要忘记在每次部署开始时使用删除子树git分支。
注意:Heroku只使用main或git master分支进行部署,因此如果您的根git分支是main,请使用以下命令,但如果您的根git分支是master,请将master替换为main
wnrlj8wa8#
到目前为止,部署子目录最简单的方法是使用Netlify --登录,然后将您的根文件夹拖到“站点”下的拖放区域,然后在“设置”-〉“构建和部署”-〉“持续部署”-〉“构建设置(首先将Netlify连接到Github存储库)您将在Base Directory字段中输入子目录名称(没有斜扛),然后
CI= npm run build
表示“建置命令”,最后yourSubdirectoryName/build
表示“出版目录”字段。保存并触发另一个部署。