Skip to content

ci: Publish pg_search to Postgres.app via PR from paradedb-bot#4913

Open
philippemnoel wants to merge 18 commits into
mainfrom
add-publish-pg_search-postgresapp-workflow
Open

ci: Publish pg_search to Postgres.app via PR from paradedb-bot#4913
philippemnoel wants to merge 18 commits into
mainfrom
add-publish-pg_search-postgresapp-workflow

Conversation

@philippemnoel
Copy link
Copy Markdown
Member

@philippemnoel philippemnoel commented Apr 28, 2026

Summary

Closes #4630

  • Adds .github/workflows/publish-pg_search-postgresapp.yml that builds a Postgres.app installer .pkg for pg_search on each release tag (PG 18 only — earlier versions don't support extensions installed in Application Support).
  • The pkg is uploaded to the existing GitHub Release at v<version> and named pg_search-pg18-<version>.pkg, matching the naming convention used by PostgresApp/Extensions.
  • The pkg is built using the upstream build assets (Resources/, Scripts/, distribution.xml) cloned from PostgresApp/Extensions at workflow time, so the installer layout, identifiers, install location, and pre/post-install behavior match what Postgres.app maintainers ship for other extensions.
  • The workflow then opens a PR from paradedb-bot's fork to PostgresApp/PostgresApp updating version and download_url in docs/_data/extensions/18/pg_search.json (the source for https://postgresapp.com/extensions/), per Jakob's guidance that download metadata is now stored as JSON.
  • Any previous open PR authored by paradedb-bot upstream is closed with a "Superseded" comment before the new one is opened, so only the latest release is ever pending review.

See PostgresApp/PostgresApp#799 for the upstream conversation that motivated this.

Notes

  • The pkg is currently unsigned/unnotarized — same bar as publish-pg_search-macos.yml. Upstream's build.zsh runs codesign against Developer ID Application and uses notarytool with a postgresapp keychain profile; we skip both because we don't have an Apple Developer cert wired up in CI yet. Installers will trigger a Gatekeeper warning on first install. Apple Developer codesigning + notarytool can be added later when the secrets are configured.
  • paradedb-bot does not yet have a fork of PostgresApp/PostgresAppgh repo fork creates it on first run.
  • PARADEDB_BOT_GITHUB_TOKEN needs public_repo scope to fork and open PRs against the public upstream (already required by other publish workflows).

Test plan

  • Trigger the workflow via workflow_dispatch against an existing release tag and confirm the pkg is uploaded to the release.
  • Verify a PR is opened against PostgresApp/PostgresApp from paradedb-bot:update-pg_search-<version>-pg18 updating version and download_url in docs/_data/extensions/18/pg_search.json.
  • Re-run the workflow with a different version and confirm the prior open bot PR is closed before the new one is opened.
  • Install the resulting .pkg on a Mac with Postgres.app PG 18 and run CREATE EXTENSION pg_search; to confirm the layout is correct.

@philippemnoel philippemnoel requested a review from a team as a code owner April 28, 2026 23:25
@philippemnoel philippemnoel requested a review from mdashti April 28, 2026 23:25
@philippemnoel philippemnoel added the Do Not Cherry Pick PR should not be cherry-picked to other branches label Apr 28, 2026
@philippemnoel philippemnoel force-pushed the add-publish-pg_search-postgresapp-workflow branch from abf86f3 to c74c59b Compare April 29, 2026 21:22
@philippemnoel
Copy link
Copy Markdown
Member Author

See here for workflow testing: https://github.com/paradedb/paradedb/releases/tag/v0.0.0

Comment thread .github/workflows/publish-pg_search-postgresapp.yml Outdated
Comment thread .github/workflows/publish-pg_search-postgresapp.yml Outdated
Comment thread .github/workflows/publish-pg_search-postgresapp.yml Outdated
Adds a workflow that builds a Postgres.app installer .pkg for pg_search
on each release tag, uploads it to the GitHub Release, and opens a PR
from paradedb-bot's fork to PostgresApp/PostgresApp updating the
download link on https://postgresapp.com/extensions/. Any previous open
PR from the bot is closed first so only the latest release is pending
review upstream.

See PostgresApp/PostgresApp#799 for context.
- Clone PostgresApp/Extensions and reuse its Resources/, Scripts/, and
  distribution.xml so the pkg matches what Postgres.app maintainers ship
  for other extensions (codesign/notarize still skipped pending cert).
- Switch the upstream PR target from docs/extensions/index.md regex edits
  to a clean JSON update at docs/_data/extensions/<pg>/pg_search.json,
  per Jakob's note that download metadata now lives there.
- Use the upstream pkg identifier (com.postgresapp.extension.<pg>.<ext>)
  and naming (pg_search-pg<pg>-<ver>.pkg) for parity with other
  Postgres.app extensions.
@philippemnoel philippemnoel force-pushed the add-publish-pg_search-postgresapp-workflow branch from b492b77 to 5716365 Compare May 4, 2026 18:13
@philippemnoel
Copy link
Copy Markdown
Member Author

This is waiting on Apple to approve our developer account

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Do Not Cherry Pick PR should not be cherry-picked to other branches

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Support pre-packaged Postgres: Postgres.app

2 participants