fix(ci): bound Maven resources and serialize shared builder jobs
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
#!/bin/sh
|
||||
# Linux Jenkins entry; no service deployment, data cleanup or dependency installation.
|
||||
set -eu
|
||||
|
||||
for tool in flock timeout mvn; do
|
||||
command -v "$tool" >/dev/null 2>&1 || {
|
||||
echo "Required CI tool missing: $tool" >&2
|
||||
exit 69
|
||||
}
|
||||
done
|
||||
for argument in "$@"; do
|
||||
case "$argument" in
|
||||
-T*|--threads*)
|
||||
echo 'Parallel Maven reactors are disabled on the shared TEST builder.' >&2
|
||||
exit 64
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# All jobs run as the same builder account. Keep the inode: flock releases on close.
|
||||
# A controller-side abort must not permit another build over a surviving local build.
|
||||
umask 077
|
||||
lock_dir="${HOME:?HOME is required}/.cache/chongchong-ci"
|
||||
mkdir -p "$lock_dir"
|
||||
exec 9>"$lock_dir/maven.lock"
|
||||
if ! flock -n 9; then
|
||||
echo 'Another local Maven build still holds the CI lock; inspect it before retrying.' >&2
|
||||
exit 75
|
||||
fi
|
||||
|
||||
# Separate budgets: this process is Maven; ci-bounded configures its test JVM.
|
||||
MAVEN_OPTS='-Xms128m -Xmx768m -XX:MaxMetaspaceSize=256m -XX:MaxDirectMemorySize=128m -XX:+ExitOnOutOfMemoryError -Dfile.encoding=UTF-8 -Dmaven.wagon.http.retryHandler.count=3'
|
||||
export MAVEN_OPTS
|
||||
|
||||
# Local watchdog still runs if the Jenkins controller/agent connection is lost.
|
||||
# Do not use --foreground: timeout must signal the forked process group too.
|
||||
exec timeout --signal=TERM --kill-after=30s 45m mvn -Pci-bounded "$@"
|
||||
Reference in New Issue
Block a user