Message-ID: From: "fdcastel (@fdcastel)" To: "postgresql-interfaces/psqlodbc" Date: Sat, 14 Mar 2026 11:28:29 +0000 Subject: Re: [postgresql-interfaces/psqlodbc] PR #157: Upgrade GitHub Actions workflow In-Reply-To: References: List-Id: X-GitHub-Author-Login: fdcastel X-GitHub-Comment-Id: 4060326327 X-GitHub-Comment-Type: issue_comment X-GitHub-Issue: 157 X-GitHub-Repo: postgresql-interfaces/psqlodbc X-GitHub-Type: comment X-GitHub-Url: https://github.com/postgresql-interfaces/psqlodbc/pull/157#issuecomment-4060326327 Content-Type: text/plain; charset=utf-8 @davecramer I've updated the PR to address both of your concerns. Please feel free to share any additional questions or suggestions. ----- **What changed:** 1. **OpenSSL restored** — Both x64 and x86 builds now include OpenSSL (currently 3.3.6, matching `main`). The SSL DLLs are placed into `d:\postgresql\bin` and `d:\postgresql86\bin` so the installers pick them up correctly. 2. **PostgreSQL built from source** (`REL_18_STABLE`) — No more prebuilt binaries. The full x64 server is built with `ninja` + `ninja install` (same as before), and pkgconfiglite is back for OpenSSL detection. 3. **Rebased on latest `main`** — Includes the release 17.00.0008 changes and the OpenSSL 3.3.6 CVE fix. **What's kept from the original PR:** - **Parallel matrix** — standard and mimalloc run simultaneously - **Separate release job** — only runs on `REL-*` tags, uses `upload-artifact`/`download-artifact` - **Minimal x86 libpq build** — only builds the client library (with SSL now), not the full server. Much faster than a full x86 build. **What's new:** - **Dedicated `build-postgres` job** — Builds PostgreSQL x64 (full) and x86 (libpq only) once, caches the result. Both matrix jobs then restore from cache using `actions/cache/restore`. This avoids wasteful duplicate PG builds and speeds up cache-miss debugging runs. - **`workflow_dispatch` trigger** — Allows manual workflow runs from the Actions tab (useful for debugging). **Workflow structure:** ``` build-postgres → build-and-test (standard) → release (PG x64 full + x86 libpq) build-and-test (mimalloc) (only on REL-* tags) ``` **Timing (cached run on my fork):** | Job | Duration | |-----|----------| | build-postgres | 10s (cache hit) | | build-and-test (standard) | ~7m | | build-and-test (mimalloc) | ~8m | | **Total wall-clock** | **~9 min** | On a cold run (no cache), `build-postgres` will take longer to build PG from source, but the result is cached for all subsequent runs. The `WORKFLOW_VERSION_POSTGRESQL` env var can be bumped to invalidate the cache when needed.