Use the shared release and CI workflows - #5
Conversation
Replaces 283 lines of container setup, dependency bundling and release plumbing with calls into Silimate/actions. Behaviour changes that come with the shared workflows: - The macOS bundling is now the same fixed-point implementation used everywhere else, and it re-signs after rewriting load paths; a stale signature makes arm64 macOS refuse to run the binary. - Ninja still comes from the upstream release on CentOS 7 rather than EPEL, which is archived, but that is now handled by the with-ninja input. - Adds a smoke test that unpacks each tarball somewhere unrelated to the build tree and runs prunefl --version. - Pull requests build and smoke-test all three platforms without publishing.
Greptile SummaryThis PR replaces the repository's inline release packaging and CMake CI implementations with organization-wide reusable workflows.
Confidence Score: 4/5The PR appears safe to merge, with the non-blocking recommendation to pin the write-privileged release workflow to an immutable reviewed commit. The event expressions correctly disable publication for pull requests and default draft mode off, while the only accepted concern is the supply-chain exposure created by resolving privileged workflow code through a mutable Files Needing Attention: .github/workflows/release.yml
|
| Filename | Overview |
|---|---|
| .github/workflows/release.yml | Replaces local cross-platform packaging and release logic with a shared reusable workflow; the privileged call should be pinned immutably. |
| .github/workflows/test.yml | Replaces the inline Ubuntu/macOS CMake matrix with the shared C++ CI workflow while retaining the existing runner and generator choices. |
Flowchart
%%{init: {'theme': 'neutral'}}%%
flowchart TD
E{Workflow event} -->|Pull request| R[Shared native tarball workflow]
E -->|Push to main| R
E -->|Manual dispatch| R
R --> B[Build three platform tarballs]
B --> S[Unpack and smoke-test prunefl]
S --> P{publish input}
P -->|false| N[Do not publish]
P -->|true| D{draft input}
D -->|false| L[Publish release and update latest]
D -->|true| DR[Publish draft and preserve latest]
T[Push event] --> C[Shared CMake CI workflow]
C --> U[Ubuntu 24.04 build and tests]
C --> M[macOS 15 build and tests]
Reviews (1): Last reviewed commit: "Use the shared release and CI workflows" | Re-trigger Greptile
Summary
release.yml271 lines down to 38,test.yml32 down to 20.Behaviour changes
install_name_toolrewrites load paths. The previous version copied dylibs but never re-signed, which leaves arm64 binaries that macOS refuses to run.with-ninjainput rather than an inlinecurlplus a Python one-liner to unzip.prunefl --version.ctestnow runs with--output-on-failure.Test plan
test.ymlpasses on ubuntu-24.04 and macos-15tar tzfof the produced artifacts against the currentlatestrelease assetsMade with Cursor