Skip to content

chore: trigger supabase-js tests #635

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Aug 13, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
135 changes: 131 additions & 4 deletions .github/workflows/preview-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,46 @@ permissions:
pull-requests: write

on:
# Manual trigger with inputs for control
workflow_dispatch:
inputs:
trigger_supabase_js:
description: 'Trigger supabase-js tests'
type: boolean
default: true
target_branch:
description: 'Target branch for supabase-js tests'
type: string
default: 'master'

# Push to master - only when source code changes
push:
branches:
- master
paths:
- 'src/**'
- 'package.json'
- 'package-lock.json'
- 'tsconfig.json'

# PR triggers - only when labeled
pull_request:
types: [opened, synchronize, labeled]
types: [labeled, synchronize]

jobs:
preview:
# Run only for PRs with 'trigger: preview' label or pushes to master
if: >
github.repository == 'supabase/postgrest-js' &&
(github.event_name == 'push' ||
(github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'trigger: preview')))
(
github.event_name == 'workflow_dispatch' ||
github.event_name == 'push' ||
(github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'trigger: preview'))
)
runs-on: ubuntu-latest
outputs:
preview-url: ${{ steps.preview.outputs.url }}
package-name: ${{ steps.preview.outputs.package }}
steps:
- name: Checkout code
uses: actions/checkout@v4
Expand All @@ -33,4 +60,104 @@ jobs:
- name: Build
run: npm run build

- run: npx pkg-pr-new@latest publish --compact
- name: Publish preview
id: preview
run: |
OUTPUT=$(npx pkg-pr-new@latest publish --compact 2>&1)
PREVIEW_URL=$(echo "$OUTPUT" | grep -o 'https://pkg\.pr\.new/@supabase/[^[:space:]]*' | head -1)
REPO_NAME=$(echo "$GITHUB_REPOSITORY" | cut -d'/' -f2)

if [ -z "$PREVIEW_URL" ]; then
echo "Error: Failed to extract preview URL from pkg-pr-new output"
echo "Output was: $OUTPUT"
exit 1
fi

echo "Preview Release URL: $PREVIEW_URL"
echo "url=$PREVIEW_URL" >> $GITHUB_OUTPUT
echo "package=$REPO_NAME" >> $GITHUB_OUTPUT

trigger-supabase-js-tests:
needs: preview
# Only run if preview URL exists and either:
# - Not workflow_dispatch, OR
# - workflow_dispatch with trigger_supabase_js = true
if: >
needs.preview.outputs.preview-url != '' &&
(
github.event_name != 'workflow_dispatch' ||
github.event.inputs.trigger_supabase_js == 'true'
)
runs-on: ubuntu-latest
steps:
- name: Generate GitHub App token
id: generate-token
uses: actions/create-github-app-token@v1
with:
app-id: ${{ vars.CROSS_REPO_APP_ID }}
private-key: ${{ secrets.CROSS_REPO_APP_PRIVATE_KEY }}
owner: supabase
repositories: postgrest-js,supabase-js

- name: Trigger supabase-js CI tests
uses: actions/github-script@v7
with:
github-token: ${{ steps.generate-token.outputs.token }}
script: |
const prNumber = context.issue.number || 'push';
const triggeringRepo = context.repo.repo;
// Use input target_branch if workflow_dispatch, otherwise default to master
const targetBranch = context.eventName === 'workflow_dispatch' && context.payload.inputs?.target_branch
? context.payload.inputs.target_branch
: 'master';

try {
const response = await github.rest.actions.createWorkflowDispatch({
owner: 'supabase',
repo: 'supabase-js',
workflow_id: 'external-test.yml',
ref: targetBranch,
inputs: {
triggering_repo: triggeringRepo,
triggering_pr: prNumber.toString(),
preview_url: '${{ needs.preview.outputs.preview-url }}',
package_name: '${{ needs.preview.outputs.package-name }}',
triggering_sha: context.eventName === 'pull_request' ? context.payload.pull_request.head.sha : context.sha
}
});

console.log('Successfully triggered supabase-js tests');
console.log('Response:', response.status);
} catch (error) {
console.error('Failed to trigger supabase-js tests:', error);
throw error;
}

- name: Find existing preview comment
if: github.event_name == 'pull_request'
uses: peter-evans/find-comment@v3
id: find-comment
with:
token: ${{ secrets.GITHUB_TOKEN }}
issue-number: ${{ github.event.pull_request.number }}
comment-author: 'github-actions[bot]'
body-includes: '<!-- postgrest-js-preview-status -->'

- name: Create or update preview comment
if: github.event_name == 'pull_request'
uses: peter-evans/create-or-update-comment@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}
comment-id: ${{ steps.find-comment.outputs.comment-id }}
issue-number: ${{ github.event.pull_request.number }}
body: |
<!-- postgrest-js-preview-status -->
🚀 **Preview release created!**

supabase-js CI tests have been automatically triggered on feature branch to verify compatibility.

**Preview package:** `${{ needs.preview.outputs.preview-url }}`

Results will be posted here once testing is complete.

edit-mode: replace