diff --git a/Jenkinsfile b/Jenkinsfile index b51d4e3b..a34113e9 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -4,20 +4,21 @@ def jobMatrix(String type, List specs) { def nodes = [:] for (spec in specs) { def job = "" - def selector = "" + def selector = "slurm" def os = "" def ver = "" if (type == 'build') { job = "${spec.os}-${spec.ver}-${spec.arch}-${spec.compiler}" - selector = "${spec.os}-${spec.ver}-${spec.arch}" + if (spec.os =~ /^macos/) { + selector = "${spec.os}-${spec.ver}-${spec.arch}" + } os = spec.os ver = spec.ver } else { // == 'check' job = "${spec.name}" - selector = 'fedora-35-x86_64' os = 'fedora' - ver = '35' + ver = '36' } def label = "${job}" @@ -36,14 +37,14 @@ def jobMatrix(String type, List specs) { sh "echo \"export LABEL=\\\"\${JOB_BASE_NAME} ${label}\\\"\" >> ${jobscript}" if (selector =~ /^macos/) { sh """\ - echo \"export DDS_ROOT=\\\"\\\$(brew --prefix dds)\\\"\" >> ${jobscript} - echo \"export PATH=\\\"\\\$(brew --prefix dds)/bin:\\\$PATH\\\"\" >> ${jobscript} echo \"${ctestcmd}\" >> ${jobscript} """ sh "cat ${jobscript}" sh "bash ${jobscript}" - } else { - def containercmd = "singularity exec --net --ipc --uts --pid -B/shared ${env.SINGULARITY_CONTAINER_ROOT}/fairmq/${os}.${ver}.sif bash -l -c \\\"${ctestcmd} ${extra}\\\"" + } else { // selector == "slurm" + def imageurl = "oras://ghcr.io/fairrootgroup/fairmq-dev/${os}-${ver}-sif:latest" + def execopts = "--net --ipc --uts --pid -B/shared" + def containercmd = "singularity exec ${execopts} ${imageurl} bash -l -c \\\"${ctestcmd} ${extra}\\\"" sh """\ echo \"echo \\\"*** Job started at .......: \\\$(date -R)\\\"\" >> ${jobscript} echo \"echo \\\"*** Job ID ...............: \\\${SLURM_JOB_ID}\\\"\" >> ${jobscript} @@ -67,12 +68,6 @@ def jobMatrix(String type, List specs) { deleteDir() githubNotify(context: "${label}", description: 'Success', status: 'SUCCESS') } catch (e) { - def tarball = "${type}_${job}_dds_logs.tar.gz" - if (fileExists("build/test/.DDS")) { - sh "tar czvf ${tarball} -C \${WORKSPACE}/build/test .DDS/" - archiveArtifacts tarball - } - deleteDir() githubNotify(context: "${label}", description: 'Error', status: 'ERROR') throw e @@ -93,12 +88,13 @@ pipeline{ def builds = jobMatrix('build', [ [os: 'ubuntu', ver: '20.04', arch: 'x86_64', compiler: 'gcc-9', extra: all], - [os: 'fedora', ver: '32', arch: 'x86_64', compiler: 'gcc-10', extra: all], + [os: 'ubuntu', ver: '22.04', arch: 'x86_64', compiler: 'gcc-11', extra: '-DHAS_ASIO=ON -DHAS_ASIOFI=ON'], [os: 'fedora', ver: '33', arch: 'x86_64', compiler: 'gcc-10', extra: all], [os: 'fedora', ver: '34', arch: 'x86_64', compiler: 'gcc-11', extra: all], [os: 'fedora', ver: '35', arch: 'x86_64', compiler: 'gcc-11', extra: all], + [os: 'fedora', ver: '36', arch: 'x86_64', compiler: 'gcc-12', extra: all], [os: 'macos', ver: '12', arch: 'x86_64', compiler: 'apple-clang-13', extra: '-DHAS_ASIO=ON'], - [os: 'macos', ver: '12', arch: 'arm64', compiler: 'apple-clang-13', extra: '-DHAS_ASIO=ON'], + [os: 'macos', ver: '12', arch: 'arm64', compiler: 'apple-clang-13', extra: '-DHAS_ASIO=ON'], ]) def all_debug = "${all} -DCMAKE_BUILD_TYPE=Debug" diff --git a/test/ci/Containerfile.fedora b/test/ci/Containerfile.fedora new file mode 100644 index 00000000..5a6b2719 --- /dev/null +++ b/test/ci/Containerfile.fedora @@ -0,0 +1,19 @@ +ARG VERSION=latest +FROM fedora:${VERSION} +ARG VERSION=latest +LABEL org.opencontainers.image.source "https://github.com/FairRootGroup/FairMQ" +LABEL org.opencontainers.image.description "FairMQ development environment" +RUN dnf -y update +# https://git.gsi.de/SDE/packages/builder +RUN dnf -y install https://alfa-ci.gsi.de/packages/rpm/fedora-$VERSION-x86_64/fairsoft-release-dev.rpm +RUN dnf -y install clang cli11-devel pmix-devel ninja-build 'dnf-command(builddep)' libasan liblsan libtsan libubsan clang-tools-extra +RUN dnf -y builddep fairmq +RUN dnf -y clean all + +# buildah build --build-arg "VERSION=36" -t "ghcr.io/fairrootgroup/fairmq-dev/fedora-36:latest" -f test/ci/Containerfile.fedora . +# echo $GH_PAT | buildah login -u dennisklein --password-stdin ghcr.io +# buildah push ghcr.io/fairrootgroup/fairmq-dev/fedora-36:latest + +# apptainer pull docker://ghcr.io/fairrootgroup/fairmq-dev/fedora-36:latest +# echo $GH_PAT | apptainer remote login -u dennisklein --password-stdin oras://ghcr.io +# apptainer push ./fedora-36_latest.sif oras://ghcr.io/fairrootgroup/fairmq-dev/fedora-36-sif:latest diff --git a/test/ci/Containerfile.ubuntu b/test/ci/Containerfile.ubuntu new file mode 100644 index 00000000..8fa3543e --- /dev/null +++ b/test/ci/Containerfile.ubuntu @@ -0,0 +1,41 @@ +ARG VERSION=latest +FROM ubuntu:${VERSION} +ARG VERSION=latest +LABEL org.opencontainers.image.source "https://github.com/FairRootGroup/FairMQ" +LABEL org.opencontainers.image.description "FairMQ development environment" + +RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections +RUN apt-get update +RUN apt-get -y upgrade +RUN apt-get -y install ca-certificates patch cmake git libboost-dev libboost-log-dev libboost-system-dev libboost-regex-dev libboost-filesystem-dev libboost-container-dev libboost-thread-dev libboost-date-time-dev libboost-program-options-dev g++ libfmt-dev ninja-build wget libczmq-dev libxml2-utils libfabric-dev libfabric-bin libpmix-dev pkg-config +RUN apt-get -y clean + +RUN cd /tmp + +RUN git clone -b v1.19.2 --recurse-submodules https://github.com/FairRootGroup/asio +RUN cmake -GNinja -S asio -B asio_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release +RUN cmake --build asio_build --target install +RUN rm -rf asio asio_build + +RUN git clone -b v1.0.0 https://github.com/FairRootGroup/FairCMakeModules +RUN cmake -GNinja -S FairCMakeModules -B FairCMakeModules_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release +RUN cmake --build FairCMakeModules_build --target install +RUN rm -rf FairCMakeModules FairCMakeModules_build + +RUN git clone -b v0.5.1 --recurse-submodules https://github.com/FairRootGroup/asiofi +RUN cmake -GNinja -S asiofi -B asiofi_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release +RUN cmake --build asiofi_build --target install +RUN rm -rf asiofi asiofi_build + +RUN git clone -b v1.11.0 https://github.com/FairRootGroup/FairLogger +RUN cmake -GNinja -S FairLogger -B FairLogger_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DUSE_EXTERNAL_FMT=ON +RUN cmake --build FairLogger_build --target install +RUN rm -rf FairLogger FairLogger_build + +# buildah build --build-arg "VERSION=22.04" -t "ghcr.io/fairrootgroup/fairmq-dev/ubuntu-22.04:latest" -f test/ci/Containerfile.ubuntu . +# echo $GH_PAT | buildah login -u dennisklein --password-stdin ghcr.io +# buildah push ghcr.io/fairrootgroup/fairmq-dev/ubuntu-22.04:latest + +# apptainer pull docker://ghcr.io/fairrootgroup/fairmq-dev/ubuntu-22.04:latest +# echo $GH_PAT | apptainer remote login -u dennisklein --password-stdin oras://ghcr.io +# apptainer push ./ubuntu-22.04_latest.sif oras://ghcr.io/fairrootgroup/fairmq-dev/ubuntu-22.04-sif:latest diff --git a/test/ci/fedora.32.def b/test/ci/fedora.32.def deleted file mode 100644 index 9b7f384e..00000000 --- a/test/ci/fedora.32.def +++ /dev/null @@ -1,9 +0,0 @@ -Bootstrap: docker -From: fedora:32 - -%post - dnf -y update - dnf -y install https://alfa-ci.gsi.de/packages/rpm/fedora-32-x86_64/fairsoft-release-dev.rpm - dnf -y install cli11-devel pmix-devel ninja-build 'dnf-command(builddep)' - dnf -y builddep fairmq - dnf -y clean all diff --git a/test/ci/fedora.33.def b/test/ci/fedora.33.def deleted file mode 100644 index ed842c27..00000000 --- a/test/ci/fedora.33.def +++ /dev/null @@ -1,9 +0,0 @@ -Bootstrap: docker -From: fedora:33 - -%post - dnf -y update - dnf -y install https://alfa-ci.gsi.de/packages/rpm/fedora-33-x86_64/fairsoft-release-dev.rpm - dnf -y install cli11-devel pmix-devel ninja-build 'dnf-command(builddep)' - dnf -y builddep fairmq - dnf -y clean all diff --git a/test/ci/fedora.34.def b/test/ci/fedora.34.def deleted file mode 100644 index 24eb9f3f..00000000 --- a/test/ci/fedora.34.def +++ /dev/null @@ -1,9 +0,0 @@ -Bootstrap: docker -From: fedora:34 - -%post - dnf -y update - dnf -y install https://alfa-ci.gsi.de/packages/rpm/fedora-34-x86_64/fairsoft-release-dev.rpm - dnf -y install cli11-devel pmix-devel ninja-build 'dnf-command(builddep)' libasan liblsan libtsan libubsan clang-tools-extra - dnf -y builddep fairmq - dnf -y clean all diff --git a/test/ci/fedora.35.def b/test/ci/fedora.35.def deleted file mode 100644 index fda0d263..00000000 --- a/test/ci/fedora.35.def +++ /dev/null @@ -1,9 +0,0 @@ -Bootstrap: docker -From: fedora:35 - -%post - dnf -y update - dnf -y install https://alfa-ci.gsi.de/packages/rpm/fedora-35-x86_64/fairsoft-release-dev.rpm - dnf -y install clang cli11-devel pmix-devel ninja-build 'dnf-command(builddep)' libasan liblsan libtsan libubsan clang-tools-extra - dnf -y builddep fairmq - dnf -y clean all diff --git a/test/ci/ubuntu.20.04.def b/test/ci/ubuntu.20.04.def deleted file mode 100644 index bdc1f950..00000000 --- a/test/ci/ubuntu.20.04.def +++ /dev/null @@ -1,36 +0,0 @@ -Bootstrap: docker -From: ubuntu:20.04 - -%post - export DEBIAN_FRONTEND=noninteractive - apt-get update - apt-get -y upgrade - apt-get -y install ca-certificates patch cmake git libboost-dev libboost-log-dev libboost-system-dev libboost-regex-dev libboost-filesystem-dev libboost-container-dev libboost-thread-dev libboost-date-time-dev libboost-program-options-dev g++ libfmt-dev ninja-build wget libczmq-dev libxml2-utils libfabric-dev libfabric-bin libpmix-dev pkg-config - apt-get -y clean - - cd /tmp - - git clone -b v1.19.2 --recurse-submodules https://github.com/FairRootGroup/asio - cmake -GNinja -S asio -B asio_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release - cmake --build asio_build --target install - rm -rf asio asio_build - - git clone -b v1.0.0 https://github.com/FairRootGroup/FairCMakeModules - cmake -GNinja -S FairCMakeModules -B FairCMakeModules_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release - cmake --build FairCMakeModules_build --target install - rm -rf FairCMakeModules FairCMakeModules_build - - git clone -b v0.5.1 --recurse-submodules https://github.com/FairRootGroup/asiofi - cmake -GNinja -S asiofi -B asiofi_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release - cmake --build asiofi_build --target install - rm -rf asiofi asiofi_build - - git clone -b v1.12.1 https://github.com/google/flatbuffers - cmake -GNinja -S flatbuffers -B flatbuffers_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DCMAKE_POSITION_INDEPENDENT_CODE=ON - cmake --build flatbuffers_build --target install - rm -rf flatbuffers flatbuffers_build - - git clone -b v1.9.3 https://github.com/FairRootGroup/FairLogger - cmake -GNinja -S FairLogger -B FairLogger_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DUSE_EXTERNAL_FMT=ON - cmake --build FairLogger_build --target install - rm -rf FairLogger FairLogger_build