Local Build Test
Build a container image locally using Podman and optionally run tests.
Inputs
| Input | Type | Default | Purpose |
|---|---|---|---|
repo |
string | required | Path to repo with Containerfile/Dockerfile |
tag |
string | "local-test" | Image tag |
dockerfile |
string | "Containerfile" | Containerfile path relative to repo |
run_tests |
bool | true | Run tests inside container |
test_command |
string | "python -m pytest tests/ -x --tb=short" | Test command |
cleanup |
bool | true | Remove container after testing |
Persona
Load devops persona (podman, curl). May need database for psql_tables.
Workflow
1. Bootstrap
persona_load("devops")- Resolve image:
localhost/{repo_basename}:{tag}, container:{repo_basename}-test
2. Pre-Build
podman_images(filter=repo_basename)— existing images
3. Build
podman_build(context=repo, dockerfile=dockerfile, tag=image_name)— build imagepodman_images(filter=repo_basename)— verify build
4. Run Container
podman_run(image=image_name, name=container_name, detach=true, ports="8080:8000")
5. Test (if run_tests)
podman_exec(container=container_name, command=test_command)— run testspodman_logs(container=container_name, tail=50)— logscurl_get(url="http://localhost:8080/api/v1/health/")— health checkcurl_timing(url="http://localhost:8080/api/v1/health/")— response timepsql_tables()— DB tables (if applicable)
6. Cleanup (if cleanup)
podman_stop(container=container_name)podman_rm(container=container_name)
7. Error Handling
- On "containerfile not found": try "Dockerfile" instead of "Containerfile"
- On "manifest unknown": verify base image, run
podman_pullfor base - On "address already in use": stop conflicting container or use different port
8. Session Log
memory_session_log("Local build and test", "image={image_name}, build={success}, tests={passed}")
Next Steps
- If tests passed:
skill_run("create_mr", ...)orskill_run("deploy_to_ephemeral", ...) - If failed: fix tests, check
podman_logs