The reason for this is to avoid the need for `--no-same-owner` when
extracting the archive as a super user (e.g. `sudo`). Without this
change, the UID and GID of `recyclarr` after it is extracted is whatever
user was used in github actions to create the archive, which isn't
really useful.
This change does not affect extractions as normal users; by default, the
UID/GID inside the archive is not used in those cases.
In addition:
- URL processing is now data driven. It pulls URLs from the latest
Github Release and uses those. This makes the notification more
extensible. If we add new artifacts later to the release, they
"automatically" get published in the discord notification as well. New
platforms must still be explicitly added, though.
- Added contributing guidance for testing the notification script.
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`.
- 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.