在应用程序中获取 elixir mix 发布版本
Get elixir mix release version in application
我有以下mix.exs
defmodule App.MixProject do
use Mix.Project
@version "0.1.0"
def git_ref(), do: System.get_git_hash()
def project do
[
app: :app,
version: @version,
...
releases: [
app: fn ->
[version: @version <> "+" <> git_ref()]
end
]
]
end
end
我想在我的应用程序中输出 release 版本。我看过这个问题, 但所有答案 return“0.1.0”,即“project.version”
如果我 运行 我的版本 _build/../app version
,它 return 是正确的值,所以它能够获得 git 散列并设置键值, 但是该值被写到 version
命令的文件中。
我只是不知道如何在“运行时间”获得它。这可能吗?我以为版本可能会覆盖以前的键值,但我猜它们是不同的?
据我所知,发布版本不包含在 beam 文件中,它是由发布脚本处理的纯元数据。我不相信有一种内置的方法来查找发行版本。但是,脚本exports the version to RELEASE_VSN
,所以你可以使用它。
System.get_env("RELEASE_VSN")
这记录在 mix release
文档的 Environment variables 部分:
RELEASE_VSN
- the version of the release, otherwise the latest version is used. It can be set to a custom value when invoking the
release. The custom value must be an existing release version in the
releases/
directory
我有以下mix.exs
defmodule App.MixProject do
use Mix.Project
@version "0.1.0"
def git_ref(), do: System.get_git_hash()
def project do
[
app: :app,
version: @version,
...
releases: [
app: fn ->
[version: @version <> "+" <> git_ref()]
end
]
]
end
end
我想在我的应用程序中输出 release 版本。我看过这个问题,
如果我 运行 我的版本 _build/../app version
,它 return 是正确的值,所以它能够获得 git 散列并设置键值, 但是该值被写到 version
命令的文件中。
我只是不知道如何在“运行时间”获得它。这可能吗?我以为版本可能会覆盖以前的键值,但我猜它们是不同的?
据我所知,发布版本不包含在 beam 文件中,它是由发布脚本处理的纯元数据。我不相信有一种内置的方法来查找发行版本。但是,脚本exports the version to RELEASE_VSN
,所以你可以使用它。
System.get_env("RELEASE_VSN")
这记录在 mix release
文档的 Environment variables 部分:
RELEASE_VSN
- the version of the release, otherwise the latest version is used. It can be set to a custom value when invoking the release. The custom value must be an existing release version in thereleases/
directory