Просмотр исходного кода

Merge pull request #4299 from zmstone/chore-build-refine-build-scripts

chore(build) add more enterprise build support
Zaiming Shi 5 лет назад
Родитель
Сommit
cf169661e5
4 измененных файлов с 46 добавлено и 35 удалено
  1. 8 1
      include/emqx_release.hrl
  2. 7 1
      pkg-vsn.sh
  3. 25 31
      rebar.config.erl
  4. 6 2
      src/emqx_app.erl

+ 8 - 1
include/emqx_release.hrl

@@ -27,6 +27,13 @@
 
 %% NOTE: This version number should be manually bumped for each release
 
--define(EMQX_RELEASE, "4.3-beta.1").
+-ifndef(EMQX_ENTERPRISE).
+
+-define(EMQX_RELEASE, {opensource, "4.3-beta.1"}).
+
+-else.
+
+
+-endif.
 
 -endif.

+ 7 - 1
pkg-vsn.sh

@@ -6,7 +6,13 @@ set -euo pipefail
 # ensure dir
 cd -P -- "$(dirname -- "$0")"
 
-RELEASE="$(grep -E 'define.+EMQX_RELEASE,' include/emqx_release.hrl | cut -d '"' -f2)"
+if [ -f EMQX_ENTERPRISE ]; then
+    EDITION='enterprise'
+else
+    EDITION='opensource'
+fi
+
+RELEASE="$(grep -E "define.+EMQX_RELEASE.+${EDITION}" include/emqx_release.hrl | cut -d '"' -f2)"
 
 if [ -d .git ] && ! git describe --tags --match "${RELEASE}" --exact >/dev/null 2>&1; then
     SUFFIX="-$(git rev-parse HEAD | cut -b1-8)"

+ 25 - 31
rebar.config.erl

@@ -102,17 +102,18 @@ test_compile_opts() ->
     ].
 
 profiles() ->
+    Vsn = get_vsn(),
     [ {'emqx',          [ {erl_opts, prod_compile_opts()}
-                        , {relx, relx('emqx')}
+                        , {relx, relx(Vsn, cloud, bin)}
                         ]}
     , {'emqx-pkg',      [ {erl_opts, prod_compile_opts()}
-                        , {relx, relx('emqx-pkg')}
+                        , {relx, relx(Vsn, cloud, pkg)}
                         ]}
     , {'emqx-edge',     [ {erl_opts, prod_compile_opts()}
-                        , {relx, relx('emqx-edge')}
+                        , {relx, relx(Vsn, edge, bin)}
                         ]}
     , {'emqx-edge-pkg', [ {erl_opts, prod_compile_opts()}
-                        , {relx, relx('emqx-edge-pkg')}
+                        , {relx, relx(Vsn, edge, pkg)}
                         ]}
     , {check,           [ {erl_opts, test_compile_opts()}
                         ]}
@@ -121,41 +122,30 @@ profiles() ->
                         , {erl_opts, test_compile_opts() ++ erl_opts_i()}
                         , {extra_src_dirs, [{"test", [{recursive,true}]}]}
                         ]}
-    ].
+    ] ++ ee_profiles(Vsn).
 
-relx(Profile) ->
-    Vsn = get_vsn(),
+%% RelType: cloud (full size) | edge (slim size)
+%% PkgType: bin | pkg
+relx(Vsn, RelType, PkgType) ->
     [ {include_src,false}
     , {include_erts, true}
     , {extended_start_script,false}
     , {generate_start_script,false}
     , {sys_config,false}
     , {vm_args,false}
-    ] ++ do_relx(Profile, Vsn).
-
-do_relx('emqx', Vsn) ->
-    [ {release, {emqx, Vsn}, relx_apps(cloud)}
-    , {overlay, relx_overlay(cloud)}
-    , {overlay_vars, overlay_vars(["vars/vars-cloud.config","vars/vars-bin.config"])}
-    ];
-do_relx('emqx-pkg', Vsn) ->
-    [ {release, {emqx, Vsn}, relx_apps(cloud)}
-    , {overlay, relx_overlay(cloud)}
-    , {overlay_vars, overlay_vars(["vars/vars-cloud.config","vars/vars-pkg.config"])}
-    ];
-do_relx('emqx-edge', Vsn) ->
-    [ {release, {emqx, Vsn}, relx_apps(edge)}
-    , {overlay, relx_overlay(edge)}
-    , {overlay_vars, overlay_vars(["vars/vars-edge.config","vars/vars-bin.config"])}
-    ];
-do_relx('emqx-edge-pkg', Vsn) ->
-    [ {release, {emqx, Vsn}, relx_apps(edge)}
-    , {overlay, relx_overlay(edge)}
-    , {overlay_vars, overlay_vars(["vars/vars-edge.config","vars/vars-pkg.config"])}
+    , {release, {emqx, Vsn}, relx_apps(RelType)}
+    , {overlay, relx_overlay(RelType)}
+    , {overlay_vars, [ {built_on_arch, rebar_utils:get_arch()}
+                     , overlay_vars_rel(RelType)
+                     , overlay_vars_pkg(PkgType)
+                     ]}
     ].
 
-overlay_vars(Files) ->
-    [{built_on_arch, rebar_utils:get_arch()} | Files].
+overlay_vars_rel(cloud) -> "vars/vars-cloud.config";
+overlay_vars_rel(edge) -> "vars/vars-edge.config".
+
+overlay_vars_pkg(bin) -> "vars/vars-bin.config";
+overlay_vars_pkg(pkg) -> "vars/vars-pkg.config".
 
 relx_apps(ReleaseType) ->
     [ kernel
@@ -204,9 +194,9 @@ relx_plugin_apps(ReleaseType) ->
     , emqx_recon
     , emqx_rule_engine
     , emqx_sasl
-    , emqx_telemetry
     , emqx_modules
     ]
+    ++ [emqx_telemetry || not is_enterprise()]
     ++ relx_plugin_apps_per_rel(ReleaseType)
     ++ relx_plugin_apps_enterprise(is_enterprise())
     ++ relx_plugin_apps_extra().
@@ -400,3 +390,7 @@ coveralls() ->
 list_dir(Dir) ->
     {ok, Names} = file:list_dir(Dir),
     [list_to_atom(Name) || Name <- Names, filelib:is_dir(filename:join([Dir, Name]))].
+
+%% ==== Enterprise supports below ==================================================================
+
+ee_profiles(_Vsn) -> [].

+ 6 - 2
src/emqx_app.erl

@@ -64,16 +64,20 @@ print_vsn() ->
 
 -ifdef(TEST).
 %% When testing, the 'cover' compiler stripps aways compile info
-get_release() -> ?EMQX_RELEASE.
+get_release() -> release_in_macro().
 -else.
 %% Otherwise print the build number,
 %% which may have a git commit in its suffix.
 get_release() ->
     {_, Vsn} = lists:keyfind(emqx_vsn, 1, ?MODULE:module_info(compile)),
-    ?EMQX_RELEASE ++ _ = Vsn, %% assert
+    VsnStr = release_in_macro(),
+    1 = string:str(Vsn, VsnStr), %% assert
     Vsn.
 -endif.
 
+release_in_macro() ->
+    element(2, ?EMQX_RELEASE).
+
 %%--------------------------------------------------------------------
 %% Autocluster
 %%--------------------------------------------------------------------