-
Notifications
You must be signed in to change notification settings - Fork 83
146 lines (120 loc) · 4.2 KB
/
Copy pathintegration.yml
File metadata and controls
146 lines (120 loc) · 4.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
name: integration
on:
push:
branches: [main]
pull_request:
branches: [main]
workflow_dispatch:
concurrency:
group: integration-${{ github.ref }}
cancel-in-progress: true
jobs:
lockfile:
name: standalone lockfile
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- uses: astral-sh/setup-uv@v3
- name: Check standalone plugin lock
run: |
make check-locked-project-version
make check-standalone-lock
pytest:
name: pytest suite
runs-on: ubuntu-latest
timeout-minutes: 25
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '22'
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- uses: astral-sh/setup-uv@v3
- name: Install Node test dependencies
run: npm ci
- name: Install test dependencies
run: uv sync --project plugin --group dev --python 3.12 --locked
# plugin/vendor/reflexio is a pack-time artifact and is gitignored, so a
# fresh checkout has none. The install-flow tests need it: a tarball
# without the vendored runtime installs a plugin whose backend cannot
# start, which Setup now correctly rejects. Vendor the locked commit so
# those tests exercise what users actually receive.
- name: Vendor locked Reflexio (install-flow tests need the release bundle)
run: |
repo=$(python3 -c "import json;print(json.load(open('reflexio.lock.json'))['repo'])")
commit=$(python3 -c "import json;print(json.load(open('reflexio.lock.json'))['commit'])")
git clone --quiet "$repo" "$RUNNER_TEMP/reflexio-src"
git -C "$RUNNER_TEMP/reflexio-src" checkout --quiet "$commit"
python3 scripts/vendor-reflexio.py \
--reflexio-path "$RUNNER_TEMP/reflexio-src" --bundle-only --write
- name: Run pytest suite
run: uv --project plugin run pytest tests -q
dependency-platforms:
name: dependency platforms (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [macos-latest, windows-latest]
timeout-minutes: 15
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '22'
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- uses: astral-sh/setup-uv@v3
- name: Check Python dependency lock
shell: bash
run: |
if [ "$RUNNER_OS" = "macOS" ]; then
if [ "$(uname -m)" != "arm64" ]; then
echo "::warning::Skipping macOS runtime sync check because this runner is not Apple Silicon"
exit 0
fi
uv sync --project plugin --locked --dry-run --python 3.12
else
uv sync --project plugin --locked --dry-run --python 3.12 --python-platform x86_64-pc-windows-msvc
fi
- name: Check dashboard build
shell: bash
run: |
cd plugin/dashboard
npm ci
npm run build
integration:
name: integration (${{ matrix.os }}, node ${{ matrix.node }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest]
node: ['20', '22']
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- uses: astral-sh/setup-uv@v3
- name: Install Claude Code CLI
run: npm install -g @anthropic-ai/claude-code@stable
- name: Run integration test
env:
# Plugin install is local-config only and shouldn't hit the API,
# but a dummy key prevents a hang at any first-launch login prompt.
# Real SessionStart-via-session testing would need a real key (see
# tests/integration/NOTES.md).
ANTHROPIC_API_KEY: dummy-for-plugin-install
run: bash tests/integration/integration.sh all