test(heartbeat): add embedded-postgres regression test for stale sess… #22
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: Release | |
| on: | |
| push: | |
| branches: | |
| - master | |
| workflow_dispatch: | |
| inputs: | |
| source_ref: | |
| description: Commit SHA, branch, or tag to publish as stable | |
| required: true | |
| type: string | |
| default: master | |
| stable_date: | |
| description: Enter a UTC date in YYYY-MM-DD format, for example 2026-03-18. Do not enter a version string. The workflow will resolve that date to a stable version such as 2026.318.0, then 2026.318.1 for the next same-day stable. | |
| required: false | |
| type: string | |
| dry_run: | |
| description: Preview the stable release without publishing | |
| required: true | |
| type: boolean | |
| default: false | |
| concurrency: | |
| group: release-${{ github.event_name }}-${{ github.ref }} | |
| cancel-in-progress: false | |
| jobs: | |
| verify_canary: | |
| if: github.event_name == 'push' | |
| uses: ./.github/workflows/release-verify.yml | |
| with: | |
| ref: ${{ github.sha }} | |
| publish_canary: | |
| if: github.event_name == 'push' | |
| needs: verify_canary | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 45 | |
| environment: npm-canary | |
| permissions: | |
| contents: write | |
| id-token: write | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v7 | |
| with: | |
| fetch-depth: 0 | |
| - name: Setup pnpm | |
| uses: pnpm/action-setup@v6 | |
| with: | |
| version: 9.15.4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v7 | |
| with: | |
| node-version: 24 | |
| cache: pnpm | |
| - name: Validate release package manifest | |
| run: node ./scripts/release-package-map.mjs check | |
| - name: Install dependencies | |
| run: pnpm install --no-frozen-lockfile | |
| - name: Restore tracked install-time changes | |
| run: git checkout -- pnpm-lock.yaml | |
| - name: Configure git author | |
| run: | | |
| git config user.name "github-actions[bot]" | |
| git config user.email "41898282+github-actions[bot]@users.noreply.github.com" | |
| - name: Publish canary | |
| env: | |
| GITHUB_ACTIONS: "true" | |
| run: ./scripts/release.sh canary --skip-verify | |
| - name: Dump npm debug logs | |
| if: failure() | |
| run: | | |
| shopt -s nullglob | |
| for f in "$HOME"/.npm/_logs/*.log; do | |
| echo "===== $f =====" | |
| tail -n 300 "$f" | sed -E \ | |
| -e 's#((authorization|_authToken|_auth|node_auth_token|npm_token)"?[[:space:]]*[:=][[:space:]]*"?)(Bearer[[:space:]]+)?[^",[:space:]]+#\1***REDACTED***#Ig' | |
| done | |
| - name: Push canary tag | |
| run: | | |
| tag="$(git tag --points-at HEAD | grep '^canary/v' | head -1)" | |
| if [ -z "$tag" ]; then | |
| echo "Error: no canary tag points at HEAD after release." >&2 | |
| exit 1 | |
| fi | |
| git push origin "refs/tags/${tag}" | |
| verify_stable: | |
| if: github.event_name == 'workflow_dispatch' | |
| uses: ./.github/workflows/release-verify.yml | |
| with: | |
| ref: ${{ inputs.source_ref }} | |
| preview_stable: | |
| if: github.event_name == 'workflow_dispatch' && inputs.dry_run | |
| needs: verify_stable | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 45 | |
| permissions: | |
| contents: read | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v7 | |
| with: | |
| fetch-depth: 0 | |
| ref: ${{ inputs.source_ref }} | |
| - name: Setup pnpm | |
| uses: pnpm/action-setup@v6 | |
| with: | |
| version: 9.15.4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v7 | |
| with: | |
| node-version: 24 | |
| cache: pnpm | |
| - name: Validate release package manifest | |
| run: node ./scripts/release-package-map.mjs check | |
| - name: Install dependencies | |
| run: pnpm install --no-frozen-lockfile | |
| - name: Dry-run stable release | |
| env: | |
| GITHUB_ACTIONS: "true" | |
| run: | | |
| args=(stable --skip-verify --dry-run) | |
| if [ -n "${{ inputs.stable_date }}" ]; then | |
| args+=(--date "${{ inputs.stable_date }}") | |
| fi | |
| ./scripts/release.sh "${args[@]}" | |
| publish_stable: | |
| if: github.event_name == 'workflow_dispatch' && !inputs.dry_run | |
| needs: verify_stable | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 45 | |
| environment: npm-stable | |
| permissions: | |
| contents: write | |
| id-token: write | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v7 | |
| with: | |
| fetch-depth: 0 | |
| ref: ${{ inputs.source_ref }} | |
| - name: Setup pnpm | |
| uses: pnpm/action-setup@v6 | |
| with: | |
| version: 9.15.4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v7 | |
| with: | |
| node-version: 24 | |
| cache: pnpm | |
| - name: Install dependencies | |
| run: pnpm install --no-frozen-lockfile | |
| - name: Restore tracked install-time changes | |
| run: git checkout -- pnpm-lock.yaml | |
| - name: Configure git author | |
| run: | | |
| git config user.name "github-actions[bot]" | |
| git config user.email "41898282+github-actions[bot]@users.noreply.github.com" | |
| - name: Publish stable | |
| env: | |
| GITHUB_ACTIONS: "true" | |
| run: | | |
| args=(stable --skip-verify) | |
| if [ -n "${{ inputs.stable_date }}" ]; then | |
| args+=(--date "${{ inputs.stable_date }}") | |
| fi | |
| ./scripts/release.sh "${args[@]}" | |
| - name: Dump npm debug logs | |
| if: failure() | |
| run: | | |
| shopt -s nullglob | |
| for f in "$HOME"/.npm/_logs/*.log; do | |
| echo "===== $f =====" | |
| tail -n 300 "$f" | sed -E \ | |
| -e 's#((authorization|_authToken|_auth|node_auth_token|npm_token)"?[[:space:]]*[:=][[:space:]]*"?)(Bearer[[:space:]]+)?[^",[:space:]]+#\1***REDACTED***#Ig' | |
| done | |
| - name: Push stable tag | |
| run: | | |
| tag="$(git tag --points-at HEAD | grep '^v' | head -1)" | |
| if [ -z "$tag" ]; then | |
| echo "Error: no stable tag points at HEAD after release." >&2 | |
| exit 1 | |
| fi | |
| git push origin "refs/tags/${tag}" | |
| - name: Create GitHub Release | |
| env: | |
| GH_TOKEN: ${{ github.token }} | |
| PUBLISH_REMOTE: origin | |
| run: | | |
| version="$(git tag --points-at HEAD | grep '^v' | head -1 | sed 's/^v//')" | |
| if [ -z "$version" ]; then | |
| echo "Error: no v* tag points at HEAD after stable release." >&2 | |
| exit 1 | |
| fi | |
| ./scripts/create-github-release.sh "$version" |