从子文件夹自动部署heroku

e0bqpujr  于 2022-11-13  发布在  其他
关注(0)|答案(8)|浏览(138)

我知道你可以从github自动部署到heroku,但是我还没有找到一种方法只把一个子文件夹从github推到heroku。
从命令行中,我知道可以使用以下命令执行此操作:

git subtree push --prefix <subfolder> heroku master

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

qcuzuvrc

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完成!现在请检查生成日志并确保没有任何错误

bq3bfh9z

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 .
现在一切正常!

5ssjco0h

5ssjco0h3#

为了从一个子文件夹中自动部署,我在GitHub中创建了一个新的分支,并将 JUST 推到子文件夹中,然后设置Heroku自动部署到该分支。
使用git subtree push --prefix <subfolder> origin <branch>将子文件夹推入该分支

zxlwwiss

zxlwwiss4#

测试此解决方案:
在环境变量集

PROJECT_PATH

<repo relative path to the subfolder>

为什么?我注意到了

git subtree push --prefix <subfolder> Heroku master

会自动执行此操作,Heroku很有可能会执行此操作来设置子文件夹的路径。**使用此操作,您可以将存储库设置为自动部署并声明子文件夹路径。**他们确实应该努力使这一点更加明显。

gg58donl

gg58donl5#

我认为现在noxasaxon的回答中存在一个问题
在PROJECT_PATH中的步骤2)中,您不应该将MyRepo/front-end/package.json .放在路径变量中,而只需将front-end放在路径变量中,它就可以工作了。

gt0wga4j

gt0wga4j6#

在子目录中部署带有服务器的存储库的简单方法是:

  • 将package.json从服务器目录复制到根目录
  • 将“节点server.js”更改为“节点子目录/server. js”

现在,您可以在Heroku/Deploy中选择要部署和使用的存储库。

iqjalb3h

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

wnrlj8wa

wnrlj8wa8#

到目前为止,部署子目录最简单的方法是使用Netlify --登录,然后将您的根文件夹拖到“站点”下的拖放区域,然后在“设置”-〉“构建和部署”-〉“持续部署”-〉“构建设置(首先将Netlify连接到Github存储库)您将在Base Directory字段中输入子目录名称(没有斜扛),然后CI= npm run build表示“建置命令”,最后yourSubdirectoryName/build表示“出版目录”字段。保存并触发另一个部署。

相关问题