CI #1458
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| push: | |
| branches: [ develop ] | |
| pull_request: | |
| branches: [ develop ] | |
| schedule: | |
| - cron: '0 0 * * 0,3' | |
| workflow_dispatch: | |
| jobs: | |
| build: | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, macos-latest] | |
| options: [none, rtk, torch, optic] | |
| exclude: | |
| - os: macos-latest | |
| options: torch | |
| env: | |
| ROOT_VERSION: 'v6-38-00' | |
| ITK_VERSION: 'v5.4.2' | |
| GEANT4_VERSION: 'v11.4.0' | |
| ROOT_DIR: $(HOME)/software/root | |
| GEANT4_DIR: $(HOME)/software/geant4 | |
| steps: | |
| - name: Checkout github repo | |
| uses: actions/checkout@v3 | |
| with: | |
| lfs: true | |
| - name: Checkout LFS objects | |
| run: git lfs checkout | |
| - name: Cache | |
| id: cache_gate_dependencies | |
| uses: actions/cache@v3 | |
| with: | |
| path: ~/software | |
| key: ${{ matrix.os }}-geant4-${{ env.GEANT4_VERSION }}-root-${{ env.ROOT_VERSION }}-qt6-root3800 | |
| restore-keys: ${{ matrix.os }}-geant4-${{ env.GEANT4_VERSION }}-root-${{ env.ROOT_VERSION }}-qt6-root3800 | |
| - name: Install dependencies | |
| run: | | |
| if [ "${{ matrix.os }}" == "ubuntu-latest" ]; then | |
| sudo apt-get update -qq | |
| sudo apt-get install -y gcc \ | |
| g++ \ | |
| make \ | |
| binutils \ | |
| libx11-dev \ | |
| libtbb-dev \ | |
| libxpm-dev \ | |
| libxft-dev \ | |
| libxext-dev \ | |
| qt6-base-dev \ | |
| qt6-base-dev-tools \ | |
| qt6-tools-dev \ | |
| qt6-tools-dev-tools \ | |
| git \ | |
| cmake \ | |
| libssl-dev \ | |
| python3.8-dev \ | |
| ccache \ | |
| libfftw3-dev | |
| gcc -v | |
| elif [ "${{ matrix.os }}" == "macos-latest" ]; then | |
| brew update || true | |
| brew install python@3.12 || true | |
| brew link --overwrite --force python@3.12 | |
| export Python3_EXECUTABLE="$(brew --prefix python@3.12)/bin/python3" | |
| brew install --force --verbose --overwrite --debug cmake \ | |
| qt \ | |
| ccache \ | |
| tbb \ | |
| xrootd \ | |
| fftw | |
| brew cleanup | |
| #LLVM_PREFIX="$(brew --prefix llvm || true)" | |
| #export SDKROOT="$(xcrun --sdk macosx --show-sdk-path)" | |
| export CC=/usr/bin/clang | |
| export CXX=/usr/bin/clang++ | |
| cmake --version | |
| which cmake | |
| fi | |
| cd $HOME/ | |
| mkdir -p software option_dependencies | |
| cmake --version | |
| - name: Install root | |
| run: | | |
| if [ "${{ steps.cache_gate_dependencies.outputs.cache-hit }}" != 'true' ] && [ "${{ matrix.options }}" == 'none' ]; then | |
| cd $HOME/software | |
| mkdir root | |
| cd root | |
| mkdir src bin install | |
| git clone --branch $ROOT_VERSION https://github.com/root-project/root.git --depth 1 src | |
| cd bin | |
| export CC=/usr/bin/clang | |
| export CXX=/usr/bin/clang++ | |
| cmake ../src -DCMAKE_CXX_STANDARD=17 \ | |
| -DCMAKE_C_COMPILER=$CC \ | |
| -DCMAKE_CXX_COMPILER=$CXX \ | |
| -DCMAKE_OSX_ARCHITECTURES=arm64 \ | |
| -DCMAKE_INSTALL_PREFIX=$HOME/software/root/install | |
| make install -j 4 | |
| cd .. | |
| rm -rf bin src | |
| fi | |
| - name: Install Geant4 | |
| run: | | |
| if [ "${{ steps.cache_gate_dependencies.outputs.cache-hit }}" != 'true' ] && [ "${{ matrix.options }}" == 'none' ]; then | |
| cd $HOME/software | |
| mkdir geant4 | |
| cd geant4 | |
| mkdir src bin install data | |
| git clone --branch $GEANT4_VERSION https://github.com/Geant4/geant4.git --depth 1 src | |
| cd bin | |
| cmake -DGEANT4_INSTALL_DATA=ON \ | |
| -DGEANT4_BUILD_MULTITHREADED=OFF \ | |
| -DGEANT4_USE_QT=ON \ | |
| -DGEANT4_INSTALL_DATADIR=$HOME/software/geant4/data \ | |
| -DCMAKE_INSTALL_PREFIX=$HOME/software/geant4/install \ | |
| -DQt6_DIR="$Qt6_DIR" \ | |
| ../src | |
| make -j4 install | |
| cd .. | |
| rm -rf src bin | |
| fi | |
| - name: Install option dependencies | |
| run: | | |
| if [ "${{ steps.cache_gate_dependencies.outputs.cache-hit }}" == 'true' ]; then | |
| cd $HOME/option_dependencies | |
| if [ "${{ matrix.options }}" == 'torch' ]; then | |
| if [ "${{ matrix.os }}" == 'ubuntu-latest' ]; then | |
| wget https://download.pytorch.org/libtorch/cpu/libtorch-cxx11-abi-shared-with-deps-1.10.1%2Bcpu.zip | |
| unzip libtorch-cxx11-abi-shared-with-deps-1.10.1+cpu.zip | |
| elif [ "${{ matrix.os }}" == 'macos-latest' ]; then | |
| wget https://download.pytorch.org/libtorch/cpu/libtorch-macos-arm64-2.2.0.zip | |
| unzip libtorch-macos-arm64-2.2.0.zip | |
| fi | |
| fi | |
| if [ "${{ matrix.options }}" == 'rtk' ]; then | |
| mkdir rtk | |
| cd rtk | |
| mkdir src bin | |
| git clone --branch $ITK_VERSION https://github.com/InsightSoftwareConsortium/ITK.git --depth 1 src | |
| cd bin | |
| cmake -DCMAKE_CXX_FLAGS="-std=c++17" -DBUILD_TESTING=OFF -DITK_USE_FFTWD=ON -DITK_USE_FFTWF=ON -DITK_USE_SYSTEM_FFTW:BOOL=ON -DITK_MINIMUM_COMPLIANCE_LEVEL=3 -DModule_RTK=ON -DREMOTE_GIT_TAG_RTK=master ../src | |
| make -j4 | |
| fi | |
| cd $HOME/option_dependencies | |
| ls | |
| else | |
| if [ "${{ matrix.options }}" != 'none' ]; then | |
| echo "Create the cache first and run the job again" | |
| exit 1 | |
| fi | |
| fi | |
| - name: Configure Gate | |
| run: | | |
| if [ "${{ steps.cache_gate_dependencies.outputs.cache-hit }}" == 'true' ]; then | |
| cd $HOME | |
| export ROOTSYS=$HOME/software/root/install | |
| export PATH=${ROOTSYS}:${PATH} | |
| source $HOME/software/root/install/bin/thisroot.sh | |
| source $HOME/software/geant4/install/bin/geant4.sh | |
| mkdir build | |
| cd build | |
| which cmake | |
| cmake --version | |
| export GATE_USE_TORCH=OFF | |
| export GATE_USE_RTK=OFF | |
| export GATE_USE_OPTICAL=OFF | |
| if [ "${{ matrix.options }}" == 'torch' ]; then | |
| export GATE_USE_TORCH=ON | |
| fi | |
| if [ "${{ matrix.options }}" == 'rtk' ]; then | |
| export GATE_USE_RTK=ON | |
| fi | |
| if [ "${{ matrix.options }}" == 'optic' ]; then | |
| export GATE_USE_OPTIC=ON | |
| fi | |
| cmake -DGATE_USE_TORCH=$GATE_USE_TORCH \ | |
| -DTorch_DIR=$HOME/option_dependencies/libtorch/share/cmake/Torch \ | |
| -DGATE_COMPILE_GATEDIGIT=ON \ | |
| -DGATE_USE_RTK=$GATE_USE_RTK \ | |
| -DITK_DIR=$HOME/option_dependencies/rtk/bin/ \ | |
| -DGATE_USE_OPTICAL=$GATE_USE_OPTICAL \ | |
| -DBUILD_TESTING=ON \ | |
| $GITHUB_WORKSPACE | |
| fi | |
| - name: Build Gate | |
| run: | | |
| if [ "${{ steps.cache_gate_dependencies.outputs.cache-hit }}" == 'true' ]; then | |
| cd $HOME/build | |
| export ROOTSYS=$HOME/software/root/install | |
| export PATH=${ROOTSYS}:${PATH} | |
| source $HOME/software/root/install/bin/thisroot.sh | |
| source $HOME/software/geant4/install/bin/geant4.sh | |
| make -j4 | |
| if [ ! $? -eq 0 ]; then | |
| exit 1 | |
| fi | |
| fi | |
| # ssh_session: | |
| # runs-on: ubuntu-latest | |
| # steps: | |
| # - name: Checkout github repo | |
| # uses: actions/checkout@v3 | |
| # with: | |
| # lfs: true | |
| # - name: Checkout LFS objects | |
| # run: git lfs checkout | |
| # - name: Start SSH session | |
| # uses: luchihoratiu/debug-via-ssh@main | |
| # with: | |
| # NGROK_AUTH_TOKEN: ${{ secrets.NGROK_AUTH_TOKEN }} | |
| # SSH_PASS: ${{ secrets.SSH_PASS }} | |
| benchmarks: | |
| runs-on: ubuntu-latest | |
| needs: [build] | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| strategy_name: [t1_edep_profiles, | |
| t2_edep_vox, | |
| t3_range_e+, | |
| t4_necr, | |
| t6_dpk, | |
| t8_LETActor, | |
| t10_SpectroGamma, | |
| t11_EMField, | |
| t12_tessellated_volume, | |
| t13_phsp, | |
| t15_optical, | |
| t16_decay, | |
| t17_extended_source, | |
| t18_movement_benchmark, | |
| t19_acollinearity, | |
| t20_digi_adder, | |
| t22_merged_actor, | |
| t23_digi_readout, | |
| t26_CoinSorter, | |
| t27_Hits_2SD, | |
| t28_Singles_2SD, | |
| t29_optical_digi, | |
| t30_dna, | |
| t31_vpgTLE-tt, | |
| t33_invert_filter, | |
| t34_biodose_actor] | |
| steps: | |
| - name: Checkout github repo | |
| uses: actions/checkout@v3 | |
| with: | |
| lfs: true | |
| - name: Checkout LFS objects | |
| run: git lfs checkout | |
| - name: Checkout submodules | |
| run: git submodule update --init --recursive | |
| - name: Install dependencies | |
| run: | | |
| sudo apt-get update -qq | |
| sudo apt-get install -y gcc \ | |
| g++ \ | |
| make \ | |
| binutils \ | |
| libx11-dev \ | |
| libxpm-dev \ | |
| libxft-dev \ | |
| libxext-dev \ | |
| qtbase5-dev \ | |
| qt5-qmake \ | |
| git \ | |
| cmake \ | |
| libssl-dev \ | |
| python3.8-dev \ | |
| ccache | |
| gcc -v | |
| cd | |
| - name: Run the test in docker | |
| run: | | |
| mkdir gate_benchmarks | |
| export GIT_SSL_NO_VERIFY=1 | |
| git clone --recursive https://github.com/OpenGATE/GateBenchmarks.git gate_benchmarks | |
| docker run --rm -e "TEST=${{ matrix.strategy_name }}" -v $GITHUB_WORKSPACE:/src -v $GITHUB_WORKSPACE/gate_benchmarks:/home tbaudier/gatebenchmarks:9.4.1 /home/.github/workflows/runTest.sh | |