Skip to content

Commit 6aee63b

Browse files
phurynclaude
andcommitted
Fix CI: declare boto3 as the bedrock extra; install it in CI
The 0.6.0 AWS Bedrock target uses boto3 (live harness create/invoke + skill S3 upload), but boto3 was never a declared dependency — so CI (`.[dev,google]`) ran without it and `test_live_harness_orchestration.py` (which patches boto3.client) errored on main. - pyproject: add `bedrock = ["boto3>=1.43"]` optional extra (parallels `google`); live `--target bedrock` deploy needs it (audit/plan/export stay offline-only) - ci.yml: install `.[dev,google,bedrock]` (offline) and `.[dev,bedrock]` (live) - test_live_harness_orchestration.py: `pytest.importorskip("boto3")` so a lean `.[dev]` install skips it cleanly instead of erroring - docs/deploy-bedrock.md: `pip install "agentlift[bedrock]"` in the setup Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1 parent 531559e commit 6aee63b

4 files changed

Lines changed: 19 additions & 4 deletions

File tree

.github/workflows/ci.yml

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,11 @@ jobs:
1717
- uses: actions/setup-python@v5
1818
with:
1919
python-version: ${{ matrix.python-version }}
20-
# install the Google ADK stack too, so the ADK-dependent offline tests
21-
# (generated-package build + import) actually run on GitHub instead of skipping
22-
- run: python -m pip install -e ".[dev,google]"
20+
# install the Google ADK + AWS Bedrock (boto3) stacks too, so the ADK- and
21+
# boto3-dependent offline tests (generated-package build + import; the harness
22+
# deploy-path orchestration test that patches boto3.client) actually run on
23+
# GitHub instead of skipping
24+
- run: python -m pip install -e ".[dev,google,bedrock]"
2325
- name: run offline suite (no API key)
2426
run: pytest -m "not live" -q
2527

@@ -34,7 +36,7 @@ jobs:
3436
- uses: actions/setup-python@v5
3537
with:
3638
python-version: "3.12"
37-
- run: python -m pip install -e ".[dev]"
39+
- run: python -m pip install -e ".[dev,bedrock]"
3840
- name: run live suite (skips automatically if no key)
3941
env:
4042
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}

docs/deploy-bedrock.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,8 @@ managed AgentCore Harness: config only, no container, minutes. `--mode auto` sel
106106
single-agent folder; a multi-agent *team* routes to the Runtime instead.
107107

108108
```bash
109+
pip install "agentlift[bedrock]" # the live deploy paths need boto3 (audit/plan/export don't)
110+
109111
# IAM creds on PATH (NOT the bearer token), the execution role, + a skills bucket if you have skills:
110112
export AGENTLIFT_BEDROCK_EXECUTION_ROLE_ARN=arn:aws:iam::<acct>:role/agentlift-harness
111113
export AGENTLIFT_BEDROCK_S3_BUCKET=my-agentlift-skills-bucket # only if the folder has skills

pyproject.toml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,13 @@ google = [
3333
"google-adk>=1.34.3",
3434
"google-cloud-aiplatform[adk,agent_engines]>=1.119",
3535
]
36+
# Optional: the AWS Bedrock AgentCore stack. Needed only for the *live* `--target
37+
# bedrock` deploy paths (the harness create/invoke + skill S3 upload, and the Runtime
38+
# hosted create); `audit`/`plan`/`export bedrock-strands` are offline and need none of
39+
# it. The AgentCore harness/runtime control-plane ops require a recent botocore.
40+
bedrock = [
41+
"boto3>=1.43",
42+
]
3643

3744
[project.urls]
3845
Homepage = "https://github.com/phuryn/agentlift"

tests/test_live_harness_orchestration.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@
1616

1717
import pytest
1818

19+
# this test patches boto3.client to drive the deploy wrapper offline; skip cleanly if the
20+
# AWS extra (`pip install agentlift[bedrock]`) isn't installed rather than erroring.
21+
pytest.importorskip("boto3")
22+
1923
HERE = os.path.dirname(os.path.abspath(__file__))
2024
ACCOUNT = "424242424242" # fake account id the receipt must redact
2125
ARN = f"arn:aws:bedrock-agentcore:us-west-2:{ACCOUNT}:harness/agentlift_assistant-abc1234567"

0 commit comments

Comments
 (0)