Skip to content

SAND CI

SAND CI #33

Workflow file for this run

name: SAND CI [dev]
run-name: SAND CI
on: [push]
env:
root-version: v6-32-02
geant4-version: v11.2.2
edepsim-version: 3.2.0
jobs:
Explore-GitHub-Actions:
runs-on: ubuntu-latest
container: almalinux/9-base
steps:
# # reference: https://docs.docker.com/engine/install/ubuntu/
# # Set up Docker's apt repository.
# ## Add Docker's official GPG key:
# - run: sudo apt-get update
# - run: sudo apt-get install ca-certificates curl
# - run: sudo install -m 0755 -d /etc/apt/keyrings
# - run: sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
# - run: sudo chmod a+r /etc/apt/keyrings/docker.asc
# ## Add the repository to Apt sources:
# - run: echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# - run: sudo apt-get update
# # Install the Docker packages.
# - run: sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# # Verify that the Docker Engine installation is successful by running the hello-world image.
# - run: sudo docker run hello-world
# # Download AL9 image
# - run: docker pull almalinux/9-base
# # Install ROOT dependencies
# # https://root.cern/install/dependencies/
# - run: yum install -y git make cmake gcc-c++ gcc binutils libX11-devel libXpm-devel libXft-devel libXext-devel python openssl-devel
# - run: yum install -y epel-release
# # - run: ls -lrt /etc/yum.repos.d
# # - run: yum config-manager --set-enabled powertools
# - run: yum -y install xrootd-client-devel xrootd-libs-devel gcc-gfortran pcre-devel mesa-libGL-devel mesa-libGLU-devel glew-devel ftgl-devel mysql-devel fftw-devel cfitsio-devel graphviz-devel libuuid-devel avahi-compat-libdns_sd-devel openldap-devel python-devel python3-numpy libxml2-devel gsl-devel readline-devel qt5-qtwebengine-devel R-devel R-Rcpp-devel R-RInside-devel
# Install ROOT v6.32.02 with the package provider yum
# - run: yum install -y epel-release
# - run: |
# yum install -y root-6.32.02-1.el9.x86_64 root-fumili-6.32.02-1.el9.x86_64 root-gdml-6.32.02-1.el9.x86_64 root-genetic-6.32.02-1.el9.x86_64 \
# root-genvector-6.32.02-1.el9.x86_64 root-geom-6.32.02-1.el9.x86_64 root-geom-builder-6.32.02-1.el9.x86_64 root-geom-painter-6.32.02-1.el9.x86_64 \
# root-geom-webviewer-6.32.02-1.el9.x86_64 root-graf-fitsio-6.32.02-1.el9.x86_64 root-graf-gpadv7-6.32.02-1.el9.x86_64 root-graf-gviz-6.32.02-1.el9.x86_64 \
# root-graf-primitives-6.32.02-1.el9.x86_64 root-graf3d-csg-6.32.02-1.el9.x86_64 root-graf3d-eve-6.32.02-1.el9.x86_64 root-graf3d-eve7-6.32.02-1.el9.x86_64 \
# root-graf3d-gl-6.32.02-1.el9.x86_64 root-graf3d-gviz3d-6.32.02-1.el9.x86_64 root-graf3d-x3d-6.32.02-1.el9.x86_64 root-gui-browsable-6.32.02-1.el9.x86_64 \
# root-gui-browserv7-6.32.02-1.el9.x86_64 root-gui-builder-6.32.02-1.el9.x86_64 root-gui-canvaspainter-6.32.02-1.el9.x86_64 root-gui-fitpanel-6.32.02-1.el9.x86_64 \
# root-gui-fitpanelv7-6.32.02-1.el9.x86_64 root-gui-html-6.32.02-1.el9.x86_64 root-gui-qt5webdisplay-6.32.02-1.el9.x86_64 root-gui-qt6webdisplay-6.32.02-1.el9.x86_64 \
# root-gui-recorder-6.32.02-1.el9.x86_64 root-gui-webdisplay-6.32.02-1.el9.x86_64 root-gui-webgui6-6.32.02-1.el9.x86_64 root-hbook-6.32.02-1.el9.x86_64 \
# root-hist-draw-6.32.02-1.el9.x86_64 root-hist-factory-6.32.02-1.el9.x86_64 root-histv7-6.32.02-1.el9.x86_64 root-html-6.32.02-1.el9.x86_64 \
# root-io-dcache-6.32.02-1.el9.x86_64 root-io-sql-6.32.02-1.el9.x86_64 root-io-xml-6.32.02-1.el9.x86_64 root-io-xmlparser-6.32.02-1.el9.x86_64 \
# root-minuit2-6.32.02-1.el9.x86_64 root-mlp-6.32.02-1.el9.x86_64 root-montecarlo-eg-6.32.02-1.el9.x86_64 root-montecarlo-pythia8-6.32.02-1.el9.x86_64 \
# root-net-auth-6.32.02-1.el9.x86_64 root-net-davix-6.32.02-1.el9.x86_64 root-net-http-6.32.02-1.el9.x86_64 root-net-httpsniff-6.32.02-1.el9.x86_64 \
# root-net-rpdutils-6.32.02-1.el9.x86_64 root-netx-6.32.02-1.el9.x86_64 root-proof-6.32.02-1.el9.x86_64 root-proof-bench-6.32.02-1.el9.x86_64 \
# root-proof-player-6.32.02-1.el9.x86_64 root-proof-sessionviewer-6.32.02-1.el9.x86_64 root-quadp-6.32.02-1.el9.x86_64 python3-jupyroot-6.32.02-1.el9.noarch \
# root-roofit-6.32.02-1.el9.x86_64 root-roofit-batchcompute-6.32.02-1.el9.x86_64 root-roofit-core-6.32.02-1.el9.x86_64 \
# root-roofit-dataframe-helpers-6.32.02-1.el9.x86_64 root-roofit-hs3-6.32.02-1.el9.x86_64 root-roofit-jsoninterface-6.32.02-1.el9.x86_64 \
# root-roofit-more-6.32.02-1.el9.x86_64 root-roostats-6.32.02-1.el9.x86_64 root-smatrix-6.32.02-1.el9.x86_64 root-spectrum-6.32.02-1.el9.x86_64 \
# root-spectrum-painter-6.32.02-1.el9.x86_64 root-splot-6.32.02-1.el9.x86_64 root-sql-mysql-6.32.02-1.el9.x86_64 root-sql-odbc-6.32.02-1.el9.x86_64 \
# root-sql-pgsql-6.32.02-1.el9.x86_64 root-sql-sqlite-6.32.02-1.el9.x86_64 root-testsupport-6.32.02-1.el9.x86_64 root-tmva-6.32.02-1.el9.x86_64 \
# root-tmva-gui-6.32.02-1.el9.x86_64 root-tmva-python-6.32.02-1.el9.x86_64 root-tmva-sofie-6.32.02-1.el9.x86_64 root-fftw-6.32.02-1.el9.x86_64 \
# root-tmva-sofie-parser-6.32.02-1.el9.x86_64 root-tmva-utils-6.32.02-1.el9.x86_64 root-tpython-6.32.02-1.el9.x86_64 root-tree-ntuple-utils-6.32.02-1.el9.x86_64 \
# root-tree-viewer-6.32.02-1.el9.x86_64 root-tree-webviewer-6.32.02-1.el9.x86_64 root-unfold-6.32.02-1.el9.x86_64 root-unuran-6.32.02-1.el9.x86_64 \
# root-xroofit-6.32.02-1.el9.x86_64
# Install GEANT4 v4.11.2 with spack
## https://spack-tutorial.readthedocs.io/en/latest/tutorial_basics.html
# - run: yum install -y git
# - run: git clone --depth=100 --branch=releases/v0.22 https://github.com/spack/spack.git spack
# - run: cd ~/spack
# - run: ls -lrt spack
# - run: ls -lrt spack/share
# - run: ls -lrt spack/share/spack
# - run: . spack/share/spack/setup-env.sh; which spack
# - run: which spack
# - run: . spack/share/spack/setup-env.sh; spack install [email protected]
## https://github.com/spack/setup-spack
# - name: Set up Spack
# uses: spack/setup-spack@v2
# with:
# ref: develop # Spack version (examples: develop, releases/v0.21)
# buildcache: true # Configure oci://ghcr.io/spack/github-actions-buildcache
# color: true # Force color output (SPACK_COLOR=always)
# path: spack # Where to clone Spack
# - run: spack install [email protected]
#############################################################################################################################
# Install epel repo
- name: Install epel repo
run: yum install -y epel-release
# Install ROOT dependencies
- name: Install ROOT dependencies
run: |
yum install -y git make cmake gcc-c++ gcc binutils libX11-devel libXpm-devel libXft-devel libXext-devel python openssl-devel \
xrootd-client-devel xrootd-libs-devel gcc-gfortran pcre-devel mesa-libGL-devel mesa-libGLU-devel glew-devel ftgl-devel \
fftw-devel cfitsio-devel libuuid-devel openldap-devel python-devel python3-numpy libxml2-devel gsl-devel readline-devel \
qt5-qtwebengine-devel
# Install GEANT4 dependencies
## https://xerces.apache.org/xerces-c/download.cgi
- name: Install GEANT4 dependencies
run: yum install -y xerces-c xerces-c-devel
- name: SAND dependencies cache
uses: actions/[email protected]
with:
# A list of files, directories, and wildcard patterns to cache and restore
path: |
~/root
~/geant4
~/edepsim
# An explicit key for restoring and saving the cache
key: root-${{env.root-version}}-geant4-${{env.geant4-version}}-edepsim-${{env.edepsim-version}}
# # An ordered list of keys to use for restoring stale cache if no cache hit occurred for key. Note `cache-hit` returns false in this case.
# restore-keys: # optional
# # The chunk size used to split up large files during upload, in bytes
# upload-chunk-size: # optional
# # An optional boolean when enabled, allows windows runners to save or restore caches that can be restored or saved respectively on other platforms
# enableCrossOsArchive: # optional, default is false
# # Fail the workflow if cache entry is not found
# fail-on-cache-miss: # optional, default is false
# # Check if a cache entry exists for the given input(s) (key, restore-keys) without downloading the cache
# lookup-only: # optional, default is false
# # Run the post step to save the cache even if another step before fails
# save-always: # optional, default is false
# Install ROOT
- name: Install ROOT ${{env.root-version}}
timeout-minutes: 60
run: |
mkdir -p ~/root
cd ~/root
git clone --depth 1 --branch ${{env.root-version}} https://github.com/root-project/root.git source
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=.. ../source
make -j16 install
# Install GEANT4
## https://geant4-userdoc.web.cern.ch/UsersGuides/InstallationGuide/html/installguide.html
- name: Install GEANT4 ${{env.geant4-version}}
timeout-minutes: 60
run: |
mkdir -p ~/geant4
cd ~/geant4
git clone --depth 1 --branch ${{env.geant4-version}} https://github.com/Geant4/geant4.git source
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=.. -DGEANT4_USE_GDML=ON ../source
make -j16 install
# Install edepsim
## https://github.com/ClarkMcGrew/edep-sim
- name: Install edepsim ${{env.edepsim-version}}
run: |
mkdir -p ~/edepsim
cd ~/edepsim
git clone --depth 1 --branch ${{env.edepsim-version}} https://github.com/ClarkMcGrew/edep-sim.git source
mkdir build
cd build
ls -lrt .
ls -lrt ..
ls -lrt ../..
ls -lrt ../../geant4
ls -lrt ../../root
cmake -DCMAKE_INSTALL_PREFIX=.. -DCMAKE_PREFIX_PATH="../../geant4;../../root" ../source
make -j16 install