Skip to content

Fix Windows binary builds and publish job artifact download failure#146

Merged
jasdeepkhalsa merged 3 commits intomasterfrom
fix/windows-binaries
Mar 7, 2026
Merged

Fix Windows binary builds and publish job artifact download failure#146
jasdeepkhalsa merged 3 commits intomasterfrom
fix/windows-binaries

Conversation

@jasdeepkhalsa
Copy link
Copy Markdown
Member

@jasdeepkhalsa jasdeepkhalsa commented Mar 7, 2026

Fix Windows binary builds and publish job artifact download failure

  • Expanded PHP versions in test matrix to include 8.1 (minimum supported version) and 8.2 everywhere

win32-x64 / win32-arm64 — wrong library names in spc download

Root cause: SPC_WINDOWS_LIBS used bare names postgresql and libiconv,
which download the Unix source tarballs and register download locks under those
names. SPC's Windows build system then looks for postgresql-win and
libiconv-win (pre-built Visual C++ binary packages), finds no lock entry, and
fails immediately:

Building required lib [postgresql-win]
Source [postgresql-win] not downloaded or not locked, you should download it first!

Fix: Use the correct Windows package names in SPC_WINDOWS_LIBS:

# Before
libiconv,libxml2,postgresql,sqlite

# After — explicit -win suffix for the VC++ prebuilt packages
libiconv-win,libxml2,postgresql-win,sqlite

libxml2 and sqlite are built from source on all platforms and have no -win variant.


Publish job — Docker build-cache artifacts crash the download step

Root cause: The download-artifact step had no pattern filter, so it
attempted to download every artifact in the run — including
DBDiff~DBDiff~*.dockerbuild build-cache blobs uploaded by the Docker job.
Those are internal BuildKit cache references that cannot be downloaded as normal
artifacts, causing:

Unable to download artifact(s): Unable to download and extract artifact:
Artifact download failed after 5 retries.

This killed the entire publish job even when all required dbdiff-* artifacts
were available.

Fix: Add pattern: dbdiff-* to the download-artifact step so only PHAR
and binary artifacts are fetched:

- uses: actions/download-artifact@v4
  with:
    path: binaries/
    pattern: dbdiff-*
    merge-multiple: false

SPC Windows builds use pre-built VC++ packages registered under the
-win suffix. Bare names (postgresql/libiconv) download Unix source
archives, never locking postgresql-win/libiconv-win, so build fails
with "not downloaded or not locked".
PHP 8.1 was already in unit tests but missing from MySQL, SQLite, and
PostgreSQL integration matrices. PHP 8.2 was absent from everything
despite composer.json declaring >=8.1 as the floor.

- tests.yml: all four matrices now cover [8.1, 8.2, 8.3, 8.4, 8.5]
- docker-compose.yml: add cli-php81-* and cli-php82-* service blocks
- start.sh: add PHP_VERSION_81/82 defaults, include in PHP_VERSIONS
  array, update fallback default, add CLI service echo entries
- README.md: CI matrix count 4x4=16 -> 6x4=24
- DOCKER.md: add 8.1 and 8.2 to PHP versions and service lists
@sonarqubecloud
Copy link
Copy Markdown

sonarqubecloud bot commented Mar 7, 2026

@jasdeepkhalsa jasdeepkhalsa merged commit 73deabc into master Mar 7, 2026
57 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant