From 5e83fc9750f474df8db3a005db3379ba4d2ea4e5 Mon Sep 17 00:00:00 2001 From: "Adrien M. Bernede" Date: Thu, 15 Oct 2020 11:29:29 -0700 Subject: [PATCH] Add Gitlab script --- scripts/gitlab/build_and_test.sh | 111 +++++++++++++++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100755 scripts/gitlab/build_and_test.sh diff --git a/scripts/gitlab/build_and_test.sh b/scripts/gitlab/build_and_test.sh new file mode 100755 index 0000000000..2cfabacc46 --- /dev/null +++ b/scripts/gitlab/build_and_test.sh @@ -0,0 +1,111 @@ +#!/usr/bin/env bash + +set -o errexit +set -o nounset + +option=${1:-""} +hostname="$(hostname)" +project_dir="$(pwd)" + +build_root=${BUILD_ROOT:-""} +hostconfig=${HOST_CONFIG:-""} +spec=${SPEC:-""} + +sys_type=${SYS_TYPE:-""} +py_env_path=${PYTHON_ENVIRONMENT_PATH:-""} + +# Dependencies +if [[ "${option}" != "--build-only" && "${option}" != "--test-only" ]] +then + echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + echo "~~~~~ Building Dependencies" + echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + + if [[ -z ${spec} ]] + then + echo "SPEC is undefined, aborting..." + exit 1 + fi + + prefix_opt="" + + if [[ -d /dev/shm ]] + then + prefix="/dev/shm/${hostname}/${spec// /_}" + mkdir -p ${prefix} + prefix_opt="--prefix=${prefix}" + fi + + python scripts/uberenv/uberenv.py --spec="${spec}" + +fi + +# Host config file +if [[ -z ${hostconfig} ]] +then + # If no host config file was provided, we assume it was generated. + # This means we are looking of a unique one in project dir. + hostconfigs=( $( ls "${project_dir}/"hc-*.mk ) ) + if [[ ${#hostconfigs[@]} == 1 ]] + then + hostconfig_path=${hostconfigs[0]} + echo "Found host config file: ${hostconfig_path}" + elif [[ ${#hostconfigs[@]} == 0 ]] + then + echo "No result for: ${project_dir}/hc-*.mk" + echo "Spack generated host-config not found." + exit 1 + else + echo "More than one result for: ${project_dir}/hc-*.mk" + echo "${hostconfigs[@]}" + echo "Please specify one with HOST_CONFIG variable" + exit 1 + fi +else + # Using provided host-config file. + hostconfig_path="${project_dir}/host-configs/${hostconfig}" +fi + +# Build Directory +if [[ -z ${build_root} ]] +then + build_root=$(pwd) +fi + +build_dir="${build_root}/build_${hostconfig//.mk/}" + +# Build +if [[ "${option}" != "--deps-only" && "${option}" != "--test-only" ]] +then + echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + echo "~ Host-config: ${hostconfig_path}" + echo "~ Build Dir: ${build_dir}" + echo "~ Project Dir: ${project_dir}" + echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + + echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + echo "~~~~~ Building MFEM" + echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + + make config \ + USER_CONFIG=${hostconfig_path} + make all -j +fi + +# Test +if [[ "${option}" != "--build-only" ]] +then + echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + echo "~~~~~ Testing MFEM" + echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + + return_code=0 + make test 2>&1 | tee tests_output.txt || return_code=${?} + + if grep -q "All tests passed." ./tests_output.txt + then + echo "SUCCESS: No error during tests" && exit 0 + else + echo "ERROR: failure(s) while running MFEM tests" && exit 1 + fi +fi