From 7730bf381838d6d5228cec0078ecf4488f2dfa61c4417f01bcf683fd769012a4 Mon Sep 17 00:00:00 2001 From: Tyler J King Date: Wed, 22 Apr 2026 09:39:49 -0400 Subject: [PATCH] fix(deploy): add releases: config for umbrella release MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Dockerfile's `mix release --overwrite` step failed because the umbrella's root mix.exs lacked an explicit `releases:` block. Umbrella projects cannot infer a default release — `mix release` requires the operator to name which umbrella children go into each release and their startup order. Adds a single `:guildhall` release bundling all five umbrella apps as :permanent, with startup order respecting the dep graph: guildhall_ops_db (Repo — nothing else here starts without it) guildhall_chronicle guildhall_orchestrator guildhall_graph_bridge guildhall_web (HTTP endpoint last, after Repo + contexts) Each app's own `in_umbrella` deps in apps/*/mix.exs will back-stop the ordering via OTP's dependency graph regardless, but the explicit list is clearer and matches standard Phoenix-umbrella release idiom. Mistake was in the prior Dockerfile commit (c6f1d07) planning — the Dockerfile comment claimed the release name could be inferred from the umbrella, which is true for single-app projects but not umbrellas. No Dockerfile change needed; the fix is entirely in mix.exs. Co-Authored-By: Claude Opus 4.7 (1M context) Signed-off-by: Tyler J King --- mix.exs | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/mix.exs b/mix.exs index 7c167df..2b7557c 100644 --- a/mix.exs +++ b/mix.exs @@ -6,7 +6,28 @@ defmodule Guildhall.MixProject do apps_path: "apps", version: "0.1.0", start_permanent: Mix.env() == :prod, - deps: deps() + deps: deps(), + releases: releases() + ] + end + + # Release configuration. Umbrella projects require an explicit + # `releases:` block — mix release cannot infer a default from the + # umbrella root because there is no single "application" to release. + # The `:guildhall` release bundles all five umbrella children in a + # startup order that respects the dep graph: ops_db first (the Repo + # other apps use), then infra apps, then the web endpoint last. + defp releases do + [ + guildhall: [ + applications: [ + guildhall_ops_db: :permanent, + guildhall_chronicle: :permanent, + guildhall_orchestrator: :permanent, + guildhall_graph_bridge: :permanent, + guildhall_web: :permanent + ] + ] ] end