The previous pattern built the amd64 and arm64 Docker images
sequentially and then build and pushed manifests as one single long task
under build.py. Split this up so the two architectures can be built in
parallel, and then handle manifests as a separate step in the GitHub
Actions workflow. Also split out the pushes from build.py, and remove
--local since no manual runs of this script should ever need this.
Debian 13 removed the `cross-gcc-dev` package as it was unmaintained
(Debian bug #1107126). This broke the existing cross build setup.
Instead, switch to using binary cross-gcc packages, which work the same
without having to manually generate the libraries. This is still fully
symmetrical.
Allows specifying --debug to build.py to build Debug builds of the
server, facilitating easier debugging. This is then called by default
for weekly builds.
Adds a system to build.py which can automatically determine which
version of each upstream framework (.NET, NodeJS, others in the future)
a given HEAD is at in the submodules, and provide that build argument
into the Docker builds.
This will ensure we can reliably build versions on either side of a
framework version transition (i.e. both stable and master) without any
manual work.
For an explanation of how it works, see the comments in `build.yaml`.
Future code framework updates will need the `build.yaml` updated to
include the relevant (merge) commit hash and version.
Also adds better logging, including this new framework version as well
as a record of the Docker build commands for each build.
Using is_stable avoids "not is_unstable" which is confusing. Make
stability the default.
Also clean up the now completely unnecessary version_suffix in Docker
builds, as the only decider is stability.
Remove some duplicated code by refactoring the architecture checking
into a function. The error paths would have also likely resulted in
NameErrors being thrown due to function arguments having underscores, so
that has been corrected as well.
Provides much more reliable and consistent argumentation and help
documentation for the script.
Also supports "auto" as a version identical to "master" for better
clarity of what it does.