-
Notifications
You must be signed in to change notification settings - Fork 0
159 lines (134 loc) · 5.06 KB
/
Copy pathci.yml
File metadata and controls
159 lines (134 loc) · 5.06 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
147
148
149
150
151
152
153
154
155
156
157
158
159
name: CI
on:
pull_request:
branches: [main]
push:
branches: [main]
concurrency:
group: ci-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
unit:
name: Unit (Python ${{ matrix.python-version }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.10", "3.11", "3.12", "3.13"]
steps:
- name: Harden the runner (Audit all outbound calls)
uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
with:
egress-policy: audit
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Set up Python
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: ${{ matrix.python-version }}
cache: pip
cache-dependency-path: pyproject.toml
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -e ".[dev]"
pip install pre-commit
- name: Preflight (S0 toolchain contract)
run: python scripts/preflight.py
- name: Pre-commit hooks
run: pre-commit run --all-files
- name: Unit tests
run: pytest tests/unit -q
integration:
name: Integration (Aerospike CE)
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- name: Harden the runner (Audit all outbound calls)
uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
with:
egress-policy: audit
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Checkout LMCache (dev, L2 plugin APIs)
uses: actions/checkout@v4
with:
repository: LMCache/LMCache
ref: dev
path: LMCache
- name: Set up Python
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: "3.12"
cache: pip
cache-dependency-path: pyproject.toml
- name: Install dependencies
run: |
python -m pip install --upgrade pip wheel
# LMCache build-system pins setuptools 77–80 (see LMCache/pyproject.toml).
pip install "setuptools>=77.0.3,<81.0.0"
# CPU-only torch keeps the hosted runner under ~7 GiB RAM (lmcache pulls torch).
pip install "torch" --index-url https://download.pytorch.org/whl/cpu
# torch CPU can downgrade setuptools; restore LMCache's range before editable install.
pip install "setuptools>=77.0.3,<81.0.0" --force-reinstall
# PyPI 0.4.x lacks L2StoreResult; install dev (pure Python on CI via NO_NATIVE_EXT).
NO_NATIVE_EXT=1 pip install -e ./LMCache --no-build-isolation
pip install -e . --no-deps
pip install "aerospike>=14.0.0,<19.0.0"
pip install pytest pytest-asyncio
- name: Start Aerospike CE (Docker)
run: |
chmod +x scripts/start_aerospike_ce.sh scripts/stop_aerospike_ce.sh
./scripts/start_aerospike_ce.sh
docker ps --filter "name=lmcache-aerospike-ci"
cat .aerospike-ci.env
- name: Integration tests
run: |
set -a
source .aerospike-ci.env
set +a
pytest tests/integration -v --tb=short
- name: Stop Aerospike CE
if: always()
run: ./scripts/stop_aerospike_ce.sh
integration-native:
name: Integration (native L2 + Aerospike CE)
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- name: Harden the runner (Audit all outbound calls)
uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
with:
egress-policy: audit
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Checkout LMCache (dev, L2 + native headers)
uses: actions/checkout@v4
with:
repository: LMCache/LMCache
ref: dev
path: LMCache
- name: Set up Python
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: "3.12"
cache: pip
cache-dependency-path: pyproject.toml
- name: Install native connector (C client + extension)
run: |
chmod +x scripts/ci_native_install.sh scripts/build_libaerospike.sh
./scripts/ci_native_install.sh
- name: Start Aerospike CE (Docker)
run: |
chmod +x scripts/start_aerospike_ce.sh scripts/stop_aerospike_ce.sh
./scripts/start_aerospike_ce.sh
docker ps --filter "name=lmcache-aerospike-ci"
cat .aerospike-ci.env
- name: Native L2 integration tests
run: |
set -a
source .aerospike-ci.env
source .deps/aerospike-client-c.env
set +a
export RUN_NATIVE=1
pytest tests/integration/test_native_l2_*.py -v --tb=short
- name: Stop Aerospike CE
if: always()
run: ./scripts/stop_aerospike_ce.sh