bitwalker/distillery

Distillery 2.12 builds and deploy umbrella app even though it is not in the `application` list in the release

froy001 opened this issue · 6 comments

Steps to reproduce

Just a brief list of the steps required to produce the issue.

Verbose Logs

Paste the output of the release command you ran with the --verbose flag
below in the summary tags (this helps keep the issue easy to navigate):

 ---> ebdf62025107
Step 12/26 : RUN mix release --name=iot_system --env=prod --verbose
 ---> Running in a699ba80dba6
==> Loading configuration..
warning: found quoted keyword "setup_db" but the quotes are not required. Note that keywords are always atoms, even when quoted, and quotes should only be used to introduce keywords with foreign characters in them
  nofile:62

warning: found quoted keyword "seed" but the quotes are not required. Note that keywords are always atoms, even when quoted, and quotes should only be used to introduce keywords with foreign characters in them
  nofile:63

==> Assembling release..
==> Building release iot_system:0.61.4 using environment prod
==> Discovered applications:
  > plug_crypto-1.0.0
  |
  |  from: _build/prod/lib/plug_crypto
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :crypto
  |  includes: none
  |_____

  > kernel-6.1.1
  |
  |  from: /usr/local/lib/erlang/lib/kernel-6.1.1
  |  applications: none
  |  includes: none
  |_____

  > mime-1.3.0
  |
  |  from: _build/prod/lib/mime
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :logger
  |  includes: none
  |_____

  > plug-1.7.1
  |
  |  from: _build/prod/lib/plug
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :logger
  |      :mime
  |      :plug_crypto
  |  includes: none
  |_____

  > plug_cowboy-1.0.0
  |
  |  from: _build/prod/lib/plug_cowboy
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :logger
  |      :cowboy
  |      :plug
  |  includes: none
  |_____

  > canary-1.1.1
  |
  |  from: _build/prod/lib/canary
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :logger
  |  includes: none
  |_____

  > cors_plug-1.5.2
  |
  |  from: _build/prod/lib/cors_plug
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :logger
  |  includes: none
  |_____

  > guardian_db-1.1.0
  |
  |  from: _build/prod/lib/guardian_db
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :logger
  |      :ecto
  |      :guardian
  |  includes: none
  |_____

  > phoenix_html-2.12.0
  |
  |  from: _build/prod/lib/phoenix_html
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :logger
  |      :plug
  |  includes: none
  |_____

  > inets-7.0.2
  |
  |  from: /usr/local/lib/erlang/lib/inets-7.0.2
  |  applications:
  |      :kernel
  |      :stdlib
  |  includes: none
  |_____

  > tesla-0.10.0
  |
  |  from: _build/prod/lib/tesla
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :logger
  |      :ssl
  |      :inets
  |  includes: none
  |_____

  > google_api_storage-0.0.2
  |
  |  from: _build/prod/lib/google_api_storage
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :logger
  |      :poison
  |      :tesla
  |  includes: none
  |_____

  > arc-0.10.0
  |
  |  from: _build/prod/lib/arc
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :logger
  |      :httpoison
  |  includes: none
  |_____

  > xmerl-1.3.18
  |
  |  from: /usr/local/lib/erlang/lib/xmerl-1.3.18
  |  applications:
  |      :kernel
  |      :stdlib
  |  includes: none
  |_____

  > sweet_xml-0.6.5
  |
  |  from: _build/prod/lib/sweet_xml
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :xmerl
  |  includes: none
  |_____

  > arc_gcs-0.0.9
  |
  |  from: _build/prod/lib/arc_gcs
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :sweet_xml
  |      :goth
  |      :arc
  |  includes: none
  |_____

  > json_web_token-0.2.10
  |
  |  from: _build/prod/lib/json_web_token
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :crypto
  |      :logger
  |      :public_key
  |  includes: none
  |_____

  > goth-0.6.0
  |
  |  from: _build/prod/lib/goth
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :json_web_token
  |      :logger
  |      :httpoison
  |  includes: none
  |_____

  > ota_manager-0.0.1
  |
  |  from: _build/prod/lib/ota_manager
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :logger
  |      :sentry
  |      :poison
  |      :httpoison
  |      :goth
  |      :arc_gcs
  |      :cowboy
  |      :google_api_storage
  |      :plug
  |      :dealor_data_layer
  |  includes: none
  |_____

  > device_cache-0.1.0
  |
  |  from: _build/prod/lib/device_cache
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :logger
  |      :sentry
  |      :jason
  |      :cowboy
  |      :postgrex
  |      :ecto
  |      :plug
  |      :plug_cowboy
  |      :_utils
  |      :mqtt_manager
  |  includes: none
  |_____

  > crontab-1.1.3
  |
  |  from: _build/prod/lib/crontab
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :logger
  |  includes: none
  |_____

  > libring-1.4.0
  |
  |  from: _build/prod/lib/libring
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :crypto
  |  includes: none
  |_____

  > swarm-3.3.1
  |
  |  from: _build/prod/lib/swarm
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :logger
  |      :crypto
  |      :gen_state_machine
  |      :libring
  |  includes: none
  |_____

  > gen_stage-0.14.0
  |
  |  from: _build/prod/lib/gen_stage
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :logger
  |  includes: none
  |_____

  > quantum-2.3.2
  |
  |  from: _build/prod/lib/quantum
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :logger
  |      :gen_stage
  |      :swarm
  |      :crontab
  |  includes: none
  |_____

  > core-0.1.0
  |
  |  from: _build/prod/lib/core
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :logger
  |      :sentry
  |      :httpoison
  |      :quantum
  |      :dealor_data_layer
  |      :mqtt_manager
  |      :device_cache
  |  includes: none
  |_____

  > eqc_ex-1.4.2
  |
  |  from: _build/prod/lib/eqc_ex
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |  includes: none
  |_____

  > gen_state_machine-2.0.2
  |
  |  from: _build/prod/lib/gen_state_machine
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :logger
  |  includes: none
  |_____

  > tortoise-0.6.0
  |
  |  from: _build/prod/lib/tortoise
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :logger
  |      :ssl
  |      :gen_state_machine
  |      :eqc_ex
  |  includes: none
  |_____

  > task_after-1.2.0
  |
  |  from: _build/prod/lib/task_after
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :logger
  |  includes: none
  |_____

  > mqtt_manager-0.1.0
  |
  |  from: _build/prod/lib/mqtt_manager
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :logger
  |      :sentry
  |      :jason
  |      :task_after
  |      :tortoise
  |      :timex
  |      :_utils
  |  includes: none
  |_____

  > _utils-0.1.0
  |
  |  from: _build/prod/lib/_utils
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :logger
  |      :sentry
  |      :jason
  |      :timex
  |  includes: none
  |_____

  > bamboo-1.1.0
  |
  |  from: _build/prod/lib/bamboo
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :logger
  |      :hackney
  |      :poison
  |  includes: none
  |_____

  > bamboo_sendinblue-0.1.0
  |
  |  from: _build/prod/lib/bamboo_sendinblue
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :logger
  |      :bamboo
  |  includes: none
  |_____

  > mariaex-0.8.4
  |
  |  from: _build/prod/lib/mariaex
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :logger
  |      :crypto
  |      :decimal
  |      :db_connection
  |  includes: none
  |_____

  > combine-0.10.0
  |
  |  from: _build/prod/lib/combine
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |  includes: none
  |_____

  > tzdata-0.5.17
  |
  |  from: _build/prod/lib/tzdata
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :hackney
  |      :logger
  |  includes: none
  |_____

  > timex-3.3.0
  |
  |  from: _build/prod/lib/timex
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :logger
  |      :tzdata
  |      :gettext
  |      :combine
  |  includes: none
  |_____

  > comeonin-4.1.1
  |
  |  from: _build/prod/lib/comeonin
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :logger
  |  includes: none
  |_____

  > bcrypt_elixir-1.0.9
  |
  |  from: _build/prod/lib/bcrypt_elixir
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :logger
  |      :crypto
  |  includes: none
  |_____

  > argon2_elixir-1.3.1
  |
  |  from: _build/prod/lib/argon2_elixir
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :logger
  |      :crypto
  |  includes: none
  |_____

  > elixir_uuid-1.2.0
  |
  |  from: _build/prod/lib/elixir_uuid
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |  includes: none
  |_____

  > faker-0.10.0
  |
  |  from: _build/prod/lib/faker
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :crypto
  |  includes: none
  |_____

  > connection-1.0.4
  |
  |  from: _build/prod/lib/connection
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |  includes: none
  |_____

  > db_connection-1.1.3
  |
  |  from: _build/prod/lib/db_connection
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :logger
  |      :connection
  |  includes: none
  |_____

  > postgrex-0.13.5
  |
  |  from: _build/prod/lib/postgrex
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :logger
  |      :db_connection
  |      :decimal
  |      :crypto
  |  includes: none
  |_____

  > dealor_data_layer-0.1.0
  |
  |  from: _build/prod/lib/dealor_data_layer
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :logger
  |      :ecto
  |      :postgrex
  |      :sentry
  |      :faker
  |      :elixir_uuid
  |      :poison
  |      :jason
  |      :argon2_elixir
  |      :bcrypt_elixir
  |      :comeonin
  |      :timex
  |      :mariaex
  |      :bamboo_sendinblue
  |      :_utils
  |  includes: none
  |_____

  > eex-1.7.4
  |
  |  from: /usr/local/lib/elixir/bin/../lib/eex
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |  includes: none
  |_____

  > phoenix-1.3.4
  |
  |  from: _build/prod/lib/phoenix
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :plug
  |      :poison
  |      :logger
  |      :eex
  |      :phoenix_pubsub
  |      :crypto
  |  includes: none
  |_____

  > poolboy-1.5.1
  |
  |  from: _build/prod/lib/poolboy
  |  applications:
  |      :kernel
  |      :stdlib
  |  includes: none
  |_____

  > decimal-1.6.0
  |
  |  from: _build/prod/lib/decimal
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |  includes: none
  |_____

  > ecto-2.2.11
  |
  |  from: _build/prod/lib/ecto
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :logger
  |      :decimal
  |      :poolboy
  |      :crypto
  |  includes: none
  |_____

  > fat_ecto-0.2.1
  |
  |  from: _build/prod/lib/fat_ecto
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :logger
  |      :ecto
  |  includes: none
  |_____

  > ex2ms-1.5.0
  |
  |  from: _build/prod/lib/ex2ms
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |  includes: none
  |_____

  > ex_rated-1.3.2
  |
  |  from: _build/prod/lib/ex_rated
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :logger
  |      :ex2ms
  |  includes: none
  |_____

  > cowlib-1.0.2
  |
  |  from: _build/prod/lib/cowlib
  |  applications:
  |      :kernel
  |      :stdlib
  |      :crypto
  |  includes: none
  |_____

  > ranch-1.3.2
  |
  |  from: _build/prod/lib/ranch
  |  applications:
  |      :kernel
  |      :stdlib
  |      :ssl
  |  includes: none
  |_____

  > cowboy-1.1.2
  |
  |  from: _build/prod/lib/cowboy
  |  applications:
  |      :kernel
  |      :stdlib
  |      :ranch
  |      :cowlib
  |      :crypto
  |  includes: none
  |_____

  > phoenix_pubsub-1.1.0
  |
  |  from: _build/prod/lib/phoenix_pubsub
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :logger
  |      :crypto
  |  includes: none
  |_____

  > twilex-0.0.2
  |
  |  from: _build/prod/lib/twilex
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :logger
  |      :httpoison
  |  includes: none
  |_____

  > httpoison-1.4.0
  |
  |  from: _build/prod/lib/httpoison
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :hackney
  |  includes: none
  |_____

  > jason-1.1.1
  |
  |  from: _build/prod/lib/jason
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |  includes: none
  |_____

  > phx_crud-0.1.1
  |
  |  from: _build/prod/lib/phx_crud
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :logger
  |  includes: none
  |_____

  > gettext-0.16.0
  |
  |  from: _build/prod/lib/gettext
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :logger
  |  includes: none
  |_____

  > metrics-1.0.1
  |
  |  from: _build/prod/lib/metrics
  |  applications:
  |      :kernel
  |      :stdlib
  |  includes: none
  |_____

  > ssl_verify_fun-1.1.4
  |
  |  from: _build/prod/lib/ssl_verify_fun
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |  includes: none
  |_____

  > certifi-2.4.2
  |
  |  from: _build/prod/lib/certifi
  |  applications:
  |      :kernel
  |      :stdlib
  |  includes: none
  |_____

  > mimerl-1.0.2
  |
  |  from: _build/prod/lib/mimerl
  |  applications:
  |      :kernel
  |      :stdlib
  |  includes: none
  |_____

  > unicode_util_compat-0.4.1
  |
  |  from: _build/prod/lib/unicode_util_compat
  |  applications:
  |      :kernel
  |      :stdlib
  |  includes: none
  |_____

  > idna-6.0.0
  |
  |  from: _build/prod/lib/idna
  |  applications:
  |      :kernel
  |      :stdlib
  |      :unicode_util_compat
  |  includes: none
  |_____

  > ssl-9.0.3
  |
  |  from: /usr/local/lib/erlang/lib/ssl-9.0.3
  |  applications:
  |      :crypto
  |      :public_key
  |      :kernel
  |      :stdlib
  |  includes: none
  |_____

  > hackney-1.14.3
  |
  |  from: _build/prod/lib/hackney
  |  applications:
  |      :kernel
  |      :stdlib
  |      :crypto
  |      :asn1
  |      :public_key
  |      :ssl
  |      :idna
  |      :mimerl
  |      :certifi
  |      :ssl_verify_fun
  |      :metrics
  |  includes: none
  |_____

  > sentry-6.4.2
  |
  |  from: _build/prod/lib/sentry
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :hackney
  |      :poison
  |      :logger
  |  includes: none
  |_____

  > poison-3.1.0
  |
  |  from: _build/prod/lib/poison
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |  includes: none
  |_____

  > base64url-0.0.1
  |
  |  from: _build/prod/lib/base64url
  |  applications:
  |      :kernel
  |      :stdlib
  |  includes: none
  |_____

  > public_key-1.6.3
  |
  |  from: /usr/local/lib/erlang/lib/public_key-1.6.3
  |  applications:
  |      :asn1
  |      :crypto
  |      :kernel
  |      :stdlib
  |  includes: none
  |_____

  > asn1-5.0.7
  |
  |  from: /usr/local/lib/erlang/lib/asn1-5.0.7
  |  applications:
  |      :kernel
  |      :stdlib
  |  includes: none
  |_____

  > jose-1.8.4
  |
  |  from: _build/prod/lib/jose
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :crypto
  |      :asn1
  |      :public_key
  |      :base64url
  |  includes: none
  |_____

  > crypto-4.3.3
  |
  |  from: /usr/local/lib/erlang/lib/crypto-4.3.3
  |  applications:
  |      :kernel
  |      :stdlib
  |  includes: none
  |_____

  > guardian-1.1.1
  |
  |  from: _build/prod/lib/guardian
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :crypto
  |      :logger
  |      :jose
  |      :poison
  |  includes: none
  |_____

  > logger-1.7.4
  |
  |  from: /usr/local/lib/elixir/bin/../lib/logger
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |  includes: none
  |_____

  > dealor_api_gateway-0.0.1
  |
  |  from: _build/prod/lib/dealor_api_gateway
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :logger
  |      :runtime_tools
  |      :guardian
  |      :sentry
  |      :gettext
  |      :phx_crud
  |      :poison
  |      :jason
  |      :httpoison
  |      :twilex
  |      :phoenix_pubsub
  |      :cowboy
  |      :ex_rated
  |      :fat_ecto
  |      :plug_cowboy
  |      :phoenix
  |      :dealor_data_layer
  |      :mqtt_manager
  |      :core
  |      :ota_manager
  |      :phoenix_html
  |      :guardian_db
  |      :cors_plug
  |      :canary
  |  includes: none
  |_____

  > artificery-0.2.6
  |
  |  from: _build/prod/lib/artificery
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |  includes: none
  |_____

  > distillery-2.0.12
  |
  |  from: _build/prod/lib/distillery
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :runtime_tools
  |      :artificery
  |  includes: none
  |_____

  > runtime_tools-1.13.1
  |
  |  from: /usr/local/lib/erlang/lib/runtime_tools-1.13.1
  |  applications:
  |      :kernel
  |      :stdlib
  |  includes: none
  |_____

  > stdlib-3.6
  |
  |  from: /usr/local/lib/erlang/lib/stdlib-3.6
  |  applications:
  |      :kernel
  |  includes: none
  |_____

  > compiler-7.2.7
  |
  |  from: /usr/local/lib/erlang/lib/compiler-7.2.7
  |  applications:
  |      :kernel
  |      :stdlib
  |  includes: none
  |_____

  > canada-1.0.2
  |
  |  from: _build/prod/lib/canada
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |  includes: none
  |_____

  > sasl-3.2.1
  |
  |  from: /usr/local/lib/erlang/lib/sasl-3.2.1
  |  applications:
  |      :kernel
  |      :stdlib
  |  includes: none
  |_____

  > iex-1.7.4
  |
  |  from: /usr/local/lib/elixir/bin/../lib/iex
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |  includes: none
  |_____

  > mix-1.7.4
  |
  |  from: /usr/local/lib/elixir/bin/../lib/mix
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |  includes: none
  |_____

  > elixir-1.7.4
  |
  |  from: /usr/local/lib/elixir/bin/../lib/elixir
  |  applications:
  |      :kernel
  |      :stdlib
  |      :compiler
  |  includes: none
  |_____

==> Running validation checks..
    > Mix.Releases.Checks.Erts * WARN

    > Mix.Releases.Checks.Cookie * PASS
    > Mix.Releases.Checks.LoadedOrphanedApps * PASS
IMPORTANT: You have opted to *not* include the Erlang runtime system (ERTS).
You must ensure that the version of Erlang this release is built with matches
the version the release will be run with once deployed. It will fail to run otherwise.
==> Generated overlay vars:
    release_name=:iot_system
    release_version="0.61.4"
    is_upgrade=false
    upgrade_from=:latest
    dev_mode=false
    include_erts=false
    include_src=false
    include_system_libs=false
    erl_opts=""
    run_erl_env=""
    erts_vsn="10.1.3"
    output_dir="_build/prod/rel/iot_system"
==> Copying applications to _build/prod/rel/iot_system
==> Generating start_erl.data
==> Generating vm.args from rel/vm.args
==> Generating sys.config from config/config.exs
==> Generating boot scripts
==> Generating RELEASES
==> Applying overlays
==> Applying mkdir overlay
    dst: releases/0.61.4/hooks
==> Applying mkdir overlay
    dst: releases/0.61.4/hooks/pre_configure.d
==> Applying mkdir overlay
    dst: releases/0.61.4/hooks/post_configure.d
==> Applying mkdir overlay
    dst: releases/0.61.4/hooks/pre_start.d
==> Applying mkdir overlay
    dst: releases/0.61.4/hooks/post_start.d
==> Applying mkdir overlay
    dst: releases/0.61.4/hooks/pre_stop.d
==> Applying mkdir overlay
    dst: releases/0.61.4/hooks/post_stop.d
==> Applying mkdir overlay
    dst: releases/0.61.4/hooks/pre_upgrade.d
==> Applying mkdir overlay
    dst: releases/0.61.4/hooks/post_upgrade.d
==> Applying copy overlay
    src: rel/hooks/pre_start
    dst: releases/0.61.4/hooks/pre_start.d
==> Applying copy overlay
    src: _build/prod/lib/distillery/priv/libexec
    dst: releases/0.61.4/libexec
==> Applying mkdir overlay
    dst: releases/0.61.4/commands
==> Applying copy overlay
    src: apps/dealor_data_layer/rel/commands/setup_db.sh
    dst: releases/0.61.4/commands/setup_db.sh
==> Applying copy overlay
    src: apps/dealor_data_layer/rel/commands/seed.sh
    dst: releases/0.61.4/commands/seed.sh
==> Packaging release..
==> Archiving iot_system-0.61.4
==> Writing archive to /iot_system/_build/prod/rel/iot_system/releases/0.61.4/iot_system.tar.gz
==> Updating archive..
==> Stripping system libs from release archive since ERTS is not included
==> Saving archive..
==> Archive saved!
Release successfully built!
To start the release you have built, you can use one of the following tasks:

    # start a shell, like 'iex -S mix'
    > _build/prod/rel/iot_system/bin/iot_system console

    # start in the foreground, like 'mix run --no-halt'
    > _build/prod/rel/iot_system/bin/iot_system foreground

    # start in the background, must be stopped with the 'stop' command
    > _build/prod/rel/iot_system/bin/iot_system start

If you started a release elsewhere, and wish to connect to it:

    # connects a local shell to the running node
    > _build/prod/rel/iot_system/bin/iot_system remote_console

    # connects directly to the running node's console
    > _build/prod/rel/iot_system/bin/iot_system attach

For a complete listing of commands and their use:

    > _build/prod/rel/iot_system/bin/iot_system help
Removing intermediate container a699ba80dba6
 ---> e085ddf64a83
Step 13/26 : FROM elixir:1.7-alpine
 ---> 9aa3a5919f50
Step 14/26 : RUN apk upgrade --no-cache &&     apk add --no-cache bash openssl
 ---> Running in e457e65f6f10
fetch http://dl-cdn.alpinelinux.org/alpine/v3.8/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.8/community/x86_64/APKINDEX.tar.gz
(1/2) Upgrading busybox (1.28.4-r1 -> 1.28.4-r2)
Executing busybox-1.28.4-r2.post-upgrade
(2/2) Upgrading ssl_client (1.28.4-r1 -> 1.28.4-r2)
Executing busybox-1.28.4-r2.trigger
OK: 15 MiB in 21 packages
fetch http://dl-cdn.alpinelinux.org/alpine/v3.8/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.8/community/x86_64/APKINDEX.tar.gz
(1/3) Installing bash (4.4.19-r1)
Executing bash-4.4.19-r1.post-install
(2/3) Installing libssl1.0 (1.0.2q-r0)
(3/3) Installing openssl (1.0.2q-r0)
Executing busybox-1.28.4-r2.trigger
OK: 17 MiB in 24 packages
Removing intermediate container e457e65f6f10
 ---> bb412cacd291
Step 15/26 : WORKDIR /iot_system
 ---> Running in 23aba67d1baa
Removing intermediate container 23aba67d1baa
 ---> 2d9fb11d2945
Step 16/26 : ARG build_ver
 ---> Running in f9e5f7f9e218
Removing intermediate container f9e5f7f9e218
 ---> 15621b991864
Step 17/26 : ARG app_name=iot_system
 ---> Running in 4cfd250a8469
Removing intermediate container 4cfd250a8469
 ---> 003eb1f4de42
Step 18/26 : ARG google_creds=ota-manager-google-creds.json
 ---> Running in 22282750ccfd
Removing intermediate container 22282750ccfd
 ---> 80555400e197
Step 19/26 : ENV MIX_ENV=prod     REPLACE_OS_VARS=true     SHELL=/bin/bash     GOOGLE_APPLICATION_CREDENTIALS=${google_creds}
 ---> Running in b1965c378362
Removing intermediate container b1965c378362
 ---> 7ee404b92a03
Step 20/26 : RUN find . -type d
 ---> Running in a8a72b85eb74
.
Removing intermediate container a8a72b85eb74
 ---> 24d329ddcb1f
Step 21/26 : COPY --from=builder /${app_name}/_build/prod/rel/${app_name}/releases/*/${app_name}.tar.gz .
 ---> f88c316f0fb8
Step 22/26 : COPY --from=builder /${app_name}/${google_creds} .
 ---> 5d4f1b5575ec
Step 23/26 : RUN tar zxf ${app_name}.tar.gz && rm ${app_name}.tar.gz
 ---> Running in cbc895cccb47
Removing intermediate container cbc895cccb47
 ---> 4ff4527f1be4
Step 24/26 : RUN chown -R root ./releases
 ---> Running in 75219d52af0a
Removing intermediate container 75219d52af0a
 ---> 7b28af71f598
Step 25/26 : USER root
 ---> Running in 865eee93137e
Removing intermediate container 865eee93137e
 ---> 513a8f1f8e1e
Step 26/26 : CMD ["bash", "-c", "NODE_COOKIE=$NODE_COOKIE /iot_system/bin/iot_system foreground"]
 ---> Running in b964ec1d5bc1
Removing intermediate container b964ec1d5bc1
 ---> 2b593697bd48
Successfully built 2b593697bd48
Successfully tagged registry.gitlab.com/dealor/dealor-iot-system/client_api/iot_system:31e7b870

Description of issue

I am releasing an Umbrella app with the following structure:
apps/
├── core
├── dealor_api_gateway
├── dealor_data_layer
├── device_cache
├── mqtt_manager
├── ota_manager
└── _utils
As you can see in the rel/config.exs I have 2 releases.
When releasing iot_system distillery includes and deploys device_cache which is not included in the application list. The same rel/config works as expected with distillery 1.5.

  • What are the expected results?
    The expected result is a release that doesn't include device_cache
  • What version of Distillery? 2.12
  • What OS, Erlang/Elixir versions are you seeing this issue on? elixir:1.7-alpine docker (otp21)
  • If possible, also provide your rel/config.exs, as it is often
    my first troubleshooting question, and you'll save us both time :)
# Import all plugins from `rel/plugins`
# They can then be used by adding `plugin MyPlugin` to
# either an environment, or release definition, where
# `MyPlugin` is the name of the plugin module.
Path.join(["rel", "plugins", "*.exs"])
|> Path.wildcard()
|> Enum.map(&Code.eval_file(&1))

use Mix.Releases.Config,
    # This sets the default release built by `mix release`
    default_release: :default,
    # This sets the default environment used by `mix release`
    default_environment: Mix.env()

# For a full list of config options for both releases
# and environments, visit https://hexdocs.pm/distillery/configuration.html


# You may define one or more environments in this file,
# an environment's settings will override those of a release
# when building in that environment, this combination of release
# and environment configuration is called a profile

environment :dev do
  # If you are running Phoenix, you should make sure that
  # server: true is set and the code reloader is disabled,
  # even in dev mode.
  # It is recommended that you build with MIX_ENV=prod and pass
  # the --env flag to Distillery explicitly if you want to use
  # dev mode.
  set dev_mode: true
  set include_erts: false
  set cookie: :"foo"
end

environment :prod do
  set include_erts: false
  set include_src: false
  set cookie: :"bar"
end

# You may define one or more releases in this file.
# If you have not set a default release, or selected one
# when running `mix release`, the first release in the file
# will be used by default

release :iot_system do
  set version: "0.61.4"
  set applications: [
    :runtime_tools,
    dealor_api_gateway: :permanent,
    dealor_data_layer: :permanent,
    mqtt_manager: :permanent,
    ota_manager: :permanent,
    core: :permanent,
    _utils: :permanent,
    canada: :load
  ]
  set vm_args: "rel/vm.args"
  set pre_start_hooks: "rel/hooks/pre_start"
  set commands: [
    "setup_db": "apps/dealor_data_layer/rel/commands/setup_db.sh",
    "seed": "apps/dealor_data_layer/rel/commands/seed.sh"
  ]
end

release :device_cache do
  set version: "0.1.0"

  set applications: [
    :runtime_tools,
    device_cache: :permanent,
    mqtt_manager: :permanent
  ]

  set vm_args: "rel/vm.args"
end

I want to add the core app mix.exs since it might be relevant, as the core application is dependent on all the umbrella applications. One issue could be that distillery 2.0 is somehow ignoring the only: flag.:

defmodule Core.MixProject do
  use Mix.Project

  def project do
    [
      app: :core,
      version: "0.1.0",
      build_path: "../../_build",
      config_path: "../../config/config.exs",
      deps_path: "../../deps",
      lockfile: "../../mix.lock",
      elixir: "~> 1.6",
      start_permanent: Mix.env() == :prod,
      elixirc_paths: elixirc_paths(Mix.env()),
      deps: deps()
    ]
  end

  defp elixirc_paths(:test), do: ["lib", "test/support"]
  defp elixirc_paths(_env), do: ["lib"]

  # Run "mix help compile.app" to learn about applications.
  def application do
    [
      extra_applications: [:logger, :sentry],
      mod: {Core.Application, []}
    ]
  end

  # Run "mix help deps" to learn about dependencies.
  defp deps do
    [
      {:quantum, "~> 2.3"},
      {:sentry, "~> 6.4"},
      {:dealor_data_layer, in_umbrella: true},
      {:mqtt_manager, in_umbrella: true},
      {:httpoison, "~> 1.4"},
      {:device_cache, in_umbrella: true, only: [:test, :dev]}
    ]
  end
end

https://github.com/syfgkjasdkn/distillery_601 seems to be able to reproduce it.

Two releases that shouldn't depend on each other

release :service1 do
  set(version: "0.1.0")

  set(
    applications: [
      :runtime_tools,
      core: :permanent
    ]
  )
end

release :service2 do
  set(version: "0.1.0")

  set(
    applications: [
      :runtime_tools,
      non_prod_dep: :permanent
    ]
  )
end

other than in [:dev, :test]:

  # in core's mix
  defp deps do
    [
      {:non_prod_dep, in_umbrella: true, only: [:test, :dev]}
    ]
  end

when running MIX_ENV=prod mix release --verbose --env=prod --name=service1 produce

  ...
  > non_prod_dep-0.1.0
  |
  |  from: _build/prod/lib/non_prod_dep
  |  applications:
  |      :kernel
  |      :stdlib
  |      :elixir
  |      :logger
  |  includes: none
  |_____
  ...

@josevalim I think this may be an issue with Mix; using the sample project from @syfgkjasdkn, if you pop open a shell, you'll see that in Application.spec(:core) the application list contains the :non_prod_dep application, even though it shouldn't be available in the prod environment. Thoughts?

I believe it is caused by this issue: elixir-lang/elixir#8225

You can try Elixir master or wait for Elixir v1.8-rc which should be out this week and you will be able to try it out to see if it solves your problem.

@josevalim Thanks!

@froy001 @syfgkjasdkn I'm going to close this issue since it appears that a resolution is pending release; there is not much I can do in the near term. As a possible workaround, you could use conditional compilation to define two different dependency lists, one without the umbrella deps you are trying to exclude, and a normal one; this should prevent that dependency from showing up in the applications list, though there may be some exceptions to the rule.

@bitwalker just tried https://github.com/syfgkjasdkn/distillery_601 again with elixir 1.8, and it seems the issue has indeed been resolved.

As for those on elixir < 1.8, the workaround https://github.com/syfgkjasdkn/distillery_601/commit/9c09f80c18e6202dea01d661b7212f5118b62508 worked as well, but it sometimes caused problems on CI such that running mix deps.get didn't get deps for test env (obviously, since those were excluded completely from the deps list) and I had to run MIX_ENV=test mix deps.get additionally.