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

ci: temporarily revert mix release back to old version

This is so we may merge the huge PR as is and work on the fixes later with less conflicts.
Thales Macedo Garitezi 1 год назад
Родитель
Сommit
8a68f5dada
4 измененных файлов с 181 добавлено и 10 удалено
  1. 2 4
      Makefile
  2. 1 1
      lib/mix/tasks/emqx.eunit.ex
  3. 1 1
      lib/mix/tasks/emqx.proper.ex
  4. 177 4
      mix.exs

+ 2 - 4
Makefile

@@ -63,10 +63,8 @@ mix-deps-get: $(ELIXIR_COMMON_DEPS)
 	@mix deps.get
 
 .PHONY: eunit
-eunit: $(REBAR) ${ELIXIR_COMMON_DEPS} merge-config
-	# @$(REBAR) eunit --name eunit@127.0.0.1 -c -v --cover_export_name $(CT_COVER_EXPORT_PREFIX)-eunit
-	# TODO: cover compile
-	mix eunit
+eunit: $(REBAR) merge-config
+	@$(REBAR) eunit --name eunit@127.0.0.1 -c -v --cover_export_name $(CT_COVER_EXPORT_PREFIX)-eunit
 
 .PHONY: proper
 proper: $(REBAR)

+ 1 - 1
lib/mix/tasks/emqx.eunit.ex

@@ -1,7 +1,7 @@
 defmodule Mix.Tasks.Emqx.Eunit do
   use Mix.Task
 
-  Code.require_file("emqx.ct.ex", __DIR__)
+  # Code.require_file("emqx.ct.ex", __DIR__)
 
   alias Mix.Tasks.Emqx.Ct, as: ECt
 

+ 1 - 1
lib/mix/tasks/emqx.proper.ex

@@ -1,7 +1,7 @@
 defmodule Mix.Tasks.Emqx.Proper do
   use Mix.Task
 
-  Code.require_file("emqx.ct.ex", __DIR__)
+  # Code.require_file("emqx.ct.ex", __DIR__)
 
   alias Mix.Tasks.Emqx.Ct, as: ECt
 

+ 177 - 4
mix.exs

@@ -34,9 +34,12 @@ defmodule EMQXUmbrella.MixProject do
     version = pkg_vsn()
 
     [
-      # app: :emqx_mix,
-      apps_path: "apps",
-      apps: applications(profile_info.release_type, profile_info.edition_type) |> Keyword.keys(),
+      # TODO: these lines will be uncommented when we switch to using mix as the manager
+      # for all umbrella apps.
+      # apps_path: "apps",
+      # apps: applications(profile_info.release_type, profile_info.edition_type) |> Keyword.keys(),
+
+      app: :emqx_mix,
       erlc_options: erlc_options(profile_info, version),
       version: version,
       deps: deps(profile_info, version),
@@ -48,6 +51,10 @@ defmodule EMQXUmbrella.MixProject do
   defp deps(profile_info, version) do
     # we need several overrides here because dependencies specify
     # other exact versions, and not ranges.
+
+    ## TODO: this should be removed once we migrate the release build to mix
+    rebar3_umbrella_apps = emqx_apps(profile_info, version) ++ enterprise_deps(profile_info)
+
     common_deps() ++
       [
         {:lc, github: "emqx/lc", tag: "0.3.2", override: true},
@@ -118,9 +125,175 @@ defmodule EMQXUmbrella.MixProject do
         {:quickrand, github: "okeuday/quickrand", tag: "v2.0.6", override: true},
         {:ra, "2.7.3", override: true},
         {:mimerl, "1.2.0", override: true}
-      ] ++ jq_dep() ++ quicer_dep()
+      ] ++
+      jq_dep() ++
+      quicer_dep() ++ rebar3_umbrella_apps
+  end
+
+  ###############################################################################################
+  # BEGIN DEPRECATED FOR MIX BLOCK
+  # These should be removed once we fully migrate to mix
+  ###############################################################################################
+
+  defp emqx_apps(profile_info, version) do
+    apps = umbrella_apps(profile_info) ++ enterprise_apps(profile_info)
+    set_emqx_app_system_env(apps, profile_info, version)
   end
 
+  defp umbrella_apps(profile_info = %{release_type: release_type}) do
+    enterprise_apps = enterprise_umbrella_apps(release_type)
+    excluded_apps = excluded_apps(release_type)
+
+    "apps/*"
+    |> Path.wildcard()
+    |> Enum.map(fn path ->
+      app =
+        path
+        |> Path.basename()
+        |> String.to_atom()
+
+      {app, path: path, manager: :rebar3, override: true}
+    end)
+    |> Enum.reject(fn dep_spec ->
+      dep_spec
+      |> elem(0)
+      |> then(&MapSet.member?(enterprise_apps, &1))
+    end)
+    |> Enum.reject(fn {app, _} ->
+      case profile_info do
+        %{edition_type: :enterprise} ->
+          app == :emqx_telemetry
+
+        _ ->
+          false
+      end
+    end)
+    |> Enum.reject(fn {app, _} -> app in excluded_apps end)
+  end
+
+  defp enterprise_apps(_profile_info = %{release_type: release_type, edition_type: :enterprise}) do
+    Enum.map(enterprise_umbrella_apps(release_type), fn app_name ->
+      path = "apps/#{app_name}"
+      {app_name, path: path, manager: :rebar3, override: true}
+    end)
+  end
+
+  defp enterprise_apps(_profile_info) do
+    []
+  end
+
+  # need to remove those when listing `/apps/`...
+  defp enterprise_umbrella_apps(_release_type) do
+    MapSet.new([
+      :emqx_connector_aggregator,
+      :emqx_bridge_kafka,
+      :emqx_bridge_confluent,
+      :emqx_bridge_gcp_pubsub,
+      :emqx_bridge_cassandra,
+      :emqx_bridge_opents,
+      :emqx_bridge_dynamo,
+      :emqx_bridge_greptimedb,
+      :emqx_bridge_hstreamdb,
+      :emqx_bridge_influxdb,
+      :emqx_bridge_iotdb,
+      :emqx_bridge_es,
+      :emqx_bridge_matrix,
+      :emqx_bridge_mongodb,
+      :emqx_bridge_mysql,
+      :emqx_bridge_pgsql,
+      :emqx_bridge_redis,
+      :emqx_bridge_rocketmq,
+      :emqx_bridge_tdengine,
+      :emqx_bridge_timescale,
+      :emqx_bridge_sqlserver,
+      :emqx_bridge_pulsar,
+      :emqx_oracle,
+      :emqx_bridge_oracle,
+      :emqx_bridge_rabbitmq,
+      :emqx_bridge_clickhouse,
+      :emqx_ft,
+      :emqx_license,
+      :emqx_s3,
+      :emqx_bridge_s3,
+      :emqx_bridge_azure_blob_storage,
+      :emqx_schema_registry,
+      :emqx_schema_validation,
+      :emqx_message_transformation,
+      :emqx_enterprise,
+      :emqx_bridge_kinesis,
+      :emqx_bridge_azure_event_hub,
+      :emqx_gcp_device,
+      :emqx_dashboard_rbac,
+      :emqx_dashboard_sso,
+      :emqx_audit,
+      :emqx_gateway_gbt32960,
+      :emqx_gateway_ocpp,
+      :emqx_gateway_jt808,
+      :emqx_bridge_syskeeper,
+      :emqx_ds_shared_sub,
+      :emqx_auth_ext,
+      :emqx_cluster_link,
+      :emqx_ds_builtin_raft
+    ])
+  end
+
+  defp enterprise_deps(_profile_info = %{edition_type: :enterprise}) do
+    [
+      {:hstreamdb_erl,
+       github: "hstreamdb/hstreamdb_erl", tag: "0.5.18+v0.18.1+ezstd-v1.0.5-emqx1"},
+      {:influxdb, github: "emqx/influxdb-client-erl", tag: "1.1.13", override: true},
+      {:wolff, github: "kafka4beam/wolff", tag: "2.0.0"},
+      {:kafka_protocol, github: "kafka4beam/kafka_protocol", tag: "4.1.5", override: true},
+      {:brod_gssapi, github: "kafka4beam/brod_gssapi", tag: "v0.1.1"},
+      {:brod, github: "kafka4beam/brod", tag: "3.18.0"},
+      {:snappyer, "1.2.9", override: true},
+      {:crc32cer, "0.1.8", override: true},
+      {:opentsdb, github: "emqx/opentsdb-client-erl", tag: "v0.5.1", override: true},
+      {:greptimedb,
+       github: "GreptimeTeam/greptimedb-ingester-erl", tag: "v0.1.8", override: true},
+      # The following two are dependencies of rabbit_common. They are needed here to
+      # make mix not complain about conflicting versions
+      {:thoas, github: "emqx/thoas", tag: "v1.0.0", override: true},
+      {:credentials_obfuscation,
+       github: "emqx/credentials-obfuscation", tag: "v3.2.0", override: true},
+      {:rabbit_common,
+       github: "emqx/rabbitmq-server",
+       tag: "v3.11.13.2",
+       sparse: "deps/rabbit_common",
+       override: true},
+      {:amqp_client,
+       github: "emqx/rabbitmq-server",
+       tag: "v3.11.13.2",
+       sparse: "deps/amqp_client",
+       override: true}
+    ]
+  end
+
+  defp enterprise_deps(_profile_info) do
+    []
+  end
+
+  defp set_emqx_app_system_env(apps, profile_info, version) do
+    system_env = emqx_app_system_env(profile_info, version) ++ maybe_no_quic_env()
+
+    Enum.map(
+      apps,
+      fn {app, opts} ->
+        {app,
+         Keyword.update(
+           opts,
+           :system_env,
+           system_env,
+           &Keyword.merge(&1, system_env)
+         )}
+      end
+    )
+  end
+
+  ###############################################################################################
+  # END DEPRECATED FOR MIX BLOCK
+  ###############################################################################################
+
   def emqx_app_system_env(profile_info, version) do
     erlc_options(profile_info, version)
     |> dump_as_erl()