我目前有一个基于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}
]}.
Makefile:
...
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
您可以使用dynamic configuration制作rebar.config.script
。它将为您提供一个Erlang脚本,您可以在其中更新或添加rebar.config
中的术语。您可以在Github上搜索rebar.config.script
以查找示例。我找到了一个here。