Skip to content

chore(release): bump package versions to 0.2.2 #74

chore(release): bump package versions to 0.2.2

chore(release): bump package versions to 0.2.2 #74

Workflow file for this run

# CI - 单元测试
# 在 PR 和 push 到 main 时运行所有包的单元测试
name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true
jobs:
# ── Bay 单元测试 ──────────────────────────────────────────
test-bay:
name: "Bay Unit Tests"
runs-on: ubuntu-latest
defaults:
run:
working-directory: pkgs/bay
steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v5
with:
enable-cache: true
cache-dependency-glob: "pkgs/bay/uv.lock"
- name: Install dependencies
run: uv sync --frozen
- name: Unit tests
run: uv run pytest tests/unit -v --tb=short
# ── Gull 单元测试 ─────────────────────────────────────────
test-gull:
name: "Gull Unit Tests"
runs-on: ubuntu-latest
defaults:
run:
working-directory: pkgs/gull
steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v5
with:
enable-cache: true
cache-dependency-glob: "pkgs/gull/uv.lock"
- name: Install dependencies
run: uv sync --frozen
- name: Unit tests
run: uv run pytest tests/unit -v --tb=short
# ── Ship 单元测试 ─────────────────────────────────────────
test-ship:
name: "Ship Unit Tests"
runs-on: ubuntu-latest
defaults:
run:
working-directory: pkgs/ship
steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v5
with:
enable-cache: true
cache-dependency-glob: "pkgs/ship/uv.lock"
- name: Install dependencies
run: uv sync --frozen --extra test
- name: Unit tests
run: uv run pytest tests/unit -v --tb=short -m unit
# ── SDK 测试 ──────────────────────────────────────────────
test-sdk:
name: "SDK Tests"
runs-on: ubuntu-latest
defaults:
run:
working-directory: shipyard-neo-sdk
steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v5
with:
enable-cache: true
cache-dependency-glob: "shipyard-neo-sdk/uv.lock"
- name: Install dependencies
run: uv sync --frozen --extra dev
- name: Unit tests
run: uv run pytest tests -v --tb=short
# ── MCP 测试 ──────────────────────────────────────────────
test-mcp:
name: "MCP Tests"
runs-on: ubuntu-latest
defaults:
run:
working-directory: shipyard-neo-mcp
steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v5
with:
enable-cache: true
cache-dependency-glob: "shipyard-neo-mcp/uv.lock"
- name: Install dependencies
run: uv sync --frozen --extra dev
- name: Unit tests
run: uv run pytest tests -v --tb=short
# ── Browser contract smoke (integration/e2e) ─────────────────────────────
test-browser-contract:
name: "Browser Contract Smoke"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v5
with:
enable-cache: true
cache-dependency-glob: |
pkgs/gull/uv.lock
pkgs/bay/uv.lock
- name: Install Gull dependencies
working-directory: pkgs/gull
run: uv sync --frozen
- name: Install Bay dependencies
working-directory: pkgs/bay
run: uv sync --frozen
- name: Run P0 browser contract unit tests
run: |
uv run --project pkgs/gull pytest pkgs/gull/tests/unit/test_runner.py -v --tb=short
uv run --project pkgs/bay pytest \
pkgs/bay/tests/unit/adapters/test_gull_adapter.py \
pkgs/bay/tests/unit/api/test_capabilities_browser_exec_batch_contract.py \
-v --tb=short
- name: Build local runtime images for browser e2e
run: |
docker build -t ship:latest pkgs/ship
docker build -t gull:latest pkgs/gull
- name: Run key P1 Gull batch integration tests
working-directory: pkgs/gull
run: uv run pytest tests/integration/test_gull_api.py::TestBatchExec -v --tb=short
- name: Prepare Bay e2e config
run: |
cat > /tmp/bay-e2e-config.yaml <<'YAML'
server:
host: "127.0.0.1"
port: 8001
security:
api_key: "e2e-test-api-key"
allow_anonymous: false
driver:
type: docker
docker:
connect_mode: host_port
host_address: "127.0.0.1"
publish_ports: true
profiles:
- id: python-default
image: ship:latest
runtime_type: ship
runtime_port: 8123
capabilities: [filesystem, shell, python]
idle_timeout: 1800
- id: browser-python
containers:
- name: ship
image: ship:latest
runtime_type: ship
runtime_port: 8123
capabilities: [python, shell, filesystem]
primary_for: [filesystem, python, shell]
- name: browser
image: gull:latest
runtime_type: gull
runtime_port: 8115
capabilities: [browser]
primary_for: [browser]
idle_timeout: 1800
YAML
- name: Start Bay API for e2e
working-directory: pkgs/bay
run: |
BAY_CONFIG_FILE=/tmp/bay-e2e-config.yaml \
uv run uvicorn app.main:create_app --factory --host 127.0.0.1 --port 8001 > /tmp/bay-e2e.log 2>&1 &
echo $! > /tmp/bay-e2e.pid
for i in $(seq 1 60); do
if curl -sf http://127.0.0.1:8001/health >/dev/null; then
exit 0
fi
sleep 1
done
echo "Bay failed to start within 60s"
cat /tmp/bay-e2e.log || true
exit 1
- name: Run key P1 Bay browser failure-path e2e
working-directory: pkgs/bay
env:
E2E_BAY_PORT: "8001"
E2E_API_KEY: "e2e-test-api-key"
run: |
uv run pytest \
tests/integration/core/test_browser_skill_e2e.py::test_browser_exec_batch_failure_keeps_response_history_trace_consistent \
-v --tb=short
- name: Dump Bay logs on failure
if: failure()
run: cat /tmp/bay-e2e.log || true
- name: Stop Bay API
if: always()
run: |
if [ -f /tmp/bay-e2e.pid ]; then
kill $(cat /tmp/bay-e2e.pid) || true
fi