【发布时间】:2014-12-27 13:28:00
【问题描述】:
我希望my Heroku app(Play/Scala,在 Heroku Cedar 上运行)的运行时能够向我报告它是从哪个 git commit 构建的。 Heroku 应用程序通常由 slug 编译器在 Heroku 的基础架构上构建 - 不幸的是,slug 编译器将 this 作为此构建过程的早期部分:
删除未使用的文件,包括 .git 目录、.gitmodules 文件、 log 和 tmp 中的任何内容,以及顶级中指定的任何内容 .slugignore 文件。
...所以 Git 信息不再可用于我用来记录 Git 提交的 sbt-buildinfo 插件。
如何在 slug 中记录 HEAD 提交?是否有包含此信息的环境变量?
【问题讨论】:
-
您可以在 repo 中放置一个结帐后挂钩,将 id 记录在不会被删除的地方。要在克隆/初始化时自动获取它,请将其放入模板存储库中。
-
@jthill 我不确定我是否理解 - 克隆存储库时不会复制客户端挂钩,那么它们将如何进入 slug 编译器? git-scm.com/book/en/v2/… ...你的意思是“模板仓库”的特殊含义,除了它是应用程序代码所在的地方吗?
-
模板是 git 功能,当您执行
git init或git clone时,git 会从某个模板目录复制初始内容。例如,默认模板中包含示例挂钩。因此,无论创建那些 repos 的过程是 slug 编译器正在清理的,它也在对内容进行检查。使进程使用的 repo 模板具有您想要的结帐挂钩。 -
Heroku 总是跑在 master 的顶端。如果您
git pull然后在git reflog中找到顶部条目,您将获得提交 ID。 -
未经测试,但我认为您可以使用平台 api (devcenter.heroku.com/articles/platform-api-reference) 首先获取最新版本,从中获取 slug id。然后获取有关可以从中提取提交 ID 的 slug 的信息。
标签: git heroku cedar sbt-buildinfo