deploy.py: .env nach update_service schreiben + _wait_service_healthy Bug fix

This commit is contained in:
Agent Zero
2026-08-03 01:22:44 +02:00
parent 5eec2fdde8
commit 8ac90e4dd6
+16 -14
View File
@@ -311,23 +311,12 @@ def deploy_worker(client: CoolifyClient, skip_build: bool = False) -> StepResult
print(" Deploying worker service via Coolify API...")
try:
# Step 1: Write .env file to server
print(" Writing .env file to server...")
import base64
env_encoded = base64.b64encode(WORKER_ENV_CONTENT.encode()).decode()
env_code, env_output = ssh_run(
f'echo {env_encoded} | base64 -d > '
f'/data/coolify/services/{WORKER_UUID}/.env && echo ENV_OK'
)
if env_code != 0 or 'ENV_OK' not in env_output:
print(f" Warning: could not write .env ({env_output.strip()})")
# Step 2: Update service compose with ${VARIABLE} syntax
# Step 1: Update service compose with ${VARIABLE} syntax
print(" Updating worker service compose...")
client.update_service(WORKER_UUID, WORKER_COMPOSE_YAML)
time.sleep(2)
# Step 3: Set connect_to_docker_network=True
# Step 2: Set connect_to_docker_network=True
print(" Ensuring coolify network connection...")
import httpx
resp = httpx.patch(
@@ -339,6 +328,18 @@ def deploy_worker(client: CoolifyClient, skip_build: bool = False) -> StepResult
if resp.status_code != 200:
print(f" Warning: could not set connect_to_docker_network ({resp.status_code})")
# Step 3: Write .env file to server (AFTER update_service, because
# Coolify may regenerate .env during update/deploy)
print(" Writing .env file to server...")
import base64
env_encoded = base64.b64encode(WORKER_ENV_CONTENT.encode()).decode()
env_code, env_output = ssh_run(
f'echo {env_encoded} | base64 -d > '
f'/data/coolify/services/{WORKER_UUID}/.env && echo ENV_OK'
)
if env_code != 0 or 'ENV_OK' not in env_output:
print(f" Warning: could not write .env ({env_output.strip()})")
# Step 4: Tag the latest API image as :latest
print(" Tagging latest API image as :latest...")
tag_code, tag_output = ssh_run(
@@ -408,7 +409,8 @@ def _wait_service_healthy(client: CoolifyClient, service_uuid: str, timeout: int
status = svc.get("status", "unknown")
elapsed = int(time.time() - start)
print(f" [{elapsed}s] Service status: {status}")
if "healthy" in status.lower():
# Only accept exact 'running:healthy' or 'healthy'
if status == "running:healthy" or status == "healthy":
return StepResult(True, f"Service healthy: {status}", time.time() - start, svc)
if "failed" in status.lower() or "error" in status.lower():
return StepResult(False, f"Service failed: {status}", time.time() - start, svc)