Skip to content

Add Docker smoke test CI with ACP handshake validation #347

@thepagent

Description

@thepagent

Problem

Recent regressions could have been caught by basic CI tests:

Currently there are no CI tests that verify the built Docker images actually work.

Proposed Solution

Add a GitHub Actions workflow that runs on PRs touching Dockerfile*, src/**, or Cargo.*. For each of the 5 image variants (default/kiro, claude, codex, gemini, copilot), test 3 layers:

1. openab binary — CMD regression check

Run the container with its default CMD and assert no "unrecognized subcommand" error.

2. Agent CLI exists

which <agent-binary> to verify the correct binary name is in PATH.

3. ACP initialize handshake

Pipe a JSON-RPC initialize request into the agent over stdio and validate the response contains agentInfo:

echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":1,"clientCapabilities":{},"clientInfo":{"name":"ci-test","version":"0.0.1"}}}' \
  | timeout 30 docker run --rm -i --entrypoint <agent> <image> <args> \
  | head -1 | jq -e ".result.agentInfo.name"

No API keys or Discord tokens needed — initialize is an unauthenticated ACP handshake.

Test Matrix

Variant Dockerfile Agent Binary Agent Args
kiro (default) Dockerfile kiro-cli acp --trust-all-tools
claude Dockerfile.claude claude-agent-acp
codex Dockerfile.codex codex-acp
gemini Dockerfile.gemini gemini --acp
copilot Dockerfile.copilot copilot --acp

What this catches

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions