mirror of
https://bitbucket.org/cosmicvoids/vide_public.git
synced 2025-07-04 23:31:12 +00:00
Add Jenkins support and download cache
This commit is contained in:
parent
8249256508
commit
baf18ad27a
2 changed files with 189 additions and 0 deletions
177
Jenkinsfile
vendored
Normal file
177
Jenkinsfile
vendored
Normal file
|
@ -0,0 +1,177 @@
|
||||||
|
pipeline {
|
||||||
|
agent { node { label 'ubuntu'; } }
|
||||||
|
|
||||||
|
options {
|
||||||
|
buildDiscarder(logRotator(numToKeepStr: '5'))
|
||||||
|
}
|
||||||
|
|
||||||
|
triggers {
|
||||||
|
pollSCM('H H(0-7) * * *')
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
environment {
|
||||||
|
DOC_DEPLOYER = credentials('Doc deployment')
|
||||||
|
}
|
||||||
|
|
||||||
|
stages {
|
||||||
|
stage('Preparation') {
|
||||||
|
steps {
|
||||||
|
script {
|
||||||
|
branchName = 'guilhem/jenkins_1.0'
|
||||||
|
cred = '0c503fb7-7bad-459f-81f1-71467b382d39'
|
||||||
|
|
||||||
|
env.PYTHON_VENV = """${sh(
|
||||||
|
returnStdout:true,
|
||||||
|
script: 'BTAG=$(echo ${BUILD_TAG} | sed "s,%,,g"); echo -n "${WORKSPACE}/${BTAG}"'
|
||||||
|
)}"""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
stage('Source') { // for display purposes
|
||||||
|
steps {
|
||||||
|
git branch: branchName, credentialsId: cred, url: 'git@bitbucket.org:cosmicvoids/vide_public.git'
|
||||||
|
|
||||||
|
sh 'python3 -m venv ${PYTHON_VENV}'
|
||||||
|
sh 'ls && echo ${PYTHON_VENV} && ls ${PYTHON_VENV}'
|
||||||
|
sh 'test -e ${PYTHON_VENV}'
|
||||||
|
|
||||||
|
// sh 'git submodule init'
|
||||||
|
// sh 'git submodule update --recursive'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// stage('Download deps') {
|
||||||
|
// steps {
|
||||||
|
// ansiColor('xterm') {
|
||||||
|
// sh '''
|
||||||
|
// export BORG_PREDOWNLOAD=/build/jenkins/borg_downloads
|
||||||
|
// if [[ -d ${BORG_PREDOWNLOAD} ]]; then
|
||||||
|
// rm -fr downloads/
|
||||||
|
// rsync -r ${BORG_PREDOWNLOAD}/ downloads/
|
||||||
|
// rm -f downloads/deps.txt
|
||||||
|
// fi
|
||||||
|
// bash build.sh --download-deps
|
||||||
|
// rsync -r downloads/ ${BORG_PREDOWNLOAD}/
|
||||||
|
// '''
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
stage('Configure') {
|
||||||
|
steps {
|
||||||
|
ansiColor('xterm') {
|
||||||
|
sh '''
|
||||||
|
. ${PYTHON_VENV}/bin/activate
|
||||||
|
export VIDE_PREDOWNLOAD=/build/jenkins/vide_downloads
|
||||||
|
if ! test -d ${VIDE_PREDOWNLOAD}; then
|
||||||
|
mkdir ${VIDE_PREDOWNLOAD}
|
||||||
|
fi
|
||||||
|
CMAKE_PREFIX_PATH=${VIRTUAL_ENV}:/opt/boost
|
||||||
|
export CMAKE_PREFIX_PATH
|
||||||
|
mkdir build
|
||||||
|
cd build
|
||||||
|
cmake -DVIDE_DOWNLOAD_CACHE=${VIDE_PREDOWNLOAD} -DINSTALL_PYTHON_LOCAL=OFF -DCMAKE_INSTALL_PREFIX=${PYTHON_VENV} ..
|
||||||
|
'''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
stage('Build') {
|
||||||
|
steps {
|
||||||
|
ansiColor('xterm') {
|
||||||
|
dir('build') {
|
||||||
|
sh 'make -j6'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// stage('Tests') {
|
||||||
|
// steps {
|
||||||
|
// dir('build') {
|
||||||
|
// sh """
|
||||||
|
// . ${PYTHON_VENV}/bin/activate
|
||||||
|
// pip3 install wheel pytest jax[cpu] numpy deprecated
|
||||||
|
// ctest -V
|
||||||
|
// """
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// stage('Install') {
|
||||||
|
// steps {
|
||||||
|
// dir('build') {
|
||||||
|
// sh 'make install'
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// stage("Doc") {
|
||||||
|
// steps {
|
||||||
|
// dir('docs') {
|
||||||
|
// sh """
|
||||||
|
// . ${PYTHON_VENV}/bin/activate
|
||||||
|
// export PYTHONWARNINGS=always::ImportWarning
|
||||||
|
// pip3 install wheel
|
||||||
|
// pip3 install -r requirements.txt
|
||||||
|
// rm -fr source/_generate
|
||||||
|
// rm -fr _build
|
||||||
|
// make html
|
||||||
|
// tar -C _build/html -zcvf doc.tgz .
|
||||||
|
// curl -v -F filename=doc -F file=@doc.tgz http://athos.iap.fr:9595/deploy-doc2/$DOC_DEPLOYER/borg-main
|
||||||
|
// """
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
post {
|
||||||
|
failure {
|
||||||
|
notifyBuild("FAIL")
|
||||||
|
}
|
||||||
|
success {
|
||||||
|
notifyBuild("SUCCESS")
|
||||||
|
}
|
||||||
|
always {
|
||||||
|
|
||||||
|
/* clean up our workspace */
|
||||||
|
deleteDir()
|
||||||
|
/* clean up tmp directory */
|
||||||
|
|
||||||
|
dir("${PYTHON_VENV}") {
|
||||||
|
deleteDir()
|
||||||
|
}
|
||||||
|
dir("${workspace}@tmp") {
|
||||||
|
deleteDir()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
def notifyBuild(String buildStatus = 'STARTED') {
|
||||||
|
// build status of null means successful
|
||||||
|
buildStatus = buildStatus ?: 'SUCCESS'
|
||||||
|
|
||||||
|
// Default values
|
||||||
|
def colorName = 'RED'
|
||||||
|
def colorCode = '#FF0000'
|
||||||
|
def subject = "${buildStatus}: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]'"
|
||||||
|
def summary = "${subject} (${env.BUILD_URL})"
|
||||||
|
|
||||||
|
// Override default values based on build status
|
||||||
|
if (buildStatus == 'STARTED') {
|
||||||
|
color = 'YELLOW'
|
||||||
|
colorCode = '#0000FF'
|
||||||
|
} else if (buildStatus == 'SUCCESS') {
|
||||||
|
color = 'GREEN'
|
||||||
|
colorCode = '#00FF00'
|
||||||
|
} else {
|
||||||
|
color = 'RED'
|
||||||
|
colorCode = '#FF0000'
|
||||||
|
}
|
||||||
|
|
||||||
|
def details = """<p>STARTED: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]':</p>
|
||||||
|
<p>Check console output at "<a href='${env.BUILD_URL}'>${env.JOB_NAME} [${env.BUILD_NUMBER}]</a>"</p>
|
||||||
|
<p>Build status: <span style='color: ${colorCode};'>${buildStatus}</span></p>"""
|
||||||
|
|
||||||
|
emailext (
|
||||||
|
mimeType: 'text/html',
|
||||||
|
subject: subject,
|
||||||
|
body: details,
|
||||||
|
recipientProviders: [developers(), requestor()]
|
||||||
|
)
|
||||||
|
}
|
12
external/external_build.cmake
vendored
12
external/external_build.cmake
vendored
|
@ -1,5 +1,6 @@
|
||||||
include(FindOpenMP)
|
include(FindOpenMP)
|
||||||
|
|
||||||
|
SET(VIDE_DOWNLOAD_CACHE "${CMAKE_SOURCE_DIR}/downloads" CACHE PATH "Cache directory for downloaded dependencies")
|
||||||
OPTION(ENABLE_OPENMP "Set to Yes if Healpix and/or you need openMP" OFF)
|
OPTION(ENABLE_OPENMP "Set to Yes if Healpix and/or you need openMP" OFF)
|
||||||
OPTION(SDF_SUPPORT "Set to Yes to activate support for SDF" ON)
|
OPTION(SDF_SUPPORT "Set to Yes to activate support for SDF" ON)
|
||||||
|
|
||||||
|
@ -68,8 +69,10 @@ if (INTERNAL_GENGETOPT)
|
||||||
SET(GENGETOPT_SOURCE_DIR ${BUILD_PREFIX}/gengetopt-prefix/src/gengetopt)
|
SET(GENGETOPT_SOURCE_DIR ${BUILD_PREFIX}/gengetopt-prefix/src/gengetopt)
|
||||||
SET(GENGETOPT_BIN_DIR ${CMAKE_BINARY_DIR}/ext_build/gengetopt)
|
SET(GENGETOPT_BIN_DIR ${CMAKE_BINARY_DIR}/ext_build/gengetopt)
|
||||||
ExternalProject_Add(gengetopt
|
ExternalProject_Add(gengetopt
|
||||||
|
DOWNLOAD_DIR ${VIDE_DOWNLOAD_CACHE}
|
||||||
PREFIX ${BUILD_PREFIX}/gengetopt-prefix
|
PREFIX ${BUILD_PREFIX}/gengetopt-prefix
|
||||||
URL ${GENGETOPT_URL}
|
URL ${GENGETOPT_URL}
|
||||||
|
DOWNLOAD_DIR ${VIDE_DOWNLOAD_CACHE}
|
||||||
CONFIGURE_COMMAND ${GENGETOPT_SOURCE_DIR}/configure
|
CONFIGURE_COMMAND ${GENGETOPT_SOURCE_DIR}/configure
|
||||||
--prefix=${GENGETOPT_BIN_DIR}
|
--prefix=${GENGETOPT_BIN_DIR}
|
||||||
CPPFLAGS=${CONFIGURE_CPP_FLAGS}
|
CPPFLAGS=${CONFIGURE_CPP_FLAGS}
|
||||||
|
@ -93,8 +96,10 @@ if (INTERNAL_HDF5)
|
||||||
SET(HDF5_SOURCE_DIR ${BUILD_PREFIX}/hdf5-prefix/src/hdf5)
|
SET(HDF5_SOURCE_DIR ${BUILD_PREFIX}/hdf5-prefix/src/hdf5)
|
||||||
SET(HDF5_BIN_DIR ${CMAKE_BINARY_DIR}/ext_build/hdf5)
|
SET(HDF5_BIN_DIR ${CMAKE_BINARY_DIR}/ext_build/hdf5)
|
||||||
ExternalProject_Add(hdf5
|
ExternalProject_Add(hdf5
|
||||||
|
DOWNLOAD_DIR ${VIDE_DOWNLOAD_CACHE}
|
||||||
PREFIX ${BUILD_PREFIX}/hdf5-prefix
|
PREFIX ${BUILD_PREFIX}/hdf5-prefix
|
||||||
URL ${HDF5_URL}
|
URL ${HDF5_URL}
|
||||||
|
DOWNLOAD_DIR ${VIDE_DOWNLOAD_CACHE}
|
||||||
CONFIGURE_COMMAND ${HDF5_SOURCE_DIR}/configure
|
CONFIGURE_COMMAND ${HDF5_SOURCE_DIR}/configure
|
||||||
--disable-shared --enable-cxx --with-pic
|
--disable-shared --enable-cxx --with-pic
|
||||||
--prefix=${HDF5_BIN_DIR} --libdir=${HDF5_BIN_DIR}/lib
|
--prefix=${HDF5_BIN_DIR} --libdir=${HDF5_BIN_DIR}/lib
|
||||||
|
@ -136,6 +141,7 @@ if (INTERNAL_NETCDF)
|
||||||
SET(CONFIGURE_LDFLAGS "${CONFIGURE_LDFLAGS} -L${NETCDF_BIN_DIR}/lib")
|
SET(CONFIGURE_LDFLAGS "${CONFIGURE_LDFLAGS} -L${NETCDF_BIN_DIR}/lib")
|
||||||
SET(EXTRA_NC_FLAGS CPPFLAGS=${CONFIGURE_CPP_FLAGS} LDFLAGS=${CONFIGURE_LDFLAGS} LIBS=${CONFIGURE_LIBS_FLAGS})
|
SET(EXTRA_NC_FLAGS CPPFLAGS=${CONFIGURE_CPP_FLAGS} LDFLAGS=${CONFIGURE_LDFLAGS} LIBS=${CONFIGURE_LIBS_FLAGS})
|
||||||
ExternalProject_Add(netcdf
|
ExternalProject_Add(netcdf
|
||||||
|
DOWNLOAD_DIR ${VIDE_DOWNLOAD_CACHE}
|
||||||
DEPENDS ${hdf5_built}
|
DEPENDS ${hdf5_built}
|
||||||
PREFIX ${BUILD_PREFIX}/netcdf-prefix
|
PREFIX ${BUILD_PREFIX}/netcdf-prefix
|
||||||
URL ${NETCDF_URL}
|
URL ${NETCDF_URL}
|
||||||
|
@ -179,6 +185,7 @@ if (INTERNAL_BOOST)
|
||||||
SET(BOOST_SOURCE_DIR ${BUILD_PREFIX}/boost-prefix/src/boost)
|
SET(BOOST_SOURCE_DIR ${BUILD_PREFIX}/boost-prefix/src/boost)
|
||||||
SET(cosmotool_DEPS ${cosmotool_DEPS} boost)
|
SET(cosmotool_DEPS ${cosmotool_DEPS} boost)
|
||||||
ExternalProject_Add(boost
|
ExternalProject_Add(boost
|
||||||
|
DOWNLOAD_DIR ${VIDE_DOWNLOAD_CACHE}
|
||||||
URL ${BOOST_URL}
|
URL ${BOOST_URL}
|
||||||
PREFIX ${BUILD_PREFIX}/boost-prefix
|
PREFIX ${BUILD_PREFIX}/boost-prefix
|
||||||
CONFIGURE_COMMAND
|
CONFIGURE_COMMAND
|
||||||
|
@ -199,6 +206,7 @@ mark_as_advanced(Boost_INCLUDE_DIRS Boost_LIBRARIES)
|
||||||
IF(INTERNAL_GSL)
|
IF(INTERNAL_GSL)
|
||||||
SET(GSL_SOURCE_DIR ${BUILD_PREFIX}/gsl-prefix/src/gsl)
|
SET(GSL_SOURCE_DIR ${BUILD_PREFIX}/gsl-prefix/src/gsl)
|
||||||
ExternalProject_Add(gsl
|
ExternalProject_Add(gsl
|
||||||
|
DOWNLOAD_DIR ${VIDE_DOWNLOAD_CACHE}
|
||||||
URL ${GSL_URL}
|
URL ${GSL_URL}
|
||||||
PREFIX ${BUILD_PREFIX}/gsl-prefix
|
PREFIX ${BUILD_PREFIX}/gsl-prefix
|
||||||
CONFIGURE_COMMAND ${GSL_SOURCE_DIR}/configure
|
CONFIGURE_COMMAND ${GSL_SOURCE_DIR}/configure
|
||||||
|
@ -225,6 +233,7 @@ mark_as_advanced(GSL_LIBRARY GSLCBLAS_LIBRARY GSL_INCLUDE_PATH)
|
||||||
# Build cfitsio
|
# Build cfitsio
|
||||||
#################
|
#################
|
||||||
ExternalProject_Add(cfitsio
|
ExternalProject_Add(cfitsio
|
||||||
|
DOWNLOAD_DIR ${VIDE_DOWNLOAD_CACHE}
|
||||||
SOURCE_DIR ${CMAKE_SOURCE_DIR}/external/cfitsio
|
SOURCE_DIR ${CMAKE_SOURCE_DIR}/external/cfitsio
|
||||||
PREFIX ${BUILD_PREFIX}/cfitsio-prefix
|
PREFIX ${BUILD_PREFIX}/cfitsio-prefix
|
||||||
CONFIGURE_COMMAND
|
CONFIGURE_COMMAND
|
||||||
|
@ -246,6 +255,7 @@ SET(CFITSIO_INCLUDE_PATH ${CFITSIO_PREFIX}/include)
|
||||||
#################
|
#################
|
||||||
|
|
||||||
ExternalProject_Add(healpix
|
ExternalProject_Add(healpix
|
||||||
|
DOWNLOAD_DIR ${VIDE_DOWNLOAD_CACHE}
|
||||||
DEPENDS cfitsio
|
DEPENDS cfitsio
|
||||||
PREFIX ${BUILD_PREFIX}/healpix-prefix
|
PREFIX ${BUILD_PREFIX}/healpix-prefix
|
||||||
SOURCE_DIR ${CMAKE_SOURCE_DIR}/external/healpix
|
SOURCE_DIR ${CMAKE_SOURCE_DIR}/external/healpix
|
||||||
|
@ -278,6 +288,7 @@ SET(NETCDF_LIBRARIES ${NETCDFCPP_LIBRARY} ${NETCDF_LIBRARY} ${HDF5HL_LIBRARY} ${
|
||||||
###############
|
###############
|
||||||
if (INTERNAL_QHULL)
|
if (INTERNAL_QHULL)
|
||||||
ExternalProject_Add(qhull
|
ExternalProject_Add(qhull
|
||||||
|
DOWNLOAD_DIR ${VIDE_DOWNLOAD_CACHE}
|
||||||
URL ${QHULL_URL}
|
URL ${QHULL_URL}
|
||||||
PREFIX ${BUILD_PREFIX}/qhull-prefix
|
PREFIX ${BUILD_PREFIX}/qhull-prefix
|
||||||
CMAKE_ARGS
|
CMAKE_ARGS
|
||||||
|
@ -309,6 +320,7 @@ IF(SDF_SUPPORT)
|
||||||
SET(LIBSDF_PATH ${CMAKE_SOURCE_DIR}/external/libsdf)
|
SET(LIBSDF_PATH ${CMAKE_SOURCE_DIR}/external/libsdf)
|
||||||
|
|
||||||
ExternalProject_Add(libSDF
|
ExternalProject_Add(libSDF
|
||||||
|
DOWNLOAD_DIR ${VIDE_DOWNLOAD_CACHE}
|
||||||
URL ${CMAKE_SOURCE_DIR}/external/mswarren-libsdf-b4b9f9464b5b.tar.gz
|
URL ${CMAKE_SOURCE_DIR}/external/mswarren-libsdf-b4b9f9464b5b.tar.gz
|
||||||
PREFIX ${BUILD_PREFIX}/libSDF-prefix
|
PREFIX ${BUILD_PREFIX}/libSDF-prefix
|
||||||
CONFIGURE_COMMAND echo No configure
|
CONFIGURE_COMMAND echo No configure
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue