Submitting jobs to cdash (#124)
* Submitting jobs to cdash * Fail on submit * submit url env * submit url env * try passing submit url as arg * fix submit url * Updated default URL * Add submissions for remaining ubuntu focal workflow jobs * Replace g++ with gcc in dashboard build name * Add --ctest-args to run-ci.sh * Add cdash support for bionic, jammy, and opensuse workflows * Decrease CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE * OMNITRACE_BUILD_CODECOV option * Support code coverage in CDash script * CI dyninst built with debug info * Update ci-containers - cron schedule moved 4 hours later to UTC+5 * Update implementation of config::configure_signal_handler - using lambdas failed to compile with codecov flags * Add codecov job to ubuntu focal workflow * Fix support for --ctest-args in run-ci script * Fix ubuntu workflows * Fix quotation handling in run-ci script * git safe directory for codecov * New MPI examples * Remove --stop-on-failure * dynamic_library update - find_library_path checks procfs maps - invoke find_library_path with no additional args to resolve to mapped file * RCCLP uses dynamic_library * check if file exists for memory_map_files metadata * Testing updates - include new mpi examples in tests - fix test labels - test critical-trace exe * Update MPI C examples tests (needed arg) * Remove try/catch block from critical-trace * Fix sampling max wait when shutting down * Fix test env for critical-trace * Fix settings for critical-trace - disable time output: data is deterministic - disable PID suffixes: not multiprocess * Update critical-trace ctest * Update critical-trace exe - throw error if input cannot be opened - throw error if input has no data * Update lulesh example with more kokkos tools usage * Fix tasking issue with critical_trace and roctracer - were not setting pools to active - also sync before critical_trace::get_entries * Increase verbosity of critical-trace tests * Update code coverage tests - skip code coverage + preload - code-coverage python example and test * Remove duplication omnitrace.initialize function * Skip python3.6 for ubuntu jammy * Update MPI examples - use MPI_Isend and MPI_Irecv - explicitly use MPI_Bcast * Update Formatting.cmake - include C files in examples * run-ci script does not check return of coverage * mpi-allreduce link to libm * Update ctest args in run-ci script * Update dyninst submodule - safety improvements in BinaryEdit::openResolvedLibraryName * capture cmake error for ctest_coverage
This commit is contained in:
committed by
GitHub
parent
139070a2de
commit
46b6db1a4c
Executable
+252
@@ -0,0 +1,252 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
SCRIPT_DIR=$(realpath $(dirname ${BASH_SOURCE[0]}))
|
||||
cd $(dirname ${SCRIPT_DIR})
|
||||
|
||||
tolower()
|
||||
{
|
||||
echo "$@" | awk -F '\|~\|' '{print tolower($1)}';
|
||||
}
|
||||
|
||||
toupper()
|
||||
{
|
||||
echo "$@" | awk -F '\|~\|' '{print toupper($1)}';
|
||||
}
|
||||
|
||||
: ${CMAKE_BUILD_PARALLEL_LEVEL:=$(nproc)}
|
||||
: ${DASHBOARD_MODE:="Continuous"}
|
||||
: ${DASHBOARD_STAGES:="Start Update Configure Build Test MemCheck Coverage Submit"}
|
||||
: ${SOURCE_DIR:=${PWD}}
|
||||
: ${BINARY_DIR:=${PWD}/build}
|
||||
: ${SITE:=$(hostname)}
|
||||
: ${NAME:=""}
|
||||
: ${SUBMIT_URL:="my.cdash.org/submit.php?project=Omnitrace"}
|
||||
: ${CODECOV:=0}
|
||||
|
||||
usage()
|
||||
{
|
||||
print_option() { printf " --%-20s %-24s %s\n" "${1}" "${2}" "${3}"; }
|
||||
print_default_option() { printf " --%-20s %-24s %s (default: %s)\n" "${1}" "${2}" "${3}" "$(tolower ${4})"; }
|
||||
|
||||
echo "Options:"
|
||||
print_option "help -h" "" "This message"
|
||||
|
||||
echo ""
|
||||
print_option "coverage -c" "" "Enable code coverage"
|
||||
print_default_option "name -n" "<NAME>" "Job name" ""
|
||||
print_default_option "site -s" "<NAME>" "Site name" "${SITE}"
|
||||
print_default_option "source-dir -S" "<N>" "Source directory" "${SOURCE_DIR}"
|
||||
print_default_option "binary-dir -B" "<N>" "Build directory" "${BINARY_DIR}"
|
||||
print_default_option "build-jobs -j" "<N>" "Number of build jobs" "${CMAKE_BUILD_PARALLEL_LEVEL}"
|
||||
print_default_option cmake-args "<ARGS...>" "CMake configuration args" "none"
|
||||
print_default_option ctest-args "<ARGS...>" "CTest command args" "none"
|
||||
print_default_option cdash-mode "<ARGS...>" "CDash mode" "${DASHBOARD_MODE}"
|
||||
print_default_option cdash-stages "<ARGS...>" "CDash stages" "${DASHBOARD_STAGES}"
|
||||
print_default_option submit-url "<URL>" "CDash submission URL" "${SUBMIT_URL}"
|
||||
#print_default_option lto "[on|off]" "Enable LTO" "${LTO}"
|
||||
}
|
||||
|
||||
send-error()
|
||||
{
|
||||
usage
|
||||
echo -e "\nError: ${@}"
|
||||
exit 1
|
||||
}
|
||||
|
||||
verbose-run()
|
||||
{
|
||||
echo -e "\n### Executing \"${@}\"... ###\n"
|
||||
eval "${@}"
|
||||
}
|
||||
|
||||
reset-last()
|
||||
{
|
||||
last() { send-error "Unsupported argument :: \"${1}\""; }
|
||||
}
|
||||
|
||||
reset-last
|
||||
|
||||
n=0
|
||||
while [[ $# -gt 0 ]]
|
||||
do
|
||||
case "${1}" in
|
||||
-h|--help)
|
||||
usage
|
||||
exit 0
|
||||
;;
|
||||
-c|--coverage)
|
||||
CODECOV=1
|
||||
reset-last
|
||||
;;
|
||||
-n|--name)
|
||||
shift
|
||||
NAME=$(echo ${1} | sed 's/g++/gcc/g')
|
||||
reset-last
|
||||
;;
|
||||
-s|--site)
|
||||
shift
|
||||
SITE=${1}
|
||||
reset-last
|
||||
;;
|
||||
-S|--source-dir)
|
||||
shift
|
||||
SOURCE_DIR=${1}
|
||||
reset-last
|
||||
;;
|
||||
-B|--binary-dir)
|
||||
shift
|
||||
BINARY_DIR=${1}
|
||||
reset-last
|
||||
;;
|
||||
-j|--build-jobs)
|
||||
shift
|
||||
CMAKE_BUILD_PARALLEL_LEVEL=${1}
|
||||
reset-last
|
||||
;;
|
||||
--cmake-args)
|
||||
if [ -n "${2}" ]; then
|
||||
shift
|
||||
CMAKE_ARGS=${1}
|
||||
fi
|
||||
last() { CMAKE_ARGS="${CMAKE_ARGS} ${1}"; }
|
||||
;;
|
||||
--ctest-args)
|
||||
if [ -n "${2}" ]; then
|
||||
shift
|
||||
CTEST_ARGS=${1}
|
||||
fi
|
||||
last() { CTEST_ARGS="${CTEST_ARGS} \"${1}\""; }
|
||||
;;
|
||||
--cdash-mode)
|
||||
shift
|
||||
DASHBOARD_MODE=${1}
|
||||
reset-last
|
||||
;;
|
||||
--cdash-stages)
|
||||
shift
|
||||
DASHBOARD_STAGES=${1}
|
||||
last() { DASHBOARD_STAGES="${DASHBOARD_STAGES} ${1}"; }
|
||||
;;
|
||||
--submit-url)
|
||||
shift
|
||||
SUBMIT_URL=${1}
|
||||
reset-last
|
||||
;;
|
||||
--*)
|
||||
send-error "Unsupported argument at position $((${n} + 1)) :: \"${1}\""
|
||||
;;
|
||||
*)
|
||||
last ${1}
|
||||
;;
|
||||
esac
|
||||
n=$((${n} + 1))
|
||||
shift
|
||||
done
|
||||
|
||||
if [ -z "${NAME}" ]; then send-error "--name option required"; fi
|
||||
|
||||
CDASH_ARGS=""
|
||||
for i in ${DASHBOARD_STAGES}
|
||||
do
|
||||
if [ -z "${CDASH_ARGS}" ]; then
|
||||
CDASH_ARGS="-D ${DASHBOARD_MODE}${i}"
|
||||
else
|
||||
CDASH_ARGS="${CDASH_ARGS} -D ${DASHBOARD_MODE}${i}"
|
||||
fi
|
||||
done
|
||||
|
||||
export CMAKE_BUILD_PARALLEL_LEVEL
|
||||
|
||||
if [ "${CODECOV}" -gt 0 ]; then
|
||||
GCOV_CMD=$(which gcov)
|
||||
CMAKE_ARGS="${CMAKE_ARGS} -DOMNITRACE_BUILD_CODECOV=ON -DOMNITRACE_STRIP_LIBRARIES=OFF"
|
||||
fi
|
||||
|
||||
GIT_CMD=$(which git)
|
||||
CMAKE_CMD=$(which cmake)
|
||||
CTEST_CMD=$(which ctest)
|
||||
SOURCE_DIR=$(realpath ${SOURCE_DIR})
|
||||
BINARY_DIR=$(realpath ${BINARY_DIR})
|
||||
|
||||
verbose-run mkdir -p ${BINARY_DIR}
|
||||
|
||||
cat << EOF > ${BINARY_DIR}/CTestCustom.cmake
|
||||
|
||||
set(CTEST_PROJECT_NAME "Omnitrace")
|
||||
set(CTEST_NIGHTLY_START_TIME "05:00:00 UTC")
|
||||
|
||||
set(CTEST_DROP_METHOD "http")
|
||||
set(CTEST_DROP_SITE_CDASH TRUE)
|
||||
set(CTEST_SUBMIT_URL "https://${SUBMIT_URL}")
|
||||
|
||||
set(CTEST_UPDATE_TYPE git)
|
||||
set(CTEST_UPDATE_VERSION_ONLY TRUE)
|
||||
set(CTEST_GIT_INIT_SUBMODULES TRUE)
|
||||
|
||||
set(CTEST_OUTPUT_ON_FAILURE TRUE)
|
||||
set(CTEST_USE_LAUNCHERS TRUE)
|
||||
set(CMAKE_CTEST_ARGUMENTS --output-on-failure ${CTEST_ARGS})
|
||||
|
||||
set(CTEST_CUSTOM_MAXIMUM_NUMBER_OF_ERRORS "100")
|
||||
set(CTEST_CUSTOM_MAXIMUM_NUMBER_OF_WARNINGS "100")
|
||||
set(CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE "51200")
|
||||
set(CTEST_CUSTOM_COVERAGE_EXCLUDE "/usr/.*;.*external/.*;.*examples/.*")
|
||||
|
||||
set(CTEST_SITE "${SITE}")
|
||||
set(CTEST_BUILD_NAME "${NAME}")
|
||||
|
||||
set(CTEST_SOURCE_DIRECTORY ${SOURCE_DIR})
|
||||
set(CTEST_BINARY_DIRECTORY ${BINARY_DIR})
|
||||
|
||||
set(CTEST_UPDATE_COMMAND ${GIT_CMD})
|
||||
set(CTEST_CONFIGURE_COMMAND "${CMAKE_CMD} -B ${BINARY_DIR} ${SOURCE_DIR} -DOMNITRACE_BUILD_CI=ON ${CMAKE_ARGS}")
|
||||
set(CTEST_BUILD_COMMAND "${CMAKE_CMD} --build ${BINARY_DIR} --target all")
|
||||
set(CTEST_COVERAGE_COMMAND ${GCOV_CMD})
|
||||
EOF
|
||||
|
||||
verbose-run cd ${BINARY_DIR}
|
||||
|
||||
cat << EOF > dashboard.cmake
|
||||
|
||||
include("\${CMAKE_CURRENT_LIST_DIR}/CTestCustom.cmake")
|
||||
|
||||
macro(handle_error _message _ret)
|
||||
if(NOT \${\${_ret}} EQUAL 0)
|
||||
ctest_submit(PARTS Done RETURN_VALUE _submit_ret)
|
||||
message(FATAL_ERROR "\${_message} failed: \${\${_ret}}")
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
ctest_start(${DASHBOARD_MODE})
|
||||
ctest_update(SOURCE "${SOURCE_DIR}")
|
||||
ctest_submit(PARTS Start Update RETURN_VALUE _submit_ret)
|
||||
|
||||
ctest_configure(BUILD "${BINARY_DIR}" RETURN_VALUE _configure_ret)
|
||||
ctest_submit(PARTS Configure RETURN_VALUE _submit_ret)
|
||||
|
||||
handle_error("Configure" _configure_ret)
|
||||
|
||||
ctest_build(BUILD "${BINARY_DIR}" RETURN_VALUE _build_ret)
|
||||
ctest_submit(PARTS Build RETURN_VALUE _submit_ret)
|
||||
|
||||
handle_error("Build" _build_ret)
|
||||
|
||||
ctest_test(BUILD "${BINARY_DIR}" RETURN_VALUE _test_ret)
|
||||
ctest_submit(PARTS Test RETURN_VALUE _submit_ret)
|
||||
|
||||
if("${CODECOV}" GREATER 0)
|
||||
ctest_coverage(
|
||||
BUILD "${BINARY_DIR}"
|
||||
RETURN_VALUE _coverage_ret
|
||||
CAPTURE_CMAKE_ERROR _coverage_err)
|
||||
ctest_submit(PARTS Coverage RETURN_VALUE _submit_ret)
|
||||
endif()
|
||||
|
||||
handle_error("Testing" _test_ret)
|
||||
|
||||
ctest_submit(PARTS Done RETURN_VALUE _submit_ret)
|
||||
EOF
|
||||
|
||||
verbose-run cat CTestCustom.cmake
|
||||
verbose-run cat dashboard.cmake
|
||||
verbose-run ctest ${CDASH_ARGS} -S dashboard.cmake --output-on-failure ${CTEST_ARGS}
|
||||
Reference in New Issue
Block a user