首页 > 解决方案 > 在应用程序中获取 elixir mix 发布版本

问题描述

我有以下 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

我想在我的应用程序中输出发布版本。我见过这个问题,在 elixir 应用程序中访问项目版本,但所有答案都返回“0.1.0”,即“project.version”

如果我使用 运行我的版本_build/../app version,它会返回正确的值,因此它能够获取 git 哈希并设置键值,但该值会被写入version命令的文件中。

我只是不知道如何“在运行时”获取它。这可能吗?我认为该版本可能会覆盖以前的键值,但我猜它们是不同的?

标签: elixirelixir-mix

解决方案


据我所知,发布版本不包含在梁文件中,它纯粹是由发布脚本处理的元数据。我不相信有一种内置的方式来查找发布版本。但是,脚本将版本导出到RELEASE_VSN,因此您可以使用它。

System.get_env("RELEASE_VSN")

这记录在文档的环境变量部分中mix release

  • RELEASE_VSN- 发布的版本,否则使用最新版本。调用发布时可以将其设置为自定义值。releases/自定义值必须是目录中现有的发布版本

推荐阅读