Files
cleveragents-core/robot/e2e/wf18_container_clone.robot
freemo 8ea00f5185
CI / unit_tests (push) Has been cancelled
CI / benchmark-publish (push) Has been cancelled
CI / lint (push) Has been cancelled
CI / typecheck (push) Has been cancelled
CI / security (push) Has been cancelled
CI / quality (push) Has been cancelled
CI / integration_tests (push) Has been cancelled
CI / e2e_tests (push) Has been cancelled
CI / coverage (push) Has been cancelled
CI / benchmark-regression (push) Has been cancelled
CI / build (push) Has been cancelled
CI / push-validation (push) Has been cancelled
CI / status-check (push) Has been cancelled
CI / docker (push) Has been cancelled
CI / helm (push) Has been cancelled
fix: restore CI quality tests to passing state (#4175)
Co-authored-by: Jeffrey Phillips Freeman <the@jeffreyfreeman.me>
Co-committed-by: Jeffrey Phillips Freeman <the@jeffreyfreeman.me>
2026-04-08 11:02:14 +00:00

117 lines
5.0 KiB
Plaintext

*** Settings ***
Documentation E2E test for Workflow Example 18: Container with Remote Repo
... Clone (trusted profile).
...
... Exercises resource registration with container-instance and
... --clone-into flag for remote repo clone, two-step project
... creation and linking, action with trusted automation profile,
... plan-level execution environment with fallback priority, and
... full plan lifecycle including apply with container commit/push.
...
... Zero mocking — real CLI, real LLM API keys.
Resource common_e2e.resource
Suite Setup WF18 Suite Setup
Suite Teardown E2E Suite Teardown
Force Tags E2E
*** Variables ***
${ACTION_PREFIX} local/wf18-clone-action
${RESOURCE_PREFIX} local/wf18-clone-res
${PROJECT_PREFIX} local/wf18-clone-proj
*** Keywords ***
WF18 Suite Setup
[Documentation] E2E Suite Setup plus unique suffix generation and dynamic
... actor selection for WF18 tests.
[Tags] tdd_issue tdd_issue_4188
E2E Suite Setup
# Initialise the workspace so CLI commands work.
${init}= Run CleverAgents Command init --force --yes
Should Be Equal As Integers ${init.rc} 0
# Generate a unique suffix for resource/project names to avoid UNIQUE
# constraint collisions on repeated E2E runs or parallel CI.
${suffix}= Evaluate __import__('uuid').uuid4().hex[:12]
Set Suite Variable ${RUN_SUFFIX} ${suffix}
# Pick an actor that matches the available API key.
${has_anthropic}= Evaluate bool(__import__('os').environ.get('ANTHROPIC_API_KEY', ''))
IF ${has_anthropic}
${actor}= Set Variable anthropic/claude-sonnet-4-20250514
ELSE
${actor}= Set Variable openai/gpt-4o
END
Set Suite Variable ${LLM_ACTOR} ${actor}
# Compute unique action name using the run suffix for parallel CI safety.
${action_name}= Set Variable ${ACTION_PREFIX}-${RUN_SUFFIX}
Set Suite Variable ${ACTION_NAME} ${action_name}
Create Remote Clone Repo
[Documentation] Create a temp git repo simulating a project that would
... be cloned from a remote repository into a container.
${repo}= Create Temp Git Repo wf18-remote-clone-${RUN_SUFFIX}
Create Directory ${repo}${/}src
Create Directory ${repo}${/}deploy
${app_content}= Catenate SEPARATOR=\n
... """Application for remote deployment via container clone."""
... ${EMPTY}
... ${EMPTY}
... class DeploymentManager:
... ${SPACE}${SPACE}${SPACE}${SPACE}"""Manages deployment lifecycle."""
... ${EMPTY}
... ${SPACE}${SPACE}${SPACE}${SPACE}def __init__(self, repo_url, branch="main"):
... ${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}self.repo_url = repo_url
... ${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}self.branch = branch
... ${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}self.deployed = False
... ${EMPTY}
... ${SPACE}${SPACE}${SPACE}${SPACE}def deploy(self):
... ${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}"""Execute deployment."""
... ${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}self.deployed = True
... ${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}return {"status": "deployed", "branch": self.branch}
Create File ${repo}${/}src${/}deploy_manager.py ${app_content}
${deploy_config}= Catenate SEPARATOR=\n
... # Deployment configuration
... CONTAINER_IMAGE=python:3.12-slim
... CLONE_DEPTH=1
... DEPLOY_TIMEOUT=300
... HEALTH_CHECK_INTERVAL=10
Create File ${repo}${/}deploy${/}config.env ${deploy_config}
# NOTE: This Dockerfile is fixture data only — never built by this test.
# It simulates a project that would be cloned into a container.
${dockerfile}= Catenate SEPARATOR=\n
... FROM python:3.12-slim
... RUN apt-get update && apt-get install -y git
... WORKDIR /workspace
... ARG REPO_URL
... RUN git clone --depth 1 \${REPO_URL} .
... CMD ["python", "-m", "src.deploy_manager"]
Create File ${repo}${/}Dockerfile ${dockerfile}
Create File ${repo}${/}src${/}__init__.py \n
${git_add}= Run Process git add . cwd=${repo}
Should Be Equal As Integers ${git_add.rc} 0 msg=Fixture git add failed: ${git_add.stderr}
${git_commit}= Run Process git commit -m Initial remote-clone container project cwd=${repo}
Should Be Equal As Integers ${git_commit.rc} 0 msg=Fixture git commit failed: ${git_commit.stderr}
RETURN ${repo}
*** Test Cases ***
WF18 Container With Remote Repo Clone Trusted Profile
[Documentation] Trusted-profile workflow: container-instance resource with
... --clone-into for remote repo clone, two-step project setup,
... plan-level execution environment with fallback priority, and
... full plan lifecycle including apply with container commit/push.
[Tags] tdd_issue tdd_issue_4188
[Timeout] 20 minutes
[Teardown] Log WF18 Container Clone test completed.
Skip If No LLM Keys