Skip to content

feat(orchestrator): CI results by webhook (generic and GitHub) and the CI card #45

feat(orchestrator): CI results by webhook (generic and GitHub) and the CI card

feat(orchestrator): CI results by webhook (generic and GitHub) and the CI card #45

Workflow file for this run

name: Compose
# The local development stack (compose.yaml, dev/): every compose profile must parse, the WireMock
# stand-in agents must answer as documented, and the REAL orchestrator client must still work against
# them, so the mocks cannot drift from the protocol code they exist to test.
# The `app` and `split` profiles build the orchestrator and web images, which the Orchestrator and Web
# workflows already build; here they are only validated with `docker compose config`. They are RUN by the
# Coder E2E workflow (coder-e2e.yml), which also checks the mocks vendored under dev/coder and runs the
# split roles (dev/split-e2e.sh).
#
# Path filters mean this check must not be made "required" for unrelated PRs.
on:
pull_request:
paths:
- "compose.yaml"
- "dev/**"
- "orchestrator/crates/a2a-mapping/**"
- "orchestrator/crates/agent-a2a/**"
- "orchestrator/crates/e2e/tests/wiremock_agent.rs"
- ".github/workflows/compose.yml"
push:
branches: [main]
paths:
- "compose.yaml"
- "dev/**"
- "orchestrator/crates/a2a-mapping/**"
- "orchestrator/crates/agent-a2a/**"
- "orchestrator/crates/e2e/tests/wiremock_agent.rs"
- ".github/workflows/compose.yml"
permissions:
contents: read
concurrency:
group: compose-${{ github.ref }}
cancel-in-progress: true
jobs:
mocks:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- name: Install the pinned toolchain
run: rustup toolchain install 1.94.1 --profile minimal
- uses: Swatinem/rust-cache@v2
with:
workspaces: "orchestrator -> target"
- name: Every profile parses
run: |
docker compose config -q
docker compose --profile app config -q
docker compose --profile split config -q
docker compose --profile app --profile split config -q
- name: Start the infrastructure and the mocks
run: docker compose up -d --wait postgres mock-agent mock-agent-releases mock-verifier
- name: Every mock scenario answers as documented
run: dev/check-mocks.sh http://127.0.0.1:8081 http://127.0.0.1:8082 http://127.0.0.1:8083
- name: The real orchestrator client against the mocks
run: |
cd orchestrator
ORCH_TEST_MOCK_AGENT_URL=http://127.0.0.1:8081 \
ORCH_TEST_MOCK_AGENT_RELEASES_URL=http://127.0.0.1:8082 \
ORCH_TEST_MOCK_VERIFIER_URL=http://127.0.0.1:8083 \
cargo test -p orch-e2e --test wiremock_agent --locked
- name: Logs
if: failure()
run: docker compose logs --no-color
- name: Tear down
if: always()
run: docker compose down -v
scripts:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- name: Shellcheck the dev scripts
run: shellcheck dev/*.sh dev/coder/*.sh dev/mock-ci/*.sh