Skip to content

Commit 0a06232

Browse files
committed
feat: add workflow for spec compliance validation
1 parent ae1cfa8 commit 0a06232

File tree

1 file changed

+65
-0
lines changed

1 file changed

+65
-0
lines changed
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
name: Spec Compliance TCK
2+
3+
on:
4+
workflow_dispatch:
5+
6+
jobs:
7+
spec-compliance:
8+
runs-on: ubuntu-latest
9+
steps:
10+
- name: Build
11+
uses: ./.github/workflows/dotnet-build.yml
12+
13+
- name: Checkout A2A TCK repository
14+
uses: actions/checkout@v4
15+
with:
16+
repository: a2aproject/a2a-tck
17+
path: a2a-tck
18+
19+
- name: Setup Python
20+
uses: actions/setup-python@v5
21+
with:
22+
python-version: '3.13'
23+
24+
- name: Install A2A TCK dependencies
25+
working-directory: a2a-tck
26+
run: |
27+
python -m pip install --upgrade pip
28+
pip install -r requirements.txt
29+
30+
- name: Launch Spec Compliance Agent
31+
run: |
32+
dotnet run --project ./samples/AgentServer/AgentServer.csproj \
33+
--launch-profile speccompliance-agent > server.log 2>&1 &
34+
echo $! > agent.pid
35+
36+
- name: Wait for Spec Compliance Agent readiness
37+
run: |
38+
set -e
39+
for i in {1..40}; do
40+
if curl -fsS http://localhost:5048/speccompliance/v1/card > /dev/null 2>&1; then
41+
echo "Agent is ready"; exit 0; fi
42+
sleep 2
43+
done
44+
echo "Agent failed to become ready in time" >&2
45+
exit 1
46+
47+
- name: Run A2A TCK
48+
working-directory: a2a-tck
49+
run: |
50+
python run_tck.py \
51+
--sut-url http://localhost:5048/speccompliance \
52+
--category all \
53+
--verbose \
54+
--compliance-report a2a-dotnet-report.json
55+
56+
- name: Stop Spec Compliance Agent
57+
if: always()
58+
run: |
59+
if [ -f agent.pid ]; then kill $(cat agent.pid) || true; fi
60+
61+
- name: Upload compliance artifacts
62+
uses: actions/upload-artifact@v4
63+
with:
64+
name: spec-compliance-report
65+
path: a2a-tck/reports/*

0 commit comments

Comments
 (0)