This includes:
- Building in release mode for all release platforms on all PRs and
merges/pushes.
- Publishing release assets on tags.
The extra benefit here is that the release assets are not pushed unless
all builds are successful, which was not the case before, leading to
0.2.13 without Windows binaries. We also make it necessary for all tests
and lints to pass.
Another benefit is that builds now have artifacts published, allowing
to download them for some period of time after they were produced on
a PR or on master.
The setup for musl-based builds suffers on arm64 from not being able to
build natively (per lack of arm64 runners), and from Ubuntu not having
musl-cross packages, so it requires a little manual (hackish)
cross-compilation work.
The Linux builds can safely be done on a newer version of the base
system as we are using the musl runtime, and compile openssl statically,
preventing any dependency on symbols from too new systems, ensuring
binary compatibility with older systems.
The macOS builds were done against Xcode 9.4 (the default on Travis),
which targets macOS 10.13. The 10.13 SDK is not available on Github
Actions, but we can set the deployment target to that value while using
the 10.14 SDK from Xcode 10.3 for binary compatibility. In theory, we
should be able to use an even newer Xcode/SDK, but I'd rather not risk
it at this point.
The Windows builds should have no binary compatibility issues.
The S3 and Redis caches are optional during build time.
Enable feature "s3" and/or "redis" to build sccache with
support for those backends. Only the local disk cache
is available by default. The "all" feature enables both.
This patch is changing the current default behavior that
always has S3 support.