@@ -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