Rob*_*ley 6 git heroku cedar sbt-buildinfo
我想我的Heroku应用程序(Play/Scala,在Heroku Cedar上运行)的运行时能够向我报告它是从哪个git提交的.Heroku应用程序通常由Heroku基础架构上的slug编译器构建 - 不幸的是,slug编译器将此作为此构建过程的早期部分:
删除未使用的文件,包括.git目录,.gitmodules文件,log和tmp中的任何内容,以及顶级.slugignore文件中指定的任何内容.
...所以Git信息不再可用于sbt-buildinfo我用于记录Git提交的插件.
如何在slug中记录HEAD提交?这些信息是否有可用的环境变量?
三种不同的选择,最好的优先...
SOURCE_VERSION环境变量(构建时间)从2015年4月1日开始,有一个SOURCE_VERSION环境变量可用于在Heroku上运行的构建。对于git-push构建,这是正在构建的源的git commit SHA-1:
https://devcenter.heroku.com/changelog-items/630
(感谢@srtech 指出这一点!)
/etc/heroku/dyno元数据文件(运行时)Heroku具有beta功能,可以将/etc/heroku/dyno元数据文件写到正在运行的dyno上。如果您通过电子邮件发送支持,则可能会添加到Beta中。这是Heroku自己使用的地方:
https://github.com/heroku/fix/blob/6c8ab7a/lib/heroku_dyno_metadata.rb
内容如下所示:
{
"dyno":{
"physical_id":"161bfad9-9e83-40b7-b385-78305db2f168",
"size":1,
"name":"run.7145"
},
"app":{
"id":null
},
"release":{
"id":50,
"commit":"2c3a0b24069af49b3de35b8e8c26765c1dba9ff0",
"description":null
}
}
Run Code Online (Sandbox Code Playgroud)
..so release.commit是您追求的领域。
sbt-heroku在本地构建块我最初的解决方案是使用sbt-herokuHeroku自己发布的插件。这意味着不再通过git push(在Heroku自己的基础架构上编译了Slug)进行部署,而是在本地编译该Slug 并将其直接上传到Heroku。因为slug是本地编译的,所以在我的工作仓库中,Git信息就在那里,并且构建过程可以轻松识别提交ID并将其嵌入到应用程序的代码中。
子块的大小比Git差异大得多(90MB与0.5KB),但除此之外,该解决方案的效果还不错。我实际上是在使用Travis进行连续部署,因此Travis sbt stage deployHeroku为我做了(Git提交ID在构建时可以在该环境中使用),这意味着我可以在移动中从笔记本电脑上推入,Travis可以大块上传到Heroku。
| 归档时间: |
|
| 查看次数: |
853 次 |
| 最近记录: |