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`.
- 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.