pact-foundation / pact-reference

Reference implementations for the pact specifications
https://pact.io
MIT License
91 stars 46 forks source link

chore(ci): refactor indiv jobs #432

Closed YOU54F closed 3 weeks ago

YOU54F commented 3 weeks ago

Building individual targets allows us to identify where a single one fails, and gives us quicker feedback.

This mitigates some of the issues seen when building multiple targets with cross (wrong linker symbols), and allows us to enable per target caching which improves compile times.

Few other quality of life improvements are included (cron job, smoke test to weed out loading issues with the shared libraries)

Breaking changes

BREAKING CHANGE: macos aarch64 binaries now renamed to -macos-aarch64. (previously was apple-darwin for aarch64)

Rationale: for consistency with x86_64 apple target and other platforms

BREAKING CHANGE: macos binaries are now only published with -macos-. osx flavoured varieties are now discontinued

Rationale: for consistency with nomenclature, as osx not relevant today with latest version being macos 14

BREAKING CHANGE: sha256 files no longer contain full paths to files, only filenames

Rationale: The additional information is superfluous for end users, and requires them to modify the file for it to be usable. see pact-net

rholshausen commented 3 weeks ago

I hope you know what you are doing!

YOU54F commented 3 weeks ago

I hope you know what you are doing!

😅

I've given it a good smoke test across all the projects consuming it that are in my immediate radar (pact-js-core / pact-php / pact-net / pact-ruby-ffi / pact-go )

It's certainly reduced my feedback loop and helped me diagnose single target failures, and hopefully this should mitigate some of the initial concerns we get from maintainers on a new update. it's bork and we don't know, and have to go through the release shenanigans again with a fix that may or may not work (when its something in the cross compilation build process, that is a bit of a black box without being prepared to go really deep in yak shave territory)

I write up some release notes for the release page when this drops if it doesn't pick up my breaking change footer