Updated component prompts #3247
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: DB migration compat | |
| on: | |
| push: | |
| branches-ignore: | |
| - main | |
| pull_request: | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: ${{ github.ref != 'refs/heads/dev' }} | |
| jobs: | |
| check-migrations-changed: | |
| name: Check if migrations changed | |
| runs-on: ubuntu-latest | |
| outputs: | |
| migrations_changed: ${{ steps.check-diff.outputs.migrations_changed }} | |
| base_branch: ${{ steps.check-diff.outputs.base_branch }} | |
| steps: | |
| - name: Checkout current branch | |
| uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| - name: Check for migration changes | |
| id: check-diff | |
| run: | | |
| # Determine base branch: dev compares to main, all others compare to dev | |
| if [ "${{ github.ref }}" = "refs/heads/dev" ]; then | |
| BASE_BRANCH="main" | |
| else | |
| BASE_BRANCH="dev" | |
| fi | |
| echo "base_branch=$BASE_BRANCH" >> $GITHUB_OUTPUT | |
| # Get the merge base with the base branch | |
| git fetch origin $BASE_BRANCH | |
| MERGE_BASE=$(git merge-base HEAD origin/$BASE_BRANCH) | |
| # Check if there are any changes in the migrations folder | |
| if git diff --quiet "$MERGE_BASE" HEAD -- apps/backend/prisma/migrations/; then | |
| echo "No changes in migrations folder" | |
| echo "migrations_changed=false" >> $GITHUB_OUTPUT | |
| else | |
| echo "Migrations have changed" | |
| echo "migrations_changed=true" >> $GITHUB_OUTPUT | |
| fi | |
| backwards-compatibility: | |
| name: Back-compat — Current branch migrations with ${{ needs.check-migrations-changed.outputs.base_branch }} branch code | |
| needs: check-migrations-changed | |
| if: needs.check-migrations-changed.outputs.migrations_changed == 'true' | |
| runs-on: ubicloud-standard-8 | |
| env: | |
| NODE_ENV: test | |
| STACK_ENABLE_HARDCODED_PASSKEY_CHALLENGE_FOR_TESTING: yes | |
| STACK_DATABASE_CONNECTION_STRING: "postgres://postgres:PASSWORD-PLACEHOLDER--uqfEC1hmmv@localhost:8128/stackframe" | |
| steps: | |
| # First, checkout the current branch to get its migrations | |
| - name: Checkout current branch | |
| uses: actions/checkout@v6 | |
| with: | |
| path: current-branch | |
| # Save the migrations folder from the current branch | |
| - name: Save current branch migrations | |
| run: | | |
| mkdir -p saved-migrations | |
| cp -r current-branch/apps/backend/prisma/migrations/* saved-migrations/ | |
| # Now checkout base branch (main for dev, dev for all others) | |
| - name: Checkout base branch | |
| uses: actions/checkout@v6 | |
| with: | |
| ref: ${{ needs.check-migrations-changed.outputs.base_branch }} | |
| path: base-branch | |
| # Move base-branch to the root for the rest of the workflow (keep base's migrations for now) | |
| - name: Setup working directory | |
| run: | | |
| shopt -s dotglob | |
| mv base-branch/* . | |
| rm -rf base-branch current-branch | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: 22.x | |
| - name: Setup pnpm | |
| uses: pnpm/action-setup@v4 | |
| # Start Docker Compose in the background | |
| - name: Start Docker Compose in background | |
| uses: JarvusInnovations/background-action@v1.0.7 | |
| with: | |
| run: docker compose -f docker/dependencies/docker.compose.yaml up --pull always -d & | |
| wait-on: /dev/null | |
| tail: true | |
| wait-for: 3s | |
| log-output-if: true | |
| - name: Install dependencies | |
| run: pnpm install --frozen-lockfile | |
| - name: Create .env.test.local file for apps/backend | |
| run: cp apps/backend/.env.development apps/backend/.env.test.local | |
| - name: Create .env.test.local file for apps/dashboard | |
| run: cp apps/dashboard/.env.development apps/dashboard/.env.test.local | |
| - name: Create .env.test.local file for apps/e2e | |
| run: cp apps/e2e/.env.development apps/e2e/.env.test.local | |
| - name: Create .env.test.local file for docs | |
| run: cp docs/.env.development docs/.env.test.local | |
| - name: Create .env.test.local file for examples/cjs-test | |
| run: cp examples/cjs-test/.env.development examples/cjs-test/.env.test.local | |
| - name: Create .env.test.local file for examples/demo | |
| run: cp examples/demo/.env.development examples/demo/.env.test.local | |
| - name: Create .env.test.local file for examples/docs-examples | |
| run: cp examples/docs-examples/.env.development examples/docs-examples/.env.test.local | |
| - name: Create .env.test.local file for examples/e-commerce | |
| run: cp examples/e-commerce/.env.development examples/e-commerce/.env.test.local | |
| - name: Create .env.test.local file for examples/middleware | |
| run: cp examples/middleware/.env.development examples/middleware/.env.test.local | |
| - name: Create .env.test.local file for examples/supabase | |
| run: cp examples/supabase/.env.development examples/supabase/.env.test.local | |
| - name: Create .env.test.local file for examples/convex | |
| run: cp examples/convex/.env.development examples/convex/.env.test.local | |
| - name: Build | |
| run: pnpm build | |
| - name: Wait on Postgres | |
| run: pnpm run wait-until-postgres-is-ready:pg_isready | |
| - name: Wait on Inbucket | |
| run: pnpx wait-on tcp:localhost:8129 | |
| - name: Wait on Svix | |
| run: pnpx wait-on tcp:localhost:8113 | |
| - name: Wait on ClickHouse | |
| run: pnpx wait-on http://localhost:8136/ping | |
| - name: Initialize database | |
| run: pnpm run db:init | |
| - name: Start stack-backend in background | |
| uses: JarvusInnovations/background-action@v1.0.7 | |
| with: | |
| run: pnpm run start:backend --log-order=stream & | |
| wait-on: | | |
| http://localhost:8102 | |
| tail: true | |
| wait-for: 30s | |
| log-output-if: true | |
| - name: Start stack-dashboard in background | |
| uses: JarvusInnovations/background-action@v1.0.7 | |
| with: | |
| run: pnpm run start:dashboard --log-order=stream & | |
| wait-on: | | |
| http://localhost:8101 | |
| tail: true | |
| wait-for: 30s | |
| log-output-if: true | |
| - name: Start mock-oauth-server in background | |
| uses: JarvusInnovations/background-action@v1.0.7 | |
| with: | |
| run: pnpm run start:mock-oauth-server --log-order=stream & | |
| wait-on: | | |
| http://localhost:8102 | |
| tail: true | |
| wait-for: 30s | |
| log-output-if: true | |
| - name: Start run-email-queue in background | |
| uses: JarvusInnovations/background-action@v1.0.7 | |
| with: | |
| run: pnpm -C apps/backend run run-email-queue --log-order=stream & | |
| wait-on: | | |
| http://localhost:8102 | |
| tail: true | |
| wait-for: 30s | |
| log-output-if: true | |
| - name: Start run-cron-jobs in background | |
| uses: JarvusInnovations/background-action@v1.0.7 | |
| if: ${{ hashFiles('apps/backend/scripts/run-cron-jobs.ts') != '' }} | |
| with: | |
| run: pnpm -C apps/backend run with-env:dev tsx scripts/run-cron-jobs.ts --log-order=stream & | |
| wait-on: | | |
| http://localhost:8102 | |
| tail: true | |
| wait-for: 30s | |
| log-output-if: true | |
| - name: Wait 10 seconds | |
| run: sleep 10 | |
| # First test run: base branch with base's migrations | |
| - name: Run tests (base branch with original migrations) | |
| run: pnpm test | |
| # Now copy over current branch's migrations and run migrate | |
| - name: Replace migrations with current branch migrations | |
| run: | | |
| rm -rf apps/backend/prisma/migrations/* | |
| cp -r saved-migrations/* apps/backend/prisma/migrations/ | |
| rm -rf saved-migrations | |
| - name: Run database migrations | |
| run: pnpm run db:migrate | |
| # Second test run: base branch code with new migrations applied | |
| - name: Run tests (base branch with new migrations) | |
| run: pnpm test | |
| - name: Verify data integrity | |
| run: pnpm run verify-data-integrity --no-bail | |
| - name: Print Docker Compose logs | |
| if: always() | |
| run: docker compose -f docker/dependencies/docker.compose.yaml logs | |
| forward-compatibility: | |
| name: Forward-compat — Current branch code with ${{ needs.check-migrations-changed.outputs.base_branch }} branch migrations | |
| needs: [check-migrations-changed, backwards-compatibility] | |
| if: always() && needs.backwards-compatibility.result == 'failure' | |
| runs-on: ubicloud-standard-8 | |
| env: | |
| NODE_ENV: test | |
| STACK_ENABLE_HARDCODED_PASSKEY_CHALLENGE_FOR_TESTING: yes | |
| STACK_DATABASE_CONNECTION_STRING: "postgres://postgres:PASSWORD-PLACEHOLDER--uqfEC1hmmv@localhost:8128/stackframe" | |
| steps: | |
| # First, checkout the base branch to get its migrations | |
| - name: Checkout base branch | |
| uses: actions/checkout@v6 | |
| with: | |
| ref: ${{ needs.check-migrations-changed.outputs.base_branch }} | |
| path: base-branch | |
| - name: Save base branch migrations | |
| run: | | |
| mkdir -p saved-migrations | |
| cp -r base-branch/apps/backend/prisma/migrations/* saved-migrations/ | |
| # Now checkout current branch (new code) | |
| - name: Checkout current branch | |
| uses: actions/checkout@v6 | |
| with: | |
| path: current-branch | |
| # Move current branch to the root for the rest of the workflow | |
| - name: Setup working directory | |
| run: | | |
| shopt -s dotglob | |
| mv current-branch/* . | |
| rm -rf current-branch base-branch | |
| # Replace current branch's migrations with base branch's (old) migrations | |
| - name: Replace migrations with base branch migrations | |
| run: | | |
| rm -rf apps/backend/prisma/migrations/* | |
| cp -r saved-migrations/* apps/backend/prisma/migrations/ | |
| rm -rf saved-migrations | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: 22.x | |
| - name: Setup pnpm | |
| uses: pnpm/action-setup@v4 | |
| # Start Docker Compose in the background | |
| - name: Start Docker Compose in background | |
| uses: JarvusInnovations/background-action@v1.0.7 | |
| with: | |
| run: docker compose -f docker/dependencies/docker.compose.yaml up --pull always -d & | |
| wait-on: /dev/null | |
| tail: true | |
| wait-for: 3s | |
| log-output-if: true | |
| - name: Install dependencies | |
| run: pnpm install --frozen-lockfile | |
| - name: Create .env.test.local file for apps/backend | |
| run: cp apps/backend/.env.development apps/backend/.env.test.local | |
| - name: Create .env.test.local file for apps/dashboard | |
| run: cp apps/dashboard/.env.development apps/dashboard/.env.test.local | |
| - name: Create .env.test.local file for apps/e2e | |
| run: cp apps/e2e/.env.development apps/e2e/.env.test.local | |
| - name: Create .env.test.local file for docs | |
| run: cp docs/.env.development docs/.env.test.local | |
| - name: Create .env.test.local file for examples/cjs-test | |
| run: cp examples/cjs-test/.env.development examples/cjs-test/.env.test.local | |
| - name: Create .env.test.local file for examples/demo | |
| run: cp examples/demo/.env.development examples/demo/.env.test.local | |
| - name: Create .env.test.local file for examples/docs-examples | |
| run: cp examples/docs-examples/.env.development examples/docs-examples/.env.test.local | |
| - name: Create .env.test.local file for examples/e-commerce | |
| run: cp examples/e-commerce/.env.development examples/e-commerce/.env.test.local | |
| - name: Create .env.test.local file for examples/middleware | |
| run: cp examples/middleware/.env.development examples/middleware/.env.test.local | |
| - name: Create .env.test.local file for examples/supabase | |
| run: cp examples/supabase/.env.development examples/supabase/.env.test.local | |
| - name: Create .env.test.local file for examples/convex | |
| run: cp examples/convex/.env.development examples/convex/.env.test.local | |
| - name: Build | |
| run: pnpm build | |
| - name: Wait on Postgres | |
| run: pnpm run wait-until-postgres-is-ready:pg_isready | |
| - name: Wait on Inbucket | |
| run: pnpx wait-on tcp:localhost:8129 | |
| - name: Wait on Svix | |
| run: pnpx wait-on tcp:localhost:8113 | |
| - name: Wait on ClickHouse | |
| run: pnpx wait-on http://localhost:8136/ping | |
| - name: Initialize database | |
| run: pnpm run db:init | |
| - name: Start stack-backend in background | |
| uses: JarvusInnovations/background-action@v1.0.7 | |
| with: | |
| run: pnpm run start:backend --log-order=stream & | |
| wait-on: | | |
| http://localhost:8102 | |
| tail: true | |
| wait-for: 30s | |
| log-output-if: true | |
| - name: Start stack-dashboard in background | |
| uses: JarvusInnovations/background-action@v1.0.7 | |
| with: | |
| run: pnpm run start:dashboard --log-order=stream & | |
| wait-on: | | |
| http://localhost:8101 | |
| tail: true | |
| wait-for: 30s | |
| log-output-if: true | |
| - name: Start mock-oauth-server in background | |
| uses: JarvusInnovations/background-action@v1.0.7 | |
| with: | |
| run: pnpm run start:mock-oauth-server --log-order=stream & | |
| wait-on: | | |
| http://localhost:8102 | |
| tail: true | |
| wait-for: 30s | |
| log-output-if: true | |
| - name: Start run-email-queue in background | |
| uses: JarvusInnovations/background-action@v1.0.7 | |
| with: | |
| run: pnpm -C apps/backend run run-email-queue --log-order=stream & | |
| wait-on: | | |
| http://localhost:8102 | |
| tail: true | |
| wait-for: 30s | |
| log-output-if: true | |
| - name: Start run-cron-jobs in background | |
| uses: JarvusInnovations/background-action@v1.0.7 | |
| if: ${{ hashFiles('apps/backend/scripts/run-cron-jobs.ts') != '' }} | |
| with: | |
| run: pnpm -C apps/backend run with-env:dev tsx scripts/run-cron-jobs.ts --log-order=stream & | |
| wait-on: | | |
| http://localhost:8102 | |
| tail: true | |
| wait-for: 30s | |
| log-output-if: true | |
| - name: Wait 10 seconds | |
| run: sleep 10 | |
| # Run tests: current branch code with base branch (old) migrations | |
| - name: Run tests (current branch code with base branch migrations) | |
| run: pnpm test | |
| - name: Verify data integrity | |
| run: pnpm run verify-data-integrity --no-bail | |
| - name: Print Docker Compose logs | |
| if: always() | |
| run: docker compose -f docker/dependencies/docker.compose.yaml logs | |
| # This job runs when migrations haven't changed, ensuring the workflow succeeds | |
| skip-unchanged: | |
| name: No migration changes (skipped) | |
| needs: check-migrations-changed | |
| if: needs.check-migrations-changed.outputs.migrations_changed == 'false' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: No migration changes detected | |
| run: echo "No changes to migrations folder detected. Skipping backwards compatibility test." |