Skip to content

Commit a200e2b

Browse files
committed
ci: add experimental Bun test run
Add a non-blocking CI job that runs tests under Bun's runtime using bunx --bun vitest. Uses continue-on-error so failures don't block merges while we assess Bun compatibility.
1 parent 71e6e38 commit a200e2b

1 file changed

Lines changed: 91 additions & 0 deletions

File tree

.github/workflows/tests.yml

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,3 +155,94 @@ jobs:
155155
# job above; we filter to the new workspace here to avoid duplication.
156156
- name: Run E2E tests
157157
run: pnpm exec turbo run test:e2e --filter @cipherstash/e2e
158+
159+
run-tests-bun:
160+
name: Run Tests (Bun)
161+
runs-on: blacksmith-4vcpu-ubuntu-2404
162+
continue-on-error: true
163+
164+
services:
165+
postgres:
166+
image: ghcr.io/cipherstash/postgres-eql:17-2.3.1
167+
env:
168+
POSTGRES_USER: cipherstash
169+
POSTGRES_PASSWORD: password
170+
POSTGRES_DB: cipherstash
171+
ports:
172+
- 5432:5432
173+
options: >-
174+
--health-cmd "pg_isready -U cipherstash -d cipherstash"
175+
--health-interval 2s
176+
--health-timeout 5s
177+
--health-retries 20
178+
179+
steps:
180+
- name: Checkout Repo
181+
uses: actions/checkout@v6
182+
183+
- uses: oven-sh/setup-bun@v2
184+
185+
- uses: pnpm/action-setup@v6.0.8
186+
name: Install pnpm
187+
with:
188+
run_install: false
189+
190+
- name: Install Node.js
191+
uses: actions/setup-node@v6
192+
with:
193+
node-version: 22
194+
cache: 'pnpm'
195+
196+
- name: Install node-gyp
197+
run: npm install -g node-gyp
198+
199+
- name: Install dependencies
200+
run: pnpm install --frozen-lockfile
201+
202+
- name: Create .env file in ./packages/protect/
203+
run: |
204+
touch ./packages/protect/.env
205+
echo "CS_WORKSPACE_CRN=${{ secrets.CS_WORKSPACE_CRN }}" >> ./packages/protect/.env
206+
echo "CS_CLIENT_ID=${{ secrets.CS_CLIENT_ID }}" >> ./packages/protect/.env
207+
echo "CS_CLIENT_KEY=${{ secrets.CS_CLIENT_KEY }}" >> ./packages/protect/.env
208+
echo "CS_CLIENT_ACCESS_KEY=${{ secrets.CS_CLIENT_ACCESS_KEY }}" >> ./packages/protect/.env
209+
echo "DATABASE_URL=postgres://cipherstash:password@localhost:5432/cipherstash" >> ./packages/protect/.env
210+
211+
- name: Create .env file in ./packages/stack/
212+
run: |
213+
touch ./packages/stack/.env
214+
echo "CS_WORKSPACE_CRN=${{ secrets.CS_WORKSPACE_CRN }}" >> ./packages/stack/.env
215+
echo "CS_CLIENT_ID=${{ secrets.CS_CLIENT_ID }}" >> ./packages/stack/.env
216+
echo "CS_CLIENT_KEY=${{ secrets.CS_CLIENT_KEY }}" >> ./packages/stack/.env
217+
echo "CS_CLIENT_ACCESS_KEY=${{ secrets.CS_CLIENT_ACCESS_KEY }}" >> ./packages/stack/.env
218+
echo "DATABASE_URL=postgres://cipherstash:password@localhost:5432/cipherstash" >> ./packages/stack/.env
219+
220+
- name: Create .env file in ./packages/protect-dynamodb/
221+
run: |
222+
touch ./packages/protect-dynamodb/.env
223+
echo "CS_WORKSPACE_CRN=${{ secrets.CS_WORKSPACE_CRN }}" >> ./packages/protect-dynamodb/.env
224+
echo "CS_CLIENT_ID=${{ secrets.CS_CLIENT_ID }}" >> ./packages/protect-dynamodb/.env
225+
echo "CS_CLIENT_KEY=${{ secrets.CS_CLIENT_KEY }}" >> ./packages/protect-dynamodb/.env
226+
echo "CS_CLIENT_ACCESS_KEY=${{ secrets.CS_CLIENT_ACCESS_KEY }}" >> ./packages/protect-dynamodb/.env
227+
228+
- name: Create .env file in ./packages/drizzle/
229+
run: |
230+
touch ./packages/drizzle/.env
231+
echo "CS_WORKSPACE_CRN=${{ secrets.CS_WORKSPACE_CRN }}" >> ./packages/drizzle/.env
232+
echo "CS_CLIENT_ID=${{ secrets.CS_CLIENT_ID }}" >> ./packages/drizzle/.env
233+
echo "CS_CLIENT_KEY=${{ secrets.CS_CLIENT_KEY }}" >> ./packages/drizzle/.env
234+
echo "CS_CLIENT_ACCESS_KEY=${{ secrets.CS_CLIENT_ACCESS_KEY }}" >> ./packages/drizzle/.env
235+
echo "DATABASE_URL=postgres://cipherstash:password@localhost:5432/cipherstash" >> ./packages/drizzle/.env
236+
237+
# Build with Node (turbo/tsup need Node), then run tests with Bun
238+
- name: Build packages
239+
run: pnpm turbo build --filter './packages/*'
240+
241+
- name: Run tests with Bun
242+
run: |
243+
for dir in packages/schema packages/protect packages/stack packages/protect-dynamodb packages/drizzle packages/stack-forge; do
244+
if [ -f "$dir/vitest.config.ts" ] || [ -f "$dir/package.json" ]; then
245+
echo "--- Testing $dir ---"
246+
(cd "$dir" && bunx --bun vitest run) || true
247+
fi
248+
done

0 commit comments

Comments
 (0)