Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 27 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@ on:
permissions:
contents: read

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}

env:
AXONFLOW_TELEMETRY: 'off'

Expand Down Expand Up @@ -43,8 +47,10 @@ jobs:
test:
runs-on: ubuntu-latest
strategy:
# PR runs only Python 3.11 (current release toolchain). Push to main and
# workflow_dispatch run the full matrix to catch version-specific drift.
matrix:
python-version: ['3.10', '3.11', '3.12']
python-version: ${{ fromJson(github.event_name == 'pull_request' && '["3.11"]' || '["3.10", "3.11", "3.12"]') }}
steps:
- uses: actions/checkout@v4

Expand All @@ -69,6 +75,26 @@ jobs:
flags: python-sdk
fail_ci_if_error: false

# Aggregator that always reports a single check name regardless of the
# matrix shape (PR-time matrix is `['3.11']`; push/dispatch is full).
# Branch protection requires `Test Summary`, not the per-version names,
# so matrix changes don't strand required checks.
test-summary:
name: Test Summary
needs: [test]
if: always()
runs-on: ubuntu-latest
steps:
- name: Aggregate test matrix result
run: |
result="${{ needs.test.result }}"
echo "test matrix result: $result"
if [ "$result" != "success" ] && [ "$result" != "skipped" ]; then
echo "::error::test matrix did not all pass (result: $result)"
exit 1
fi
echo "Test matrix OK"

# QF-15: wire-shape contract CI. Blocks drift between Python SDK pydantic
# models and the OpenAPI specs that are the authoritative wire contract.
# Runs on every PR. Drift the baseline does not cover fails the check.
Expand Down
7 changes: 6 additions & 1 deletion .github/workflows/definition-of-done.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,17 @@ name: Definition of Done

on:
pull_request:
types: [opened, synchronize, reopened, edited]
# Drop `edited` — re-runs the gate on title/body edits without any code change.
types: [opened, synchronize, reopened]

permissions:
contents: read
pull-requests: read

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}

jobs:
lint-no-mocks-in-runtime-e2e:
name: Lint — no mocks in runtime-e2e/
Expand Down
6 changes: 6 additions & 0 deletions .github/workflows/heartbeat-real-stack.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@ on:
pull_request:
branches: [main]

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}

env:
AXONFLOW_TELEMETRY: 'off'

Expand All @@ -34,6 +38,8 @@ jobs:
uses: actions/setup-python@v5
with:
python-version: '3.11'
cache: 'pip'
cache-dependency-path: 'pyproject.toml'

- name: Install SDK (editable)
run: pip install -e .
Expand Down
11 changes: 7 additions & 4 deletions .github/workflows/integration.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,11 @@ permissions:
contents: read

# Avoid spawning parallel docker-compose stacks for back-to-back pushes;
# also cancels stale PR runs when a new commit lands.
# also cancels stale PR runs when a new commit lands. Push to main keys on SHA
# so main runs never queue or cancel each other.
concurrency:
group: integration-${{ github.ref }}
cancel-in-progress: true
group: integration-${{ github.event.pull_request.number || github.sha }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}

env:
AXONFLOW_TELEMETRY: 'off'
Expand All @@ -33,8 +34,10 @@ jobs:
timeout-minutes: 10
strategy:
fail-fast: false
# PR runs only Python 3.11. Push, dispatch, and weekly Tuesday cron run
# the full matrix to catch version-specific drift before tagging.
matrix:
python-version: ['3.10', '3.11', '3.12']
python-version: ${{ fromJson(github.event_name == 'pull_request' && '["3.11"]' || '["3.10", "3.11", "3.12"]') }}
steps:
- uses: actions/checkout@v4

Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/validate-version-alignment.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,10 @@ on:
permissions:
contents: read

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}

jobs:
validate-versions:
name: Validate Version Alignment
Expand Down
Loading