从单个 repo 维护 staging+prod 环境,在 heroku 上使用 revel buildpack 的 2 个远程

Maintaining staging+prod environments from single repo, 2 remotes with revel buildpack on heroku

Revel 模型定义在 models 包下;因此,为了导入它们,必须使用相对于 %GOPATH/src 文件夹的完整回购路径,在本例中 project/app/models 因此导致

import PROJECTNAME/app/models

到目前为止,如果您使用应用名称作为本地开发计算机的文件夹名称并且只有开发+生产环境,那就太好了。

Heroku's docs 建议针对不同的环境(即用于暂存)使用多个应用程序。具有不同来源的相同存储库;

这就是问题开始的地方,现在,由于暂存环境驻留在备用应用程序名称上(假设 PROJECTNAME_STAGING),它的源存储在 PROJECTNAME_STAGING 下,但实际代码仍然 import PROJECTNAME/app/models 而不是 import PROJECTNAME_STAGING/app/models;所以编译失败等等

是否有可能使用 revel 的 heroku buildpack 使用单个本地存储库和多个来源管理多个环境?或者 buildpack 中需要一个尚未实现的功能?

此外,.godir文件可能存在问题,需要进行版本控制并包含应用程序的git路径,那么关于这个的多环境二元性呢文件?

解决方法很简单; buildpack 使用 .godir both 中的字符串作为 revel run 的参数以及目录 name under GOPATH/src。我的 .godir 文件有 git.heroku.com/<APPNAME>.git 格式;相反,我只是使用 APPNAME 格式。