如何在rebar3中使用OS环境变量

时间:2016-09-10 12:34:06

标签: makefile erlang relx rebar3

我目前有一个基于rebar3的erlang应用程序,它包含一个erlang后端和一个javascript前端。要组合前端和后端构建系统,我使用makefile。我的rebar.config看起来像这样:

rebar.config

...
{relx, [{release, {pgserver_dev, "0.1.0"},[pgserver]}
       ]},
       {dev_mode, true},
       {include_erts, false},
       {extended_start_script, true}
]}.

生成文件

...
release:
    @echo "creating release"
    rebar3 release
    ln -sf _build/$(PROFILE)/rel/$(APP)_dev/bin/$(APP)_dev /.run-$(APP)-$(PROFILE)

我想在 rebar.config 文件中使用环境变量来控制参数,例如:创建发布时的版本 - {pgserver_dev, "0.1.0"}。如果我指定一个变量:VERSION,那么构建可能如下所示:

rebar.config

...
{relx, [{release, {pgserver_dev, os:getenv("VERSION")},[pgserver]}
       ]},
       {dev_mode, true},
       {include_erts, false},
       {extended_start_script, true}
]}.

那么,是否可以在relx / rebar3中使用linux环境变量?

P.S。:os:getenv()不可能,构建失败:

===> Error reading file rebar.config: 15: bad term

1 个答案:

答案 0 :(得分:0)

您可以使用rebar.config.script来制作dynamic configuration。它将为您提供一个Erlang脚本,您可以在其中更新或添加rebar.config中的术语。您可以在Github上搜索rebar.config.script来查找示例。我发现了一个here