Skip to content

[chore]: bump homebrew cask to 4.196.0 #6962

[chore]: bump homebrew cask to 4.196.0

[chore]: bump homebrew cask to 4.196.0 #6962

name: Storage Integration
# Storage-layer tests that previously used PGlite (WASM-emulated Postgres)
# now run against a real `postgres:16` service so the SQL surface, query
# planner, RETURNING/ON CONFLICT semantics, advisory locks, LISTEN/NOTIFY,
# and extension behavior all match production. PGlite produced false
# confidence — passing locally, sometimes failing in prod.
#
# Lives outside the unit-test workflow because real Postgres is
# infrastructure per TESTING.md. No HTTP, no auth, no Playwright — just
# the storage adapters being exercised against a real DB.
on:
push:
branches:
- main
# Skip pushes to main that only touch the version bump, CI/workflow config,
# or docs — none need the suite re-run (PRs already validated them, and the
# [release] bump is owned by release-studio).
paths-ignore:
- "apps/api/package.json"
- ".github/**"
- "apps/docs/**"
- "**/*.md"
pull_request:
branches:
- main
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
jobs:
# See test.yml for why this gate exists: skip the (required) check without
# leaving it stuck pending. Scoped tighter than test.yml's gate: every
# *.integration.test.ts lives under apps/api and imports only apps/api +
# packages code, so web/plugins/scripts-only PRs skip the suite entirely.
# Pushes to main always run.
changes:
runs-on: ubuntu-latest
outputs:
relevant: ${{ steps.filter.outputs.relevant }}
steps:
- name: Detect relevant changes
id: filter
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
HEAD_MSG: ${{ github.event.head_commit.message }}
run: |
if [ "${{ github.event_name }}" != "pull_request" ]; then
# Push to main runs everything — except the [release]: version-bump
# commit, which only touches the version string. release-studio picks
# that commit up on its own push trigger and cuts the release.
case "$HEAD_MSG" in
'[release]:'*) echo "relevant=false" >> "$GITHUB_OUTPUT" ;;
*) echo "relevant=true" >> "$GITHUB_OUTPUT" ;;
esac
exit 0
fi
set +e
if ! FILES=$(gh api --paginate \
"repos/${{ github.repository }}/pulls/${{ github.event.pull_request.number }}/files" \
--jq '.[].filename'); then
echo "Could not list PR files — running to be safe."
echo "relevant=true" >> "$GITHUB_OUTPUT"
exit 0
fi
echo "Changed files:"; echo "$FILES"
relevant=false
while IFS= read -r f; do
[ -z "$f" ] && continue
case "$f" in
*.md) ;;
apps/api/*|packages/*) relevant=true; break ;;
esac
done <<< "$FILES"
echo "relevant=$relevant" >> "$GITHUB_OUTPUT"
storage-integration:
needs: changes
if: needs.changes.outputs.relevant == 'true'
runs-on: ubuntu-latest
services:
postgres:
image: public.ecr.aws/docker/library/postgres:16
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: postgres
ports:
- 5432:5432
options: >-
--health-cmd "pg_isready -U postgres"
--health-interval 5s
--health-timeout 5s
--health-retries 10
env:
DATABASE_URL: postgresql://postgres:postgres@localhost:5432/postgres
# MinIO, started below — backs the s3-service integration test.
S3_ENDPOINT: http://localhost:9000
S3_ACCESS_KEY_ID: minioadmin
S3_SECRET_ACCESS_KEY: minioadmin
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Bun and install dependencies
uses: ./.github/actions/setup-bun
- name: Run migrations
run: bun run --cwd=apps/api migrate
# Backs the s3-service integration test. The test creates its own bucket
# in beforeAll, so this only needs the server up. Shared composite action
# so the pinned image version stays in sync with e2e.yml.
- name: Start MinIO
uses: ./.github/actions/start-minio
# Convention: every `*.integration.test.ts` file is picked up here.
# Adding a new integration test = create a `something.integration.test.ts`
# and it auto-routes to this workflow. See TESTING.md.
#
# One bun process per file: cleanest isolation between heavy-DB
# files. The previous signal-tolerance branch (exit > 128 +
# (pass) marker → accept) is gone because the Bun teardown crash
# it caught was DuckDB's N-API finalizer — neutralized in code by
# the `monitoringEngines` stub in the context-factory test. CI
# confirmed no other test trips a teardown crash. If a real one
# ever shows up, it should fail loudly so we diagnose it instead
# of silently swallowing it.
- name: Run storage integration tests
run: |
set -e
while IFS= read -r f; do
echo "::group::$f"
bun test "$f"
echo "::endgroup::"
done < <(find apps/api packages -name '*.integration.test.ts' -not -path '*/node_modules/*' | sort)