diff --git a/lib/cli/src/crewai_cli/deploy/main.py b/lib/cli/src/crewai_cli/deploy/main.py index 0a397cf1d..085c9e1dc 100644 --- a/lib/cli/src/crewai_cli/deploy/main.py +++ b/lib/cli/src/crewai_cli/deploy/main.py @@ -17,7 +17,8 @@ from crewai_cli.utils import fetch_and_json_env_file, get_project_name console = Console() _MISSING_LOCKFILE_ERROR_CODES = {"missing_lockfile"} -_DEPLOYMENT_IDENTIFIER_KEYS = ("deployment_id", "deploymentId", "id", "uuid") +_DEPLOYMENT_ID_KEYS = ("deployment_id", "deploymentId") +_DEPLOYMENT_FALLBACK_IDENTIFIER_KEYS = ("id", "uuid") def _run_predeploy_validation( @@ -85,18 +86,24 @@ def _env_summary(env_vars: dict[str, str]) -> str: def _deployment_identifier(json_response: dict[str, Any]) -> str | None: """Return the best available identifier for a deployment show URL.""" - for key in _DEPLOYMENT_IDENTIFIER_KEYS: + deployment = json_response.get("deployment") + + for key in _DEPLOYMENT_ID_KEYS: value = json_response.get(key) if value: return str(value) - deployment = json_response.get("deployment") if isinstance(deployment, dict): - for key in _DEPLOYMENT_IDENTIFIER_KEYS: + for key in _DEPLOYMENT_ID_KEYS + _DEPLOYMENT_FALLBACK_IDENTIFIER_KEYS: value = deployment.get(key) if value: return str(value) + for key in _DEPLOYMENT_FALLBACK_IDENTIFIER_KEYS: + value = json_response.get(key) + if value: + return str(value) + return None diff --git a/lib/cli/tests/deploy/test_deploy_main.py b/lib/cli/tests/deploy/test_deploy_main.py index 1b2fab0a8..06951f0fe 100644 --- a/lib/cli/tests/deploy/test_deploy_main.py +++ b/lib/cli/tests/deploy/test_deploy_main.py @@ -177,6 +177,16 @@ def test_deployment_page_url_prefers_deployment_id(): ) +def test_deployment_page_url_prefers_nested_deployment_id_over_crew_uuid(): + assert ( + deploy_main._deployment_page_url( + "https://app.crewai.com", + {"uuid": "crew-uuid", "deployment": {"deployment_id": 128687}}, + ) + == "https://app.crewai.com/crewai_plus/deployments/128687" + ) + + def test_deployment_page_url_falls_back_to_nested_uuid(): assert ( deploy_main._deployment_page_url(