From 115397523d1b21542e5b368ba2d775484171f503 Mon Sep 17 00:00:00 2001 From: turtleDeng Date: Mon, 8 Mar 2021 20:47:31 +0800 Subject: [PATCH] chore(build): add more enterprise build support (#4302) --- bin/emqx | 7 ++- data/emqx_vars | 1 + data/loaded_plugins.tmpl | 7 +-- lib-ce/emqx_dashboard/src/emqx_dashboard.erl | 4 +- rebar.config.erl | 45 ++++++++++---------- vars/vars-cloud.config | 4 ++ vars/vars-edge.config | 4 ++ 7 files changed, 45 insertions(+), 27 deletions(-) diff --git a/bin/emqx b/bin/emqx index 3d5900ef7..43cc89b44 100755 --- a/bin/emqx +++ b/bin/emqx @@ -209,7 +209,12 @@ generate_config() { # the vm, we need to pass it in twice. CONFIG_ARGS=" -config $RUNNER_ETC_DIR/app.config -args_file $RUNNER_ETC_DIR/vm.args -vm_args $RUNNER_ETC_DIR/vm.args " else - CONFIG_ARGS=$("$ERTS_PATH"/escript "$RUNNER_ROOT_DIR"/bin/cuttlefish -i "$REL_DIR"/emqx.schema -c "$RUNNER_ETC_DIR"/emqx.conf -d "$RUNNER_DATA_DIR"/configs generate) + EMQX_LICENSE_CONF_OPTION="" + if [ "${EMQX_LICENSE_CONF:-}" != "" ]; then + EMQX_LICENSE_CONF_OPTION="-i ${EMQX_LICENSE_CONF}" + fi + # shellcheck disable=SC2086 + CONFIG_ARGS=$("$ERTS_PATH"/escript "$RUNNER_ROOT_DIR"/bin/cuttlefish -i "$REL_DIR"/emqx.schema $EMQX_LICENSE_CONF_OPTION -c "$RUNNER_ETC_DIR"/emqx.conf -d "$RUNNER_DATA_DIR"/configs generate) ## Merge cuttlefish generated *.args into the vm.args CUTTLE_GEN_ARG_FILE=$(echo "$CONFIG_ARGS" | sed -n 's/^.*\(vm_args[[:space:]]\)//p' | awk '{print $1}') diff --git a/data/emqx_vars b/data/emqx_vars index 5159fa246..55fcec04d 100644 --- a/data/emqx_vars +++ b/data/emqx_vars @@ -16,6 +16,7 @@ RUNNER_USER="{{ runner_user }}" EMQX_DISCR="{{ emqx_description }}" LIB_EKKA_DIR="${RUNNER_LIB_DIR}/ekka-$(grep ekka "${RUNNER_ROOT_DIR}/releases/RELEASES" | awk -F '\"' '{print $2}')" +EMQX_LICENSE_CONF='' ## computed vars REL_NAME="emqx" ERTS_PATH="$RUNNER_ROOT_DIR/erts-$ERTS_VSN/bin" diff --git a/data/loaded_plugins.tmpl b/data/loaded_plugins.tmpl index 6fde9cace..d0dac7fe1 100644 --- a/data/loaded_plugins.tmpl +++ b/data/loaded_plugins.tmpl @@ -1,7 +1,8 @@ {emqx_management, true}. -{emqx_recon, true}. -{emqx_retainer, true}. {emqx_dashboard, true}. -{emqx_telemetry, true}. +{emqx_modules, {{enable_plugin_emqx_modules}}}. +{emqx_recon, {{enable_plugin_emqx_recon}}}. +{emqx_retainer, {{enable_plugin_emqx_retainer}}}. +{emqx_telemetry, {{enable_plugin_emqx_telemetry}}}. {emqx_rule_engine, {{enable_plugin_emqx_rule_engine}}}. {emqx_bridge_mqtt, {{enable_plugin_emqx_bridge_mqtt}}}. diff --git a/lib-ce/emqx_dashboard/src/emqx_dashboard.erl b/lib-ce/emqx_dashboard/src/emqx_dashboard.erl index cbf0d81d5..a2ba1f125 100644 --- a/lib-ce/emqx_dashboard/src/emqx_dashboard.erl +++ b/lib-ce/emqx_dashboard/src/emqx_dashboard.erl @@ -87,7 +87,8 @@ listener_name(Proto) -> http_handlers() -> Plugins = lists:map(fun(Plugin) -> Plugin#plugin.name end, emqx_plugins:list()), [{"/api/v4/", - minirest:handler(#{apps => Plugins, filter => fun ?MODULE:filter/1}), + minirest:handler(#{apps => Plugins ++ [emqx_modules], + filter => fun ?MODULE:filter/1}), [{authorization, fun ?MODULE:is_authorized/1}]}]. %%-------------------------------------------------------------------- @@ -113,6 +114,7 @@ is_authorized(_Path, Req) -> _ -> false end. +filter(#{app := emqx_modules}) -> true; filter(#{app := App}) -> case emqx_plugins:find_plugin(App) of false -> false; diff --git a/rebar.config.erl b/rebar.config.erl index aa59567e7..56949a409 100644 --- a/rebar.config.erl +++ b/rebar.config.erl @@ -164,8 +164,9 @@ relx_apps(ReleaseType) -> , {mnesia, load} , {ekka, load} , {emqx_plugin_libs, load} - , emqx_modules ] + ++ [emqx_modules || not is_enterprise()] + ++ [emqx_license || is_enterprise()] ++ [bcrypt || provide_bcrypt_release(ReleaseType)] ++ relx_apps_per_rel(ReleaseType) ++ [{N, load} || N <- relx_plugin_apps(ReleaseType)]. @@ -194,7 +195,6 @@ relx_plugin_apps(ReleaseType) -> , emqx_recon , emqx_rule_engine , emqx_sasl - , emqx_modules ] ++ [emqx_telemetry || not is_enterprise()] ++ relx_plugin_apps_per_rel(ReleaseType) @@ -225,28 +225,28 @@ relx_plugin_apps_extra() -> [Plugin || {Plugin, _} <- extra_deps()]. relx_overlay(ReleaseType) -> - [ {mkdir,"log/"} - , {mkdir,"data/"} - , {mkdir,"data/mnesia"} - , {mkdir,"data/configs"} - , {mkdir,"data/scripts"} + [ {mkdir, "log/"} + , {mkdir, "data/"} + , {mkdir, "data/mnesia"} + , {mkdir, "data/configs"} + , {mkdir, "data/scripts"} , {template, "data/loaded_plugins.tmpl", "data/loaded_plugins"} , {template, "data/loaded_modules.tmpl", "data/loaded_modules"} - , {template,"data/emqx_vars","releases/emqx_vars"} - , {copy,"bin/emqx","bin/emqx"} - , {copy,"bin/emqx_ctl","bin/emqx_ctl"} - , {copy,"bin/install_upgrade.escript", "bin/install_upgrade.escript"} - , {copy,"bin/emqx","bin/emqx-{{release_version}}"} %% for relup - , {copy,"bin/emqx_ctl","bin/emqx_ctl-{{release_version}}"} %% for relup - , {copy,"bin/install_upgrade.escript", "bin/install_upgrade.escript-{{release_version}}"} %% for relup - , {template,"bin/emqx.cmd","bin/emqx.cmd"} - , {template,"bin/emqx_ctl.cmd","bin/emqx_ctl.cmd"} - , {copy,"bin/nodetool","bin/nodetool"} - , {copy,"bin/nodetool","bin/nodetool-{{release_version}}"} - , {copy,"_build/default/lib/cuttlefish/cuttlefish","bin/cuttlefish"} - , {copy,"_build/default/lib/cuttlefish/cuttlefish","bin/cuttlefish-{{release_version}}"} - , {copy,"priv/emqx.schema","releases/{{release_version}}/"} - ] ++ etc_overlay(ReleaseType). + , {template, "data/emqx_vars", "releases/emqx_vars"} + , {copy, "bin/emqx", "bin/emqx"} + , {copy, "bin/emqx_ctl", "bin/emqx_ctl"} + , {copy, "bin/install_upgrade.escript", "bin/install_upgrade.escript"} + , {copy, "bin/emqx", "bin/emqx-{{release_version}}"} %% for relup + , {copy, "bin/emqx_ctl", "bin/emqx_ctl-{{release_version}}"} %% for relup + , {copy, "bin/install_upgrade.escript", "bin/install_upgrade.escript-{{release_version}}"} %% for relup + , {template, "bin/emqx.cmd", "bin/emqx.cmd"} + , {template, "bin/emqx_ctl.cmd", "bin/emqx_ctl.cmd"} + , {copy, "bin/nodetool", "bin/nodetool"} + , {copy, "bin/nodetool", "bin/nodetool-{{release_version}}"} + , {copy, "_build/default/lib/cuttlefish/cuttlefish", "bin/cuttlefish"} + , {copy, "_build/default/lib/cuttlefish/cuttlefish", "bin/cuttlefish-{{release_version}}"} + , {copy, "priv/emqx.schema", "releases/{{release_version}}/"} + ] ++ ee_etc_overlay() ++ etc_overlay(ReleaseType). etc_overlay(ReleaseType) -> PluginApps = relx_plugin_apps(ReleaseType), @@ -394,3 +394,4 @@ list_dir(Dir) -> %% ==== Enterprise supports below ================================================================== ee_profiles(_Vsn) -> []. +ee_etc_overlay() -> []. diff --git a/vars/vars-cloud.config b/vars/vars-cloud.config index 266ef717c..8362bcf56 100644 --- a/vars/vars-cloud.config +++ b/vars/vars-cloud.config @@ -1,4 +1,8 @@ {enable_plugin_emqx_rule_engine, true}. {enable_plugin_emqx_bridge_mqtt, false}. +{enable_plugin_emqx_modules, false}. +{enable_plugin_emqx_recon, true}. +{enable_plugin_emqx_retainer, true}. +{enable_plugin_emqx_telemetry, true}. {vm_args_file, "vm.args"}. {emqx_description, "EMQ X Broker"}. \ No newline at end of file diff --git a/vars/vars-edge.config b/vars/vars-edge.config index 9b1d76401..bc36db504 100644 --- a/vars/vars-edge.config +++ b/vars/vars-edge.config @@ -1,4 +1,8 @@ {enable_plugin_emqx_rule_engine, false}. {enable_plugin_emqx_bridge_mqtt, true}. +{enable_plugin_emqx_modules, false}. +{enable_plugin_emqx_recon, true}. +{enable_plugin_emqx_retainer, true}. +{enable_plugin_emqx_telemetry, true}. {vm_args_file, "vm.args.edge"}. {emqx_description, "EMQ X Edge"}.