从Heroku应用程序中访问当前git提交号
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从Heroku应用程序中访问当前git提交号相关的知识,希望对你有一定的参考价值。
我知道slug compiler在创建一个heroku slug时删除了.git
目录,但有没有办法配置Heroku以便我可以从我的脚本中访问当前运行的git提交编号?
我希望能够在我的sinatra应用程序(在Heroku中运行)上有一个小链接,上面写着“运行version e72fb274a0”(或类似的东西)。如何检索它,或强制slug编译器将其添加到环境变量?
进展:
我认为最好的方法是在删除.git目录之前创建一个自定义buildpack,它将git commit版本号写入heroku slug。
我试图这样做(见my fork of the ruby buildpack),但我添加的行 - line 23 - 似乎没有做这项工作。 Heroku看到并使用新的buildpack,但似乎没有将文件写入slug。
任何人都知道为什么我的自定义buildpack没有按预期工作?
谢谢,
J.P
您可以在部署之前运行存储此信息的脚本(可能在YAML上)
使用这些a =`ls`(注意不是''撇号'标志是'“反向”标志) 一个变量将具有此bash命令的结果, 所以你可以做git =`git log`,然后找到你想要的信息并存储它。所以你以后可以检索它。
这有帮助吗?
几个选项......
SOURCE_VERSION
environment variable (build-time)
自2015年4月1日起,有一个SOURCE_VERSION
环境变量可用于在Heroku上运行的构建。对于git推送的构建,这是正在构建的源的git commit SHA-1:
https://devcenter.heroku.com/changelog-items/630
(感谢@srtech为pointing that out!)
一个example of me using that variable in a build - 如果你看看已部署的应用程序提供的html,你会看到提交ID即将发布在最底层的HTML注释中:https://gu-who.herokuapp.com/
/etc/heroku/dyno
metadata file (run-time)
Heroku具有beta功能,可以在运行的dyno上写出/etc/heroku/dyno
元数据文件。如果您通过电子邮件发送支持,则可能会添加到测试版。这是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
}
}
..所以release.commit
是你追求的领域。我曾经使用过这种方法,直到SOURCE_VERSION
变量可用。
在2018年,这就是你想要的:https://devcenter.heroku.com/articles/dyno-metadata
heroku labs:enable runtime-dyno-metadata -a <app name>
以上是关于从Heroku应用程序中访问当前git提交号的主要内容,如果未能解决你的问题,请参考以下文章
你能以编程方式访问当前的 Heroku dyno id/name 吗?
GitIntelliJ IDEA 提交代码到 GitCode 远程仓库 ( GitCode 创建远程仓库 | 将本地工程推送到 GitCode 远程仓库 | 验证权限 | 生成个人访问令牌 )(代码片