Ver código fonte

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 ano atrás
pai
commit
8a68f5dada
4 arquivos alterados com 181 adições e 10 exclusões
  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
 	@mix deps.get
 
 
 .PHONY: eunit
 .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
 .PHONY: proper
 proper: $(REBAR)
 proper: $(REBAR)

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

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

+ 177 - 4
mix.exs

@@ -34,9 +34,12 @@ defmodule EMQXUmbrella.MixProject do
     version = pkg_vsn()
     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),
       erlc_options: erlc_options(profile_info, version),
       version: version,
       version: version,
       deps: deps(profile_info, version),
       deps: deps(profile_info, version),
@@ -48,6 +51,10 @@ defmodule EMQXUmbrella.MixProject do
   defp deps(profile_info, version) do
   defp deps(profile_info, version) do
     # we need several overrides here because dependencies specify
     # we need several overrides here because dependencies specify
     # other exact versions, and not ranges.
     # 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() ++
     common_deps() ++
       [
       [
         {:lc, github: "emqx/lc", tag: "0.3.2", override: true},
         {: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},
         {:quickrand, github: "okeuday/quickrand", tag: "v2.0.6", override: true},
         {:ra, "2.7.3", override: true},
         {:ra, "2.7.3", override: true},
         {:mimerl, "1.2.0", 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
   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
   def emqx_app_system_env(profile_info, version) do
     erlc_options(profile_info, version)
     erlc_options(profile_info, version)
     |> dump_as_erl()
     |> dump_as_erl()