--- buildman/bma 2025/03/05 17:23:59 1.5 +++ buildman/bma 2025/03/12 02:31:46 1.6 @@ -92,6 +92,8 @@ do JOBDIR="${HOSTDIR}/jobs/${JOBID}" JLOG="${JOBDIR}/job.log" JSCR="${BUILDMAN_BASE}/projects/${PROJECT}/scripts/build.sh" + PRESCR="${HOSTDIR}/prebuild.sh" + POSTSCR="${HOSTDIR}/postbuild.sh" mkdir -p "${JOBDIR}" cd "${JOBDIR}" @@ -101,10 +103,38 @@ do echo "${JOBID}" > "${HOSTDIR}/build-running" echo "${JOBID}" > "${JOBDIR}/running" + + if [ -f "${PRESCR}" ] + then + echo "$PROGN: running host-specific prebuild script ${PRESCR} for project ${PROJECT} on host ${THOST} [job id ${JOBID}]" + echo "$PROGN: running host-specific prebuild script ${PRESCR} for project ${PROJECT} on host ${THOST} [job id ${JOBID}]" >> ${JLOG} + sh "${PRESCR}" >> ${JLOG} + RETCODE=$? + + if [ $RETCODE -gt 0 ] + then + echo "$PROGN: host-specific prebuild script failed for project ${PROJECT} on host ${THOST} [job id ${JOBID}]" + echo "$PROGN: host-specific prebuild script failed for project ${PROJECT} on host ${THOST} [job id ${JOBID}]" >> ${JLOG} + + rm -f "${HOSTDIR}/build-running" + rm -f "${JOBDIR}/running" + rm -f "${HOSTDIR}/build-failing" + rm -f "${HOSTDIR}/build-passing" + + echo "${JOBID}" > "${HOSTDIR}/build-failing" + echo "${JOBID}" > "${JOBDIR}/failing" + + exit 1 + fi + else + echo "$PROGN: no host-specific prebuild script exists for project ${PROJECT} on host ${THOST} [job id ${JOBID}]" + echo "$PROGN: no host-specific prebuild script exists for project ${PROJECT} on host ${THOST} [job id ${JOBID}]" >> ${JLOG} + fi if [ -f "${JSCR}" ] then echo "$PROGN: running build script ${JSCR} for project ${PROJECT} [job id ${JOBID}]" + echo "$PROGN: running build script ${JSCR} for project ${PROJECT} [job id ${JOBID}]" >> ${JLOG} sh "${JSCR}" >> ${JLOG} RETCODE=$? @@ -123,6 +153,7 @@ do *) echo "${JOBID}" > "${HOSTDIR}/build-failing" echo "${JOBID}" > "${JOBDIR}/failing" + exit 1 ;; esac @@ -133,8 +164,34 @@ do echo "$PROGN: build script ${JSCR} missing for project ${PROJECT} [job id ${JOBID}]" >> "${JLOG}" rm -f "${HOSTDIR}/build-running" rm -f "${JOBDIR}/running" + fi + + if [ -f "${POSTSCR}" ] + then + echo "$PROGN: running host-specific postbuild script ${POSTSCR} for project ${PROJECT} on host ${THOST} [job id ${JOBID}]" + echo "$PROGN: running host-specific postbuild script ${POSTSCR} for project ${PROJECT} on host ${THOST} [job id ${JOBID}]" >> ${JLOG} + sh "${POSTSCR}" >> ${JLOG} + RETCODE=$? + if [ $RETCODE -gt 0 ] + then + echo "$PROGN: host-specific postbuild script failed for project ${PROJECT} on host ${THOST} [job id ${JOBID}]" + echo "$PROGN: host-specific postbuild script failed for project ${PROJECT} on host ${THOST} [job id ${JOBID}]" >> ${JLOG} + + rm -f "${HOSTDIR}/build-running" + rm -f "${JOBDIR}/running" + rm -f "${HOSTDIR}/build-failing" + rm -f "${HOSTDIR}/build-passing" + + echo "${JOBID}" > "${HOSTDIR}/build-failing" + echo "${JOBID}" > "${JOBDIR}/failing" + exit 1 + fi + else + echo "$PROGN: no host-specific postbuild script exists for project ${PROJECT} on host ${THOST} [job id ${JOBID}]" + echo "$PROGN: no host-specific postbuild script exists for project ${PROJECT} on host ${THOST} [job id ${JOBID}]" >> ${JLOG} fi + fi fi