Use the single Debian 12 container image and inject CC, CXX and LDFLAGS
instead.
Further do the lfs checkout on the agent instead of inside the container
avoiding full rebuilds due to version mismatch.
Then split the debug and release builds using separate workspaces and
record warnings by build preventing gcc warnings leaking into clang
warnings.
Based on zero warning policy and incremental builds using a reference
build doesn't make sense. Removing that we can also drop an additional
generic workspace.
Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
Allow the number of concurrent build jobs in Unix build pipelines be
specified in the environment via the JOBS variable.
Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
The Linux agent now runs Docker in rootless mode for additional
security. Operations inside containers must be run as root to match the
underprivileged user running Docker.
When a non-incremental build is needed for a PR, the current code cleans
up workspaces and retries, but this leaves the build error in the
console output. This marks the build as unstable, as if warnings were
present.
Instead, let the build fail and instead reschedule a clean build, which
will override the build status in Gitea.
This entirely reverts ee3318309b and removes the [CLEANBUILD] feature,
which needed to be used without omission to be efficient.
Instead, in case of build failure, the CI automatically starts a
non-incremental second build by running `make clean` (or the MSBuild
equivalent) before retrying the build.
In all the builds using precompiled headers, an update to libraries will
crash the CI, as those headers will become outdated. It is then
necessary to force a full rebuild of the game by cleaning up the
workspaces.
This commit allows this CI behavior to be triggered by specifying
[CLEANBUILD] in the first line of the commit message.
This will constitute an opportunity to inform users that they need to
clean their workspaces when pulling the update.