fix(ci): release email workflow — public DB URL, no CI migrate#298
fix(ci): release email workflow — public DB URL, no CI migrate#298unjica wants to merge 25 commits into
Conversation
release: sync develop — release email workflow production fixes
GitHub Actions cannot reach Railway postgres.railway.internal; migrations stay a pre-tag manual step. Document public DATABASE_URL for the send ledger. Co-authored-by: Cursor <cursoragent@cursor.com>
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using default effort and found 4 potential issues.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit b39757e. Configure here.
|
|
||
| const options = { | ||
| hostname: 'api.telemetry-tracker.com', | ||
| path: '/api/project/source-maps', |
There was a problem hiding this comment.
Hardcoded production API hostname
Medium Severity
The upload step always posts to api.telemetry-tracker.com with no input for API base URL. Self-hosted or staging deployments cannot target their own API host, so the action fails or uploads maps to the wrong environment unless the file is forked and edited.
Reviewed by Cursor Bugbot for commit b39757e. Configure here.
| with: | ||
| session_cookie: ${{ secrets.TT_SESSION_COOKIE }} | ||
| project_id: "your-project-uuid-here" | ||
| release: ${{ github.event.release.tag_name }} |
There was a problem hiding this comment.
Release tag keeps v prefix
Medium Severity
The workflow example passes github.event.release.tag_name (e.g. v1.6.0) as release, while upload API docs and tests use semver without a v prefix. Maps are keyed by exact release string, so symbolication will not match errors sent with 1.6.0.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit b39757e. Configure here.
| // 2. Remove .map to get the original JS path | ||
| const jsPath = relativePath.replace(/\.map$/, ''); | ||
| // 3. Build the full URL | ||
| const bundleUrl = \`\${{ inputs.base_url }}/\${jsPath}\`; |
There was a problem hiding this comment.
Trailing slash doubles URL path
Medium Severity
bundle_url is built as `${base_url}/${jsPath}` without normalizing base_url. A trailing slash on base_url yields a double slash in the path, which can fail strict pathname matching during symbolication.
Reviewed by Cursor Bugbot for commit b39757e. Configure here.
| const files = findFiles('${{ inputs.artifact_path }}'); | ||
| if (files.length === 0) { | ||
| console.log('No source maps found to upload.'); | ||
| return; |
There was a problem hiding this comment.
Missing maps exits success
Low Severity
When no .map files are found under artifact_path, the script logs and returns without process.exit(1). A misconfigured path or failed build step still leaves the release upload job green.
Reviewed by Cursor Bugbot for commit b39757e. Configure here.


Summary
prisma migrate deployfrom Release product email — Actions runners cannot reachpostgres.railway.internal(Railway private network).DATABASE_URLmust be Railway’s public TCP proxy URL for the send ledger.Operator action (before re-run)
Update GitHub
productionenvironment secretDATABASE_URLto the public Postgres URL from Railway (not the internal*.railway.internalvalue copied from the API service).Test plan
main1.6.0/1.5.18Made with Cursor