|
10 | 10 |
|
11 | 11 | jobs: |
12 | 12 | run-tests: |
13 | | - name: Run Tests |
| 13 | + name: Run Tests (Node ${{ matrix.node-version }}) |
14 | 14 | runs-on: blacksmith-4vcpu-ubuntu-2404 |
| 15 | + strategy: |
| 16 | + matrix: |
| 17 | + node-version: [22, 24] |
15 | 18 |
|
16 | 19 | # Postgres + EQL for the integration tests. Official EQL image — |
17 | 20 | # PostgreSQL 17 with EQL pre-installed via /docker-entrypoint-initdb.d. |
|
44 | 47 | - name: Install Node.js |
45 | 48 | uses: actions/setup-node@v6 |
46 | 49 | with: |
47 | | - node-version: 22 |
| 50 | + node-version: ${{ matrix.node-version }} |
48 | 51 | cache: 'pnpm' |
49 | 52 |
|
50 | 53 | # node-pty's install hook falls back to `node-gyp rebuild` when no |
@@ -152,3 +155,94 @@ jobs: |
152 | 155 | # job above; we filter to the new workspace here to avoid duplication. |
153 | 156 | - name: Run E2E tests |
154 | 157 | 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