mirror of
https://github.com/FairRootGroup/FairLogger.git
synced 2025-10-13 00:31:12 +00:00
CI: Migrate to new alfa-ci infrastructure
This commit is contained in:
parent
bcfe438862
commit
f012a870e7
|
@ -156,6 +156,14 @@ if(BUILD_TESTING)
|
||||||
endif()
|
endif()
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
|
# Utils ########################################################################
|
||||||
|
find_program(BASH bash HINTS "/bin")
|
||||||
|
find_program(SINGULARITY singularity)
|
||||||
|
if(BASH AND SINGULARITY)
|
||||||
|
add_subdirectory(test/ci)
|
||||||
|
endif()
|
||||||
|
################################################################################
|
||||||
|
|
||||||
# Summary ######################################################################
|
# Summary ######################################################################
|
||||||
message(STATUS " ")
|
message(STATUS " ")
|
||||||
message(STATUS " ${Cyan}CXX STANDARD${CR} ${BGreen}C++${CMAKE_CXX_STANDARD}${CR} (>= C++${PROJECT_MIN_CXX_STANDARD}, change with ${BMagenta}-DCMAKE_CXX_STANDARD=17${CR})")
|
message(STATUS " ${Cyan}CXX STANDARD${CR} ${BGreen}C++${CMAKE_CXX_STANDARD}${CR} (>= C++${PROJECT_MIN_CXX_STANDARD}, change with ${BMagenta}-DCMAKE_CXX_STANDARD=17${CR})")
|
||||||
|
|
133
Dart.sh
133
Dart.sh
|
@ -1,133 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
|
|
||||||
function print_example(){
|
|
||||||
echo "##################################################################"
|
|
||||||
echo "# To set the required parameters as source and the build #"
|
|
||||||
echo "# directory for ctest, the linux flavour and the SIMPATH #"
|
|
||||||
echo "# put the export commands below to a separate file which is read #"
|
|
||||||
echo "# during execution and which is defined on the command line. #"
|
|
||||||
echo "# Set all parameters according to your needs. #"
|
|
||||||
echo "# LINUX_FLAVOUR should be set to the distribution you are using #"
|
|
||||||
echo "# eg Debian, SuSe etc. #"
|
|
||||||
echo "# An additional varibale NCPU can overwrite the default number #"
|
|
||||||
echo "# of parallel processes used to compile the project. #"
|
|
||||||
echo "# This can be usefull if one can use a distributed build system #"
|
|
||||||
echo "# like icecream. #"
|
|
||||||
echo "# For example #"
|
|
||||||
echo "#!/bin/bash #"
|
|
||||||
echo "export LINUX_FLAVOUR=<your linux flavour> #"
|
|
||||||
echo "export FAIRSOFT_VERSION=<version of FairSoft> #"
|
|
||||||
echo "export SIMPATH=<path to your FairSoft version> #"
|
|
||||||
echo "export GIT_BRANCH=< master or dev> #"
|
|
||||||
echo "export BUILDDIR=<dir where the build files go> #"
|
|
||||||
echo "export SOURCEDIR=<location of the FairRoot sources> #"
|
|
||||||
echo "#export NCPU=100 #"
|
|
||||||
echo "##################################################################"
|
|
||||||
}
|
|
||||||
|
|
||||||
if [ "$#" -lt "2" ]; then
|
|
||||||
echo ""
|
|
||||||
echo "-- Error -- Please start script with two parameters"
|
|
||||||
echo "-- Error -- The first parameter is the ctest model."
|
|
||||||
echo "-- Error -- Possible arguments are Nightly, Experimental, "
|
|
||||||
echo "-- Error -- Continuous or Profile."
|
|
||||||
echo "-- Error -- The second parameter is the file containg the"
|
|
||||||
echo "-- Error -- Information about the setup at the client"
|
|
||||||
echo "-- Error -- installation (see example below)."
|
|
||||||
echo ""
|
|
||||||
print_example
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# test if a valid ctest model is defined
|
|
||||||
if [ "$1" == "Experimental" -o "$1" == "Nightly" -o "$1" == "Continuous" -o "$1" == "Profile" -o "$1" == "alfa_ci" ]; then
|
|
||||||
echo ""
|
|
||||||
else
|
|
||||||
echo "-- Error -- This ctest model is not supported."
|
|
||||||
echo "-- Error -- Possible arguments are Nightly, Experimental, Continuous or Profile."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# test if the input file exists and execute it
|
|
||||||
if [ -e "$2" ];then
|
|
||||||
source $2
|
|
||||||
else
|
|
||||||
echo "-- Error -- Input file does not exist."
|
|
||||||
echo "-- Error -- Please choose existing input file."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# set the ctest model to command line parameter
|
|
||||||
if [ "$1" == "alfa_ci" ]; then
|
|
||||||
export ctest_model=Experimental
|
|
||||||
else
|
|
||||||
export ctest_model=$1
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
# test for architecture
|
|
||||||
arch=$(uname -s | tr '[A-Z]' '[a-z]')
|
|
||||||
chip=$(uname -m | tr '[A-Z]' '[a-z]')
|
|
||||||
|
|
||||||
# extract information about the system and the machine and set
|
|
||||||
# environment variables used by ctest
|
|
||||||
SYSTEM=$arch-$chip
|
|
||||||
if test -z $CXX ; then
|
|
||||||
if [ "$arch" == "darwin" ]; then
|
|
||||||
COMPILER=$(clang --version | head -n 1 | cut -d' ' -f1,2,4 | tr -d ' ')
|
|
||||||
else
|
|
||||||
COMPILER=gcc$(gcc -dumpversion)
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
COMPILER=$CXX$($CXX -dumpversion)
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$1" == "alfa_ci" ]; then
|
|
||||||
export LABEL1=alfa_ci-$COMPILER-FairLogger_$GIT_BRANCH
|
|
||||||
export LABEL=$(echo $LABEL1 | sed -e 's#/#_#g')
|
|
||||||
else
|
|
||||||
export LABEL1=${LINUX_FLAVOUR}-$chip-$COMPILER-FairLogger_$GIT_BRANCH
|
|
||||||
export LABEL=$(echo $LABEL1 | sed -e 's#/#_#g')
|
|
||||||
fi
|
|
||||||
|
|
||||||
# get the number of processors
|
|
||||||
# and information about the host
|
|
||||||
if [ "$arch" = "linux" ];
|
|
||||||
then
|
|
||||||
if [ "$NCPU" != "" ];
|
|
||||||
then
|
|
||||||
export number_of_processors=$NCPU
|
|
||||||
else
|
|
||||||
export number_of_processors=$(cat /proc/cpuinfo | grep processor | wc -l)
|
|
||||||
fi
|
|
||||||
if [ -z "$SITE" ]; then
|
|
||||||
export SITE=$(hostname -f)
|
|
||||||
if [ -z "$SITE" ]; then
|
|
||||||
export SITE=$(uname -n)
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
elif [ "$arch" = "darwin" ];
|
|
||||||
then
|
|
||||||
if [ "$NCPU" != "" ];
|
|
||||||
then
|
|
||||||
export number_of_processors=$NCPU
|
|
||||||
else
|
|
||||||
export number_of_processors=$(sysctl -n hw.ncpu)
|
|
||||||
fi
|
|
||||||
if [ -z "$SITE" ]; then
|
|
||||||
export SITE=$(hostname -s)
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "************************"
|
|
||||||
date
|
|
||||||
echo "LABEL: " $LABEL
|
|
||||||
echo "SITE: " $SITE
|
|
||||||
echo "Model: " ${ctest_model}
|
|
||||||
echo "Nr. of processes: " $number_of_processors
|
|
||||||
echo "************************"
|
|
||||||
|
|
||||||
cd $SOURCEDIR
|
|
||||||
|
|
||||||
ctest -S FairLoggerTest.cmake -V --VV
|
|
|
@ -1,69 +1,62 @@
|
||||||
################################################################################
|
################################################################################
|
||||||
# Copyright (C) 2014 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH #
|
# Copyright (C) 2021 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH #
|
||||||
# #
|
# #
|
||||||
# This software is distributed under the terms of the #
|
# This software is distributed under the terms of the #
|
||||||
# GNU Lesser General Public Licence (LGPL) version 3, #
|
# GNU Lesser General Public Licence (LGPL) version 3, #
|
||||||
# copied verbatim in the file "LICENSE" #
|
# copied verbatim in the file "LICENSE" #
|
||||||
################################################################################
|
################################################################################
|
||||||
Set(CTEST_SOURCE_DIRECTORY $ENV{SOURCEDIR})
|
|
||||||
Set(CTEST_BINARY_DIRECTORY $ENV{BUILDDIR})
|
|
||||||
Set(CTEST_SITE $ENV{SITE})
|
|
||||||
Set(CTEST_BUILD_NAME $ENV{LABEL})
|
|
||||||
Set(CTEST_CMAKE_GENERATOR "Unix Makefiles")
|
|
||||||
Set(CTEST_PROJECT_NAME "FairLogger")
|
|
||||||
|
|
||||||
Find_Program(CTEST_GIT_COMMAND NAMES git)
|
cmake_host_system_information(RESULT fqdn QUERY FQDN)
|
||||||
Set(CTEST_UPDATE_COMMAND "${CTEST_GIT_COMMAND}")
|
|
||||||
|
|
||||||
Set(BUILD_COMMAND "make")
|
set(CTEST_SOURCE_DIRECTORY .)
|
||||||
Set(CTEST_BUILD_COMMAND "${BUILD_COMMAND} -j$ENV{number_of_processors}")
|
set(CTEST_BINARY_DIRECTORY build)
|
||||||
|
set(CTEST_CMAKE_GENERATOR "Ninja")
|
||||||
|
set(CTEST_USE_LAUNCHERS ON)
|
||||||
|
set(CTEST_CONFIGURATION_TYPE "RelWithDebInfo")
|
||||||
|
|
||||||
String(TOUPPER $ENV{ctest_model} _Model)
|
if(NOT NCPUS)
|
||||||
Set(configure_options "-DCMAKE_BUILD_TYPE=${_Model}")
|
if(ENV{SLURM_CPUS_PER_TASK})
|
||||||
|
set(NCPUS $ENV{SLURM_CPUS_PER_TASK})
|
||||||
|
else()
|
||||||
|
include(ProcessorCount)
|
||||||
|
ProcessorCount(NCPUS)
|
||||||
|
if(NCPUS EQUAL 0)
|
||||||
|
set(NCPUS 1)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
Set(CTEST_USE_LAUNCHERS 1)
|
if ("$ENV{CTEST_SITE}" STREQUAL "")
|
||||||
Set(configure_options "${configure_options};-DCTEST_USE_LAUNCHERS=${CTEST_USE_LAUNCHERS}")
|
set(CTEST_SITE "${fqdn}")
|
||||||
|
else()
|
||||||
|
set(CTEST_SITE $ENV{CTEST_SITE})
|
||||||
|
endif()
|
||||||
|
|
||||||
Set(configure_options "${configure_options};-DDISABLE_COLOR=ON")
|
if ("$ENV{LABEL}" STREQUAL "")
|
||||||
|
set(CTEST_BUILD_NAME "build")
|
||||||
|
else()
|
||||||
|
set(CTEST_BUILD_NAME $ENV{LABEL})
|
||||||
|
endif()
|
||||||
|
|
||||||
Set(EXTRA_FLAGS $ENV{EXTRA_FLAGS})
|
ctest_start(Continuous)
|
||||||
If(EXTRA_FLAGS)
|
|
||||||
Set(configure_options "${configure_options};${EXTRA_FLAGS}")
|
|
||||||
EndIf()
|
|
||||||
|
|
||||||
If($ENV{ctest_model} MATCHES Nightly OR $ENV{ctest_model} MATCHES Profile)
|
list(APPEND options
|
||||||
|
"-DDISABLE_COLOR=ON"
|
||||||
|
"-DUSE_EXTERNAL_FMT=ON"
|
||||||
|
"-DUSE_BOOST_PRETTY_FUNCTION=ON"
|
||||||
|
)
|
||||||
|
list(JOIN options ";" optionsstr)
|
||||||
|
ctest_configure(OPTIONS "${optionsstr}")
|
||||||
|
|
||||||
Find_Program(GCOV_COMMAND gcov)
|
ctest_build(FLAGS "-j${NCPUS}")
|
||||||
If(GCOV_COMMAND)
|
|
||||||
Message("Found GCOV: ${GCOV_COMMAND}")
|
|
||||||
Set(CTEST_COVERAGE_COMMAND ${GCOV_COMMAND})
|
|
||||||
EndIf(GCOV_COMMAND)
|
|
||||||
|
|
||||||
Set(ENV{ctest_model} Nightly)
|
ctest_test(BUILD "${CTEST_BINARY_DIRECTORY}"
|
||||||
|
PARALLEL_LEVEL 1
|
||||||
|
SCHEDULE_RANDOM ON
|
||||||
|
RETURN_VALUE _ctest_test_ret_val)
|
||||||
|
|
||||||
CTEST_EMPTY_BINARY_DIRECTORY(${CTEST_BINARY_DIRECTORY})
|
ctest_submit()
|
||||||
|
|
||||||
EndIf()
|
if(_ctest_test_ret_val)
|
||||||
|
|
||||||
Ctest_Start($ENV{ctest_model})
|
|
||||||
|
|
||||||
Ctest_Configure(BUILD "${CTEST_BINARY_DIRECTORY}"
|
|
||||||
OPTIONS "${configure_options}"
|
|
||||||
)
|
|
||||||
|
|
||||||
Ctest_Build(BUILD "${CTEST_BINARY_DIRECTORY}")
|
|
||||||
|
|
||||||
Ctest_Test(BUILD "${CTEST_BINARY_DIRECTORY}"
|
|
||||||
PARALLEL_LEVEL $ENV{number_of_processors}
|
|
||||||
RETURN_VALUE _ctest_test_ret_val
|
|
||||||
)
|
|
||||||
|
|
||||||
If(GCOV_COMMAND)
|
|
||||||
Ctest_Coverage(BUILD "${CTEST_BINARY_DIRECTORY}")
|
|
||||||
EndIf()
|
|
||||||
|
|
||||||
Ctest_Submit()
|
|
||||||
|
|
||||||
if (_ctest_test_ret_val)
|
|
||||||
Message(FATAL_ERROR "Some tests failed.")
|
Message(FATAL_ERROR "Some tests failed.")
|
||||||
endif()
|
endif()
|
||||||
|
|
76
Jenkinsfile
vendored
76
Jenkinsfile
vendored
|
@ -1,51 +1,44 @@
|
||||||
#!groovy
|
#!groovy
|
||||||
|
|
||||||
def specToLabel(Map spec) {
|
def jobMatrix(String prefix, String type, List specs) {
|
||||||
return "${spec.os}-${spec.arch}-${spec.compiler}-FairSoft_${spec.fairsoft}"
|
|
||||||
}
|
|
||||||
|
|
||||||
def jobMatrix(String prefix, List specs, Closure callback) {
|
|
||||||
def nodes = [:]
|
def nodes = [:]
|
||||||
for (spec in specs) {
|
for (spec in specs) {
|
||||||
def label = specToLabel(spec)
|
job = "${spec.os}-${spec.ver}-${spec.arch}-${spec.compiler}"
|
||||||
def fairsoft = spec.fairsoft
|
def label = "${type}/${job}"
|
||||||
|
def selector = "${spec.os}-${spec.ver}-${spec.arch}"
|
||||||
def os = spec.os
|
def os = spec.os
|
||||||
def compiler = spec.compiler
|
def ver = spec.ver
|
||||||
nodes["${prefix}/${label}"] = {
|
def check = spec.check
|
||||||
node(label) {
|
|
||||||
|
nodes[label] = {
|
||||||
|
node(selector) {
|
||||||
githubNotify(context: "${prefix}/${label}", description: 'Building ...', status: 'PENDING')
|
githubNotify(context: "${prefix}/${label}", description: 'Building ...', status: 'PENDING')
|
||||||
try {
|
try {
|
||||||
deleteDir()
|
deleteDir()
|
||||||
checkout scm
|
checkout scm
|
||||||
|
|
||||||
sh """\
|
def jobscript = 'job.sh'
|
||||||
echo "export SIMPATH=\${SIMPATH_PREFIX}${fairsoft}" >> Dart.cfg
|
def ctestcmd = "ctest -S FairLoggerTest.cmake -V --output-on-failure"
|
||||||
echo "export FAIRSOFT_VERSION=${fairsoft}" >> Dart.cfg
|
sh "echo \"set -e\" >> ${jobscript}"
|
||||||
"""
|
sh "echo \"export LABEL=\\\"\${JOB_BASE_NAME} ${label}\\\"\" >> ${jobscript}"
|
||||||
if (os =~ /Debian/ && compiler =~ /gcc9/) {
|
if (selector =~ /^macos/) {
|
||||||
sh '''\
|
sh "echo \"${ctestcmd}\" >> ${jobscript}"
|
||||||
echo "source /etc/profile.d/modules.sh" >> Dart.cfg
|
sh "cat ${jobscript}"
|
||||||
echo "module use /cvmfs/it.gsi.de/modulefiles" >> Dart.cfg
|
sh "bash ${jobscript}"
|
||||||
echo "module load compiler/gcc/9.1.0" >> Dart.cfg
|
|
||||||
'''
|
|
||||||
}
|
|
||||||
if (os =~ /MacOS/) {
|
|
||||||
sh "echo \"export EXTRA_FLAGS='-DCMAKE_CXX_COMPILER=clang++'\" >> Dart.cfg"
|
|
||||||
} else {
|
} else {
|
||||||
sh "echo \"export EXTRA_FLAGS='-DCMAKE_CXX_COMPILER=g++'\" >> Dart.cfg"
|
def containercmd = "singularity exec -B/shared ${env.SINGULARITY_CONTAINER_ROOT}/fairlogger/${os}.${ver}.sif bash -l -c \\\"${ctestcmd}\\\""
|
||||||
|
sh """\
|
||||||
|
echo \"echo \\\"*** Job started at .......: \\\$(date -R)\\\"\" >> ${jobscript}
|
||||||
|
echo \"echo \\\"*** Job ID ...............: \\\${SLURM_JOB_ID}\\\"\" >> ${jobscript}
|
||||||
|
echo \"echo \\\"*** Compute node .........: \\\$(hostname -f)\\\"\" >> ${jobscript}
|
||||||
|
echo \"unset http_proxy\" >> ${jobscript}
|
||||||
|
echo \"unset HTTP_PROXY\" >> ${jobscript}
|
||||||
|
echo \"${containercmd}\" >> ${jobscript}
|
||||||
|
"""
|
||||||
|
sh "cat ${jobscript}"
|
||||||
|
sh "test/ci/slurm-submit.sh \"FairLogger \${JOB_BASE_NAME} ${label}\" ${jobscript}"
|
||||||
}
|
}
|
||||||
|
|
||||||
sh '''\
|
|
||||||
echo "export BUILDDIR=$PWD/build" >> Dart.cfg
|
|
||||||
echo "export SOURCEDIR=$PWD" >> Dart.cfg
|
|
||||||
echo "export PATH=\\\$SIMPATH/bin:\\\$PATH" >> Dart.cfg
|
|
||||||
echo "export GIT_BRANCH=$JOB_BASE_NAME" >> Dart.cfg
|
|
||||||
echo "echo \\\$PATH" >> Dart.cfg
|
|
||||||
'''
|
|
||||||
sh 'cat Dart.cfg'
|
|
||||||
|
|
||||||
callback.call(spec, label)
|
|
||||||
|
|
||||||
deleteDir()
|
deleteDir()
|
||||||
githubNotify(context: "${prefix}/${label}", description: 'Success', status: 'SUCCESS')
|
githubNotify(context: "${prefix}/${label}", description: 'Success', status: 'SUCCESS')
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
@ -65,13 +58,12 @@ pipeline{
|
||||||
stage("Run CI Matrix") {
|
stage("Run CI Matrix") {
|
||||||
steps{
|
steps{
|
||||||
script {
|
script {
|
||||||
parallel(jobMatrix('alfa-ci/build', [
|
def builds = jobMatrix('alfa-ci', 'build', [
|
||||||
[os: 'Debian8', arch: 'x86_64', compiler: 'gcc9.1.0', fairsoft: 'fairmq_dev'],
|
[os: 'fedora', ver: '33', arch: 'x86_64', compiler: 'gcc-10'],
|
||||||
[os: 'MacOS10.13', arch: 'x86_64', compiler: 'AppleLLVM10.0.0', fairsoft: 'fairmq_dev'],
|
[os: 'macos', ver: '11', arch: 'x86_64', compiler: 'apple-clang-12'],
|
||||||
[os: 'MacOS10.14', arch: 'x86_64', compiler: 'AppleLLVM10.0.0', fairsoft: 'fairmq_dev'],
|
])
|
||||||
]) { spec, label ->
|
|
||||||
sh './Dart.sh alfa_ci Dart.cfg'
|
parallel(builds)
|
||||||
})
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,77 +0,0 @@
|
||||||
#!groovy
|
|
||||||
|
|
||||||
def specToLabel(Map spec) {
|
|
||||||
return "${spec.os}-${spec.arch}-${spec.compiler}-FairSoft_${spec.fairsoft}"
|
|
||||||
}
|
|
||||||
|
|
||||||
def buildMatrix(List specs, Closure callback) {
|
|
||||||
def nodes = [:]
|
|
||||||
for (spec in specs) {
|
|
||||||
def label = specToLabel(spec)
|
|
||||||
def fairsoft = spec.fairsoft
|
|
||||||
def os = spec.os
|
|
||||||
def compiler = spec.compiler
|
|
||||||
nodes[label] = {
|
|
||||||
node(label) {
|
|
||||||
try {
|
|
||||||
deleteDir()
|
|
||||||
checkout scm
|
|
||||||
|
|
||||||
sh """\
|
|
||||||
echo "export SIMPATH=\${SIMPATH_PREFIX}${fairsoft}" >> Dart.cfg
|
|
||||||
echo "export FAIRSOFT_VERSION=${fairsoft}" >> Dart.cfg
|
|
||||||
"""
|
|
||||||
if (os =~ /Debian/ && compiler =~ /gcc9/) {
|
|
||||||
sh '''\
|
|
||||||
echo "source /etc/profile.d/modules.sh" >> Dart.cfg
|
|
||||||
echo "module use /cvmfs/it.gsi.de/modulefiles" >> Dart.cfg
|
|
||||||
echo "module load compiler/gcc/9.1.0" >> Dart.cfg
|
|
||||||
'''
|
|
||||||
}
|
|
||||||
if (os =~ /MacOS/) {
|
|
||||||
sh "echo \"export EXTRA_FLAGS='-DCMAKE_CXX_COMPILER=clang++'\" >> Dart.cfg"
|
|
||||||
} else {
|
|
||||||
sh "echo \"export EXTRA_FLAGS='-DCMAKE_CXX_COMPILER=g++'\" >> Dart.cfg"
|
|
||||||
}
|
|
||||||
sh '''\
|
|
||||||
echo "export BUILDDIR=$PWD/build" >> Dart.cfg
|
|
||||||
echo "export SOURCEDIR=$PWD" >> Dart.cfg
|
|
||||||
echo "export PATH=\\\$SIMPATH/bin:\\\$PATH" >> Dart.cfg
|
|
||||||
echo "export GIT_BRANCH=dev" >> Dart.cfg
|
|
||||||
echo "echo \\\$PATH" >> Dart.cfg
|
|
||||||
'''
|
|
||||||
sh 'cat Dart.cfg'
|
|
||||||
|
|
||||||
callback.call(spec, label)
|
|
||||||
|
|
||||||
deleteDir()
|
|
||||||
} catch (e) {
|
|
||||||
deleteDir()
|
|
||||||
throw e
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nodes
|
|
||||||
}
|
|
||||||
|
|
||||||
pipeline{
|
|
||||||
agent none
|
|
||||||
triggers { cron('H 2 * * *') }
|
|
||||||
stages {
|
|
||||||
stage("Run Nightly Build/Test Matrix") {
|
|
||||||
steps{
|
|
||||||
script {
|
|
||||||
parallel(buildMatrix([
|
|
||||||
[os: 'Debian8', arch: 'x86_64', compiler: 'gcc9.1.0', fairsoft: 'fairmq_dev'],
|
|
||||||
[os: 'MacOS10.13', arch: 'x86_64', compiler: 'AppleLLVM10.0.0', fairsoft: 'fairmq_dev'],
|
|
||||||
[os: 'MacOS10.14', arch: 'x86_64', compiler: 'AppleLLVM10.0.0', fairsoft: 'fairmq_dev'],
|
|
||||||
]) { spec, label ->
|
|
||||||
sh './Dart.sh Nightly Dart.cfg'
|
|
||||||
sh './Dart.sh Profile Dart.cfg'
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
46
test/ci/CMakeLists.txt
Normal file
46
test/ci/CMakeLists.txt
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
################################################################################
|
||||||
|
# Copyright (C) 2021 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH #
|
||||||
|
# #
|
||||||
|
# This software is distributed under the terms of the #
|
||||||
|
# GNU Lesser General Public Licence (LGPL) version 3, #
|
||||||
|
# copied verbatim in the file "LICENSE" #
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
function(container)
|
||||||
|
cmake_parse_arguments(ARGS "" "OS;VERSION;DOCKER_TAG;PACKAGE_SETUP_SCRIPT" "" ${ARGN})
|
||||||
|
|
||||||
|
if(ARGS_DOCKER_TAG)
|
||||||
|
set(DOCKER_TAG ${ARGS_DOCKER_TAG})
|
||||||
|
else()
|
||||||
|
set(DOCKER_TAG "${ARGS_OS}:${ARGS_VERSION}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(ARGS_PACKAGE_SETUP_SCRIPT)
|
||||||
|
set(PACKAGE_SETUP_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/${ARGS_PACKAGE_SETUP_SCRIPT}")
|
||||||
|
else()
|
||||||
|
set(PACKAGE_SETUP_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/setup-${ARGS_OS}.sh")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(container "${ARGS_OS}.${ARGS_VERSION}")
|
||||||
|
set(def "${container}.def")
|
||||||
|
set(log "${container}.log")
|
||||||
|
set(target "${container}.fairlogger.sif")
|
||||||
|
|
||||||
|
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/linux.def.in" ${def} @ONLY)
|
||||||
|
|
||||||
|
add_custom_command(OUTPUT ${target}
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E env ${BASH} -c
|
||||||
|
"${SINGULARITY} build -f -F ${target} ${def} > ${log} 2>&1"
|
||||||
|
VERBATIM
|
||||||
|
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||||
|
COMMENT "Building fairlogger test container ${target}, logging to ${CMAKE_CURRENT_BINARY_DIR}/${log}"
|
||||||
|
DEPENDS ${PACKAGE_SETUP_SCRIPT} ${bootstrap_cmake_script}
|
||||||
|
)
|
||||||
|
|
||||||
|
list(APPEND containers ${target})
|
||||||
|
set(containers ${containers} PARENT_SCOPE)
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
container(OS fedora VERSION 33)
|
||||||
|
|
||||||
|
add_custom_target(all-containers DEPENDS ${containers})
|
8
test/ci/linux.def.in
Normal file
8
test/ci/linux.def.in
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
Bootstrap: docker
|
||||||
|
From: @DOCKER_TAG@
|
||||||
|
|
||||||
|
%files
|
||||||
|
@PACKAGE_SETUP_SCRIPT@ /setup.sh
|
||||||
|
|
||||||
|
%post
|
||||||
|
bash /setup.sh
|
8
test/ci/setup-fedora.sh
Executable file
8
test/ci/setup-fedora.sh
Executable file
|
@ -0,0 +1,8 @@
|
||||||
|
#! /bin/bash
|
||||||
|
|
||||||
|
dnf -y update
|
||||||
|
dnf -y groupinstall "C Development Tools and Libraries"
|
||||||
|
dnf -y install binutils boost-devel cmake ca-certificates coreutils diffutils \
|
||||||
|
findutils fmt-devel gcc-c++ git hostname ninja-build patch procps python \
|
||||||
|
redhat-lsb-core sed tar wget which
|
||||||
|
dnf -y clean all
|
41
test/ci/slurm-submit.sh
Executable file
41
test/ci/slurm-submit.sh
Executable file
|
@ -0,0 +1,41 @@
|
||||||
|
#! /bin/bash
|
||||||
|
|
||||||
|
label="$1"
|
||||||
|
jobsh="$2"
|
||||||
|
|
||||||
|
if [ -z "$ALFACI_SLURM_CPUS" ]
|
||||||
|
then
|
||||||
|
ALFACI_SLURM_CPUS=32
|
||||||
|
fi
|
||||||
|
if [ -z "$ALFACI_SLURM_EXTRA_OPTS" ]
|
||||||
|
then
|
||||||
|
ALFACI_SLURM_EXTRA_OPTS="--hint=compute_bound"
|
||||||
|
fi
|
||||||
|
if [ -z "$ALFACI_SLURM_TIMEOUT" ]
|
||||||
|
then
|
||||||
|
ALFACI_SLURM_TIMEOUT=30
|
||||||
|
fi
|
||||||
|
if [ -z "$ALFACI_SLURM_QUEUE" ]
|
||||||
|
then
|
||||||
|
ALFACI_SLURM_QUEUE=main
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "*** Slurm request options :"
|
||||||
|
echo "*** Working directory ..: $PWD"
|
||||||
|
echo "*** Queue ..............: $ALFACI_SLURM_QUEUE"
|
||||||
|
echo "*** CPUs ...............: $ALFACI_SLURM_CPUS"
|
||||||
|
echo "*** Wall Time ..........: $ALFACI_SLURM_TIMEOUT min"
|
||||||
|
echo "*** Job Name ...........: ${label}"
|
||||||
|
echo "*** Extra Options ......: ${ALFACI_SLURM_EXTRA_OPTS}"
|
||||||
|
echo "*** Submitting job at ....: $(date -R)"
|
||||||
|
(
|
||||||
|
set -x
|
||||||
|
srun -p $ALFACI_SLURM_QUEUE -c $ALFACI_SLURM_CPUS -n 1 \
|
||||||
|
-t $ALFACI_SLURM_TIMEOUT \
|
||||||
|
--job-name="${label}" \
|
||||||
|
${ALFACI_SLURM_EXTRA_OPTS} \
|
||||||
|
bash "${jobsh}"
|
||||||
|
)
|
||||||
|
retval=$?
|
||||||
|
echo "*** Exit Code ............: $retval"
|
||||||
|
exit "$retval"
|
Loading…
Reference in New Issue
Block a user