diff --git a/runner_scripts/root/cleanup.sh b/runner_scripts/root/cleanup.sh index 32d568ad2b92b8fc44578f37ea22ebeb65c9e86d..92910687470ee0c5dccac525f3d8e68e1e209d0d 100755 --- a/runner_scripts/root/cleanup.sh +++ b/runner_scripts/root/cleanup.sh @@ -38,7 +38,7 @@ do diff <(ssh-keygen -y -e -f /dev/stdin <<< "$AUTH_KEY") <(ssh-keygen -y -e -f /dev/stdin <<< "$PUB") && exit 0 done < "$AUTH_PUB" exit 1 -) || error "Authentication failed." +) || error "Authentication for user $AUTH_USER failed." ### Env cleanup diff --git a/runner_scripts/root/run.sh b/runner_scripts/root/run.sh index c2e899f5c8f6deacceb053d95138da934976599b..227cc043f7441efa90a8005c72155c6833983ea4 100755 --- a/runner_scripts/root/run.sh +++ b/runner_scripts/root/run.sh @@ -2,6 +2,8 @@ set -euf -o pipefail shopt -s inherit_errexit +MAX_CI_JOB_RUNTIME=120 + hash awk hash chown hash diff @@ -40,7 +42,7 @@ do diff --color=never <(ssh-keygen -y -e -f /dev/stdin <<< "$AUTH_KEY") <(ssh-keygen -y -e -f /dev/stdin <<< "$PUB") > /dev/null && exit 0 done < "$AUTH_PUB" exit 1 -) || error "Authentication failed." +) || error "Authentication for user $AUTH_USER failed." ### Env setup @@ -56,8 +58,7 @@ BASE_DIR=$AUTH_USER_WORK/gitlab-runner/builds/${CUSTOM_ENV_CI_CONCURRENT_PROJECT runuser "$AUTH_USER" --login --command "mkdir -p $BASE_DIR" -if [[ ("$2" == "step_script" || "$2" == "build_script") && ${CUSTOM_ENV_SUBMIT_TO_SLURM:-} ]] -then +if [[ ("$2" == "step_script" || "$2" == "build_script") && ${CUSTOM_ENV_SUBMIT_TO_SLURM:-} ]]; then ## The script is the one specified in the gitlab-ci.yml script directive and the SUBMIT_TO_SLURM variable is set for E in $(env | grep -E "^CUSTOM_ENV_SLURM_") @@ -66,13 +67,20 @@ then done : "${SLURM_JOB_NAME:="gitlab-ci-${CUSTOM_ENV_CI_PROJECT_NAME:?}-${CUSTOM_ENV_CI_PIPELINE_ID:?}-${CUSTOM_ENV_CI_JOB_ID:?}"}" - : "${SLURM_TIMELIMIT:="240"}" + : "${SLURM_TIMELIMIT:=$MAX_CI_JOB_RUNTIME}" : "${SLURM_TIME:=$SLURM_TIMELIMIT}" export SLURM_JOB_NAME export SLURM_TIME unset SLURM_TIMELIMIT + # limit max job run time + if [[ $SLURM_TIME > $MAX_CI_JOB_RUNTIME ]]; then + echo "SLURM_TIMELIMIT or SLURM_TIME larger than $MAX_CI_JOB_RUNTIME (s), limiting to $MAX_CI_JOB_RUNTIME." 1>&2 + SLURM_TIME=$MAX_CI_JOB_RUNTIME + export SLURM_TIME + fi + # Generate salloc arguments from SLURM_* environment variables SALLOC_OPTIONS=() for E in $(env | grep -E "^SLURM_")