reproducible-native-bundling-two-tasks
Installation
SKILL.md
Two-task native bundling
A desktop app that loads a native library has to get that library from somewhere. Building it inside CI drags the whole toolchain (archivers, patchers, container runtimes, a signing host) onto every runner, for artifacts that do not change between commits.
Split it into two entry points with different homes:
| Task | Runs | Does |
|---|---|---|
nativesBundleAll |
a dev machine, once per native version bump | build/collect every per-platform slice, pack one tarball each, print the digests |
nativesSetupAll |
every CI job, every build | download the published tarballs, verify against pinned digests, unpack |
The CI task needs nothing but a network connection, curl to fetch each tarball, and tar.
// adapted — names shortened, real digests elided
val slices = listOf("linux-x64", "macos-arm64", "macos-x64", "windows-x64", "windows-arm64")