diff --git a/supabase/functions/_shared/railway.ts b/supabase/functions/_shared/railway.ts index 7d4cd11..8d16700 100644 --- a/supabase/functions/_shared/railway.ts +++ b/supabase/functions/_shared/railway.ts @@ -130,14 +130,16 @@ export async function configureRailwayService(opts: { export async function deployRailwayService(opts: { token: string; - serviceId: string; environmentId: string; /** Use true on the first deploy of a freshly-created service (no prior deployment exists). */ firstDeploy?: boolean; + /** Use true after changing the configured source image so Railway pulls the current source. */ + fromSource?: boolean; }): Promise { // serviceInstanceRedeploy só funciona se já existe um deployment. - // Para o primeiro deploy de um serviço recém-criado, usamos serviceInstanceDeployV2. - if (opts.firstDeploy) { + // Para o primeiro deploy de um serviço recém-criado, ou após trocar source.image, + // usamos DeployV2 para puxar a fonte/imagem configurada em vez de reusar o último deploy. + if (opts.firstDeploy || opts.fromSource) { const mutation = ` mutation ServiceInstanceDeployV2($serviceId: String!, $environmentId: String!) { serviceInstanceDeployV2(serviceId: $serviceId, environmentId: $environmentId) @@ -169,10 +171,11 @@ export async function deployRailwayService(opts: { // Fallback: serviço novo sem deploy anterior — redeploy falha, tenta V2. if (errStr.includes("no deployment") || errStr.includes("No deployments") || errStr.includes("not found")) { console.warn(`[deployRailwayService] redeploy sem deploy anterior, fallback para serviceInstanceDeployV2`); - await deployRailwayService({ ...opts, firstDeploy: true }); + await deployRailwayService({ ...opts, firstDeploy: true, fromSource: false }); return; } throw new Error(`serviceInstanceRedeploy failed: ${errStr}`); + } } diff --git a/supabase/functions/admin-backfill-runtime/index.ts b/supabase/functions/admin-backfill-runtime/index.ts index 587ea07..ea2843a 100644 --- a/supabase/functions/admin-backfill-runtime/index.ts +++ b/supabase/functions/admin-backfill-runtime/index.ts @@ -181,11 +181,12 @@ Deno.serve(async (req) => { startCommand: HERMES_START_COMMAND, }); - // 3) redeploy + // 3) deploy from source para puxar a imagem reconciliada, não o último deploy antigo await deployRailwayService({ token: RAILWAY_API_TOKEN, serviceId: agent.railway_service_id as string, environmentId, + fromSource: true, }); entry.status = "ok"; diff --git a/supabase/functions/provision-agent/index.ts b/supabase/functions/provision-agent/index.ts index fa78d04..d7e2786 100644 --- a/supabase/functions/provision-agent/index.ts +++ b/supabase/functions/provision-agent/index.ts @@ -641,7 +641,9 @@ async function handleUpdateExistingService( token: RAILWAY_API_TOKEN!, serviceId: railwayServiceId, environmentId, + fromSource: true, }); + console.log(`[provision-agent:update] redeploy disparado`); } catch (e) { const msg = e instanceof Error ? e.message : String(e);