ci: label-gated hosted-web preview deploys - #5465
Conversation
Labeling a PR preview:web deploys the web app as a plain non-prod, non-aliased Vercel deployment in the existing hosted-web project and comments the deployment URL on the PR. The build omits the T3 Connect cloud config, so previews boot as the hosted-static app with manual pairing only; pair a server into one with `t3 pair --tailscale`. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 672e454. Configure here.
|
|
||
| concurrency: | ||
| group: web-preview-${{ github.event.pull_request.number }} | ||
| cancel-in-progress: true |
There was a problem hiding this comment.
Unrelated labels cancel preview deploys
Medium Severity
Workflow-level concurrency with cancel-in-progress takes the slot before the job if runs. Unrelated labeled events (for example size labels from pr-size.yml) cancel an in-flight preview deploy, then the new run skips because the label is not preview:web, so no deploy finishes and the sticky URL is left missing or stale. The sibling mobile preview workflow keeps the same label gate but puts concurrency on the job so skipped runs never enter the group.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit 672e454. Configure here.
ApprovabilityVerdict: Needs human review This PR adds a CI workflow for label-gated preview deployments. While the change is low-risk (preview only, no production impact), there's an open review comment identifying a concurrency bug that could cause preview deploys to be canceled by unrelated label events, which should be addressed. You can customize Macroscope's approvability policy. Learn more. |


Testing client-only web changes today means running the whole stack locally or waiting for a release. Anything visible on app.t3.codes had no per-PR preview.
This adds a `preview:web` label that, when applied to a same-repo PR, deploys the web app to Vercel on that push and every subsequent push. The deploy is a plain non-prod, non-aliased deployment into the existing hosted-web project, so the `latest`/`nightly` channel aliases are never touched. A sticky PR comment carries the deployment URL.
How it fits the existing architecture:
Caveats:
The `preview:web` label has been created on the repo.
Written by Claude Fable 5 via Claude Code.
🤖 Generated with Claude Code
Note
Low Risk
CI-only, opt-in via label; deploys are non-prod and unaliased, reusing existing Vercel secrets with no application code changes.
Overview
Adds a
preview:webGitHub Actions workflow so same-repo PRs can get a per-push hosted-web deployment on Vercel without touchinglatest/nightlyaliases.The job runs only when the label is present (including on later pushes), skips fork PRs, checks out the PR head, installs
@t3tools/web, and runs a plainvercel deploy(no--prod, no channelbuild-envfor Clerk/relay). It upserts a sticky PR comment with the exact deployment URL and pairing instructions. Concurrency is per-PR with cancel-in-progress.Reviewed by Cursor Bugbot for commit 672e454. Bugbot is set up for automated code reviews on this repo. Configure here.
Note
Add label-gated Vercel preview deploys for web PRs
Adds a new web-preview.yml GitHub Actions workflow that deploys a Vercel preview when a same-repo PR has the
preview:weblabel. After deployment, it posts or updates a PR comment with the deployment URL for the current head SHA. Concurrency is scoped per-PR to cancel stale runs, and permissions are limited to contents read and pull-requests write.Macroscope summarized 672e454.