像对待任何其他远程 Git 存储库一样对待 Heroku - 你可以使用git ls-remote
:
git ls-remote heroku
(heroku
这里是远程名称)
更新:
由于 OP 实际上希望在 Ruby 环境中获取 SHA,因此一种可能的方法是使用自定义 buildpack。
要开始使用,请前往Heroku 的 Ruby Buildpack并对其进行 fork,以便您可以制作自己的变体。现在克隆你的 fork 并查看lib/language_pack/ruby.rb
. 添加一个新方法,例如:
def get_SHA
#get SHA
#save SHA to ENV, ala: ENV['SHA'] = retrieved_sha
end
如何获得 SHA 取决于您。您可以执行 git 命令并使用返回的内容:
git log -1 --format="%H"
或者您可以使用@avaynshtok 的建议并使用 Heroku gem 来使用该releases
方法。
然后,一旦有了 SHA,将其设置为 ENV var。
接下来,在 中找到compile
方法ruby.rb
,并将get_sha
方法添加到它的末尾:
def compile
Dir.chdir(build_path)
install_ruby
setup_language_pack_environment
allow_git do
install_language_pack_gems
build_bundler
create_database_yml
install_binaries
run_assets_precompile_rake_task
get_sha #your additional method
end
end
将您的更改推送回 GitHub,然后转到命令行。您需要向 Heroku 应用程序添加一个新的配置变量:
heroku config:add BUILDPACK_URL=git@github.com:<your GitHub username>/heroku-buildpack-ruby.git
请注意,您需要确保已替换<your GitHub username>
为...嗯,您的 GitHub 用户名,因此您指向的是您的分叉存储库。
最后,执行最后一个命令来启用Heroku 实验室功能,该功能允许 slug 编译器访问用户变量:
heroku labs:enable user_env_compile
现在你应该准备好了。那么现在到底发生了什么?好吧,当您推送到 Heroku 时,Heroku 将收到更改,然后看到您设置了自定义 buildpack url。所以它会从 GitHub 获取你的自定义 buildpack,然后使用它来创建 slug。这意味着一旦它运行完所有默认编译命令,它将以您的get_sha
方法结束,该方法应将 ENV var 设置SHA
为适当的 SHA。现在您应该可以从 Ruby 中访问该 ENV 变量,以按照您的意愿进行操作。