Due to [an issue][1] with the `actions/upload-artifact` action, when
binaries are uploaded they lose permission bits and `xattr` properties.
Composite actions `upload-tar` and `download-tar` have been added that
tarball the artifacts before uploading them to retain those properties.
[1]: https://github.com/actions/upload-artifact/issues/38
Changelog:
- Sign & notarize Recyclarr on macOS platforms (arm64, x64)
- Use `tar.xz` instead of `zip` on mac & linux platforms
- Compile linux binaries on the ubuntu-latest Github runner
- Compile macOS binaries on the macos-latest Github runner
- Executable size reduced by disabling ReadyToRun
Fixes#39
Edge builds previously would either download from the latest release on
github or directly compile the code. However, dotnet apparently has some
compatibility issues when run inside of a container built with qemu +
buildx.
The approach chosen going forward is to simply copy the builds from the
github workflow artifacts directly into the container during the build
process. This ended up causing a lot of change, mainly cleanup and
simplifying things.
Single-file builds incur a performance cost. Mainly because the runtime
must extract the contents of the C# application to a temp directory in
order for it to run. In a Docker container, single-file offers no
tangible benefit because the user isn't interacting directly with those
files.
To gain some performance improvement, single-file is disabled for MUSL
builds. Furthermore, the docker image is reconfigured to place the
Recyclarr binary files in a different directory. Previously, as a
single-file binary, it was placed in the container at `/usr/local/bin`,
but now that it is a multiple-file application, it now lives in
`/app/recyclarr`.
The matrix build for published platforms is getting extremely large.
It's no longer efficient or productive to run the unit tests during that
job. Instead, a much smaller job is now run prior to the Build job for
running tests.
Squashed commit of the following:
commit 673f4b7441d910cf25dce6842552a06bf5f76490
Author: Robert Dailey <rcdailey@gmail.com>
Date: Wed Nov 10 12:37:55 2021 -0600
Add SonarCloud integration
commit 5dfe5cf7a2c2a96ecdc0c684c605334460efbf73
Author: Robert Dailey <rcdailey@gmail.com>
Date: Wed Nov 10 12:46:40 2021 -0600
Reformat YAML
commit d210104ffee6fea81304312588e9fa89fb1a86f0
Author: Robert Dailey <rcdailey@gmail.com>
Date: Wed Nov 10 12:46:16 2021 -0600
Remove stale comments in build.yml
commit 66f18519c39b1cece888d7028cd2056d2f8dfbe3
Author: Robert Dailey <rcdailey@gmail.com>
Date: Wed Nov 10 12:44:28 2021 -0600
Set up schema for build.yml
- Executable is now compiled using Ready to Run. This increases the size
of the executable but makes the code much faster.
- `src` directory is no longer the cwd
- The matrix build in build.yml now runs on its respective platform to
avoid cross compilation. Cross compiling does not work with the
ReadyToRun optimization on, see:
https://docs.microsoft.com/en-us/dotnet/core/deploying/ready-to-run#cross-platformarchitecture-restrictions
- publish and zip steps in the workflow have been put in a powershell
script for reusability and to keep the workflow YAML minimal.