Skip to content

test(types): introduce tstyche instead of tsd #16

test(types): introduce tstyche instead of tsd

test(types): introduce tstyche instead of tsd #16

Workflow file for this run

name: Preview release
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
# Using pull_request_target to access secrets when PRs come from forks
pull_request_target:
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 == 'workflow_dispatch' ||
github.event_name == 'push' ||
(github.event_name == 'pull_request_target' && 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
with:
# For pull_request_target, we need to explicitly checkout the PR's head
ref: ${{ github.event_name == 'pull_request_target' && github.event.pull_request.head.sha || github.sha }}
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Build
run: npm run build
- 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_target' ? 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_target'
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_target'
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