gpt4 book ai didi

ruby-on-rails - heroku 控制台显示来自 git 部署的最新 sha 哈希

转载 作者:太空狗 更新时间:2023-10-29 12:57:34 24 4
gpt4 key购买 nike

我在 Heroku 上托管了一个开发分支,我们有几个人使用这个分支来查找错误,最好显示 Heroku 上最新部署的提交的 SHA-1 哈希,以便我们知道哪些错误属于哪个提交。

但是我根本找不到任何方法来找到这些信息。 heroku 运行控制台中的 ENV 变量中没有任何内容。尽管“heroku releases”确实显示了部署信息列表,包括 SHA-1 哈希的前几个字符,这让我认为 Heroku 必须将其存储在某个地方,但我就是找不到位置。有人知道吗?

我意识到我并没有像我应该的那样清楚地提出这个问题:我打算在 Heroku 上的 Rails 中找到 SHA-1 哈希。就像我可以做这样的事情一样:

<h1><%= ENV['REV']</h1>

谢谢!

最佳答案

像对待任何其他远程 Git 存储库一样对待 Heroku - 你可以使用 git ls-remote :

git ls-remote heroku

(heroku 这里是远程名称)

更新:

由于 OP 实际上希望在 Ruby 环境中获取 SHA,一种可能的方法是使用 custom buildpack .

要开始,请转到 Heroku's 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 变量。

接下来,找到 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 用户名,所以你指向你的 fork 仓库。

最后,执行最后一个启用 Heroku labs feature 的命令允许 slug 编译器访问用户变量:

heroku labs:enable user_env_compile

现在你应该准备好了。那么现在到底发生了什么?那么,当您推送到 Heroku 时,Heroku 将收到更改,然后会看到您设置了自定义构建包 url。因此它将从 GitHub 获取您的自定义构建包,然后使用它来创建 slug。这意味着一旦它运行完所有默认的编译命令,它就会以你的 get_sha 结束。方法,它应该设置 ENV var SHA到适当的 SHA。现在,您应该可以从 Ruby 中访问该 ENV 变量,以按照您的意愿进行操作。

关于ruby-on-rails - heroku 控制台显示来自 git 部署的最新 sha 哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10973341/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com