diff --git a/.gitea/workflows/build_and_test.yml b/.gitea/workflows/build_and_test.yml index 0982ec085..0b5a95c23 100644 --- a/.gitea/workflows/build_and_test.yml +++ b/.gitea/workflows/build_and_test.yml @@ -49,7 +49,7 @@ jobs: # already been tested by the dispatch run it came from. if: github.ref_type != 'tag' container: - image: gitea.psi.ch/leonarski_f/jfjoch_rocky8:2511 + image: gitea.psi.ch/leonarski_f/jfjoch_rocky8:2607b options: --gpus all timeout-minutes: 90 env: @@ -72,7 +72,7 @@ jobs: mkdir -p build cd build cmake -G Ninja -DCMAKE_BUILD_TYPE=Release ${{ env.LINUX_CMAKE_FLAGS }} .. - ninja -j48 jfjoch_test jfjoch_hdf5_test jfjoch_hdf5_enospc_test enospc_shim + ninja -j16 jfjoch_test jfjoch_hdf5_test jfjoch_hdf5_enospc_test enospc_shim - name: Run unit tests shell: bash run: | @@ -138,6 +138,8 @@ jobs: build-viewer-tgz: name: build:viewer-tgz:${{ matrix.variant }} runs-on: jfjoch_rocky8 + container: + image: gitea.psi.ch/leonarski_f/jfjoch_rocky8:2607b timeout-minutes: 120 strategy: fail-fast: false @@ -191,6 +193,8 @@ jobs: build-rugnux-tgz: name: build:rugnux-tgz (x86_64) runs-on: jfjoch_rocky8 + container: + image: gitea.psi.ch/leonarski_f/jfjoch_rocky8:2607b timeout-minutes: 120 steps: - uses: actions/checkout@v4 @@ -296,7 +300,7 @@ jobs: # rebuilding and re-pushing the image, and a fix to it would appear to have no effect. runs-on: jfjoch_ubuntu2404 container: - image: gitea.psi.ch/leonarski_f/jfjoch_ubuntu2404:2508 + image: gitea.psi.ch/leonarski_f/jfjoch_ubuntu2404:2608b steps: - uses: actions/checkout@v4 - name: Clean previous build @@ -368,56 +372,68 @@ jobs: build-rpm: name: build:rpm (${{ matrix.distro }}) runs-on: ${{ matrix.runner }} + container: + image: ${{ matrix.image }} strategy: fail-fast: false matrix: include: - runner: jfjoch_rocky8 + image: gitea.psi.ch/leonarski_f/jfjoch_rocky8:2607b distro: rocky8 cmake_flags: -DJFJOCH_USE_CUDA=ON pkg_glob: "*.rpm" upload_url: https://gitea.psi.ch/api/packages/mx/rpm/centos/el8/slsdet8-cuda12/upload - runner: jfjoch_rocky8 + image: gitea.psi.ch/leonarski_f/jfjoch_rocky8:2607b distro: rocky8_sls9 cmake_flags: -DJFJOCH_USE_CUDA=ON -DSLS9=ON pkg_glob: "*.rpm" upload_url: https://gitea.psi.ch/api/packages/mx/rpm/centos/el8/slsdet9-cuda12/upload - runner: jfjoch_rocky8 + image: gitea.psi.ch/leonarski_f/jfjoch_rocky8:2607b distro: rocky8_nocuda cmake_flags: -DJFJOCH_USE_CUDA=OFF pkg_glob: "*.rpm" upload_url: https://gitea.psi.ch/api/packages/mx/rpm/centos/el8/slsdet8-nocuda/upload - runner: jfjoch_rocky9 + image: gitea.psi.ch/leonarski_f/jfjoch_rocky9:2607b distro: rocky9 cmake_flags: -DJFJOCH_USE_CUDA=ON pkg_glob: "*.rpm" upload_url: https://gitea.psi.ch/api/packages/mx/rpm/centos/el9/slsdet8-cuda13/upload - runner: jfjoch_rocky9 + image: gitea.psi.ch/leonarski_f/jfjoch_rocky9:2607b distro: rocky9_sls9 cmake_flags: -DJFJOCH_USE_CUDA=ON -DSLS9=ON pkg_glob: "*.rpm" upload_url: https://gitea.psi.ch/api/packages/mx/rpm/centos/el9/slsdet9-cuda13/upload - runner: jfjoch_rocky9 + image: gitea.psi.ch/leonarski_f/jfjoch_rocky9:2607b distro: rocky9_nocuda cmake_flags: -DJFJOCH_USE_CUDA=OFF pkg_glob: "*.rpm" upload_url: https://gitea.psi.ch/api/packages/mx/rpm/centos/el9/slsdet8-nocuda/upload - runner: jfjoch_ubuntu2204 + image: gitea.psi.ch/leonarski_f/jfjoch_ubuntu2204:2608b distro: ubuntu2204 cmake_flags: -DJFJOCH_USE_CUDA=ON pkg_glob: "*.deb" upload_url: https://gitea.psi.ch/api/packages/mx/debian/pool/jammy/cuda13/upload - runner: jfjoch_ubuntu2204 + image: gitea.psi.ch/leonarski_f/jfjoch_ubuntu2204:2608b distro: ubuntu2204_nocuda cmake_flags: -DJFJOCH_USE_CUDA=OFF pkg_glob: "*.deb" upload_url: https://gitea.psi.ch/api/packages/mx/debian/pool/jammy/nocuda/upload - runner: jfjoch_ubuntu2404 + image: gitea.psi.ch/leonarski_f/jfjoch_ubuntu2404:2608b distro: ubuntu2404 cmake_flags: -DJFJOCH_USE_CUDA=ON pkg_glob: "*.deb" upload_url: https://gitea.psi.ch/api/packages/mx/debian/pool/noble/cuda13/upload - runner: jfjoch_ubuntu2404 + image: gitea.psi.ch/leonarski_f/jfjoch_ubuntu2404:2608b distro: ubuntu2404_nocuda cmake_flags: -DJFJOCH_USE_CUDA=OFF pkg_glob: "*.deb" @@ -481,9 +497,11 @@ jobs: python3 gitea_upload_file.py "$file" done fi - dials-test: - name: DIALS test + hdf5-consumer-tests: + name: HDF5 consumer tests (DIALS, XDS) runs-on: jfjoch_rocky9 + container: + image: gitea.psi.ch/leonarski_f/jfjoch_rocky9:2607b steps: - uses: actions/checkout@v4 - name: Build processing test @@ -492,157 +510,99 @@ jobs: mkdir -p build cd build cmake -G Ninja -DCMAKE_BUILD_TYPE=Release ${{ env.LINUX_CMAKE_FLAGS }} .. - ninja -j16 jfjoch_hdf5_test - # dials.import before xia2.ssx, checking the image COUNT: dxtbx reports a short scan rather - # than failing when it cannot reach every image, and xia2.ssx still succeeds on the images it - # did get, so an exit code alone does not notice. Multi-file NXmxLegacy is exercised by the - # XDS jobs below but deliberately not here: dxtbx reads only the first data file of a legacy - # master (it takes one dataset out of NXdata and indexes it globally), so that combination - # cannot pass until the limitation is fixed upstream. - - name: Run DIALS processing on legacy format + ninja -j16 jfjoch_hdf5_test jfjoch_xds_plugin + # One job for what used to be four, each of which configured and built the same + # jfjoch_hdf5_test on the same image. Every case still runs when an earlier one fails -- each + # is a subshell under `set -e`, so a case stops at its own first bad command without taking + # the rest down -- and the summary at the end decides the job's result. + - name: Run every consumer against every file layout shell: bash run: | - source /opt/dials-v3-27-0/dials_env.sh - mkdir -p test01 - cd test01 - ../build/tools/jfjoch_hdf5_test ../tests/test_data/compression_benchmark.h5 -n100 -o legacy - dials.import legacy_master.h5 | tee import.log - grep -q "num images: 100" import.log || { echo "DIALS did not read all 100 images"; exit 1; } - xia2.ssx image=legacy_master.h5 space_group=P43212 unit_cell=78.551,78.551,36.914,90.000,90.000,90.000 - - name: Run DIALS processing on VDS (master + 4 linked image files) - shell: bash - run: | - source /opt/dials-v3-27-0/dials_env.sh - mkdir -p test02 - cd test02 - ../build/tools/jfjoch_hdf5_test ../tests/test_data/compression_benchmark.h5 -n100 -f25 -V -o vds - dials.import vds_master.h5 | tee import.log - grep -q "num images: 100" import.log || { echo "DIALS did not read all 100 images"; exit 1; } - xia2.ssx image=vds_master.h5 space_group=P43212 unit_cell=78.551,78.551,36.914,90.000,90.000,90.000 - - name: Run DIALS processing on single file format - shell: bash - run: | - source /opt/dials-v3-27-0/dials_env.sh - mkdir -p test03 - cd test03 + cd "$GITHUB_WORKSPACE" + HDF5_TEST=$PWD/build/tools/jfjoch_hdf5_test + DATA=$PWD/tests/test_data/compression_benchmark.h5 + # Unquoted on use: these are two arguments, not one. + CELL="space_group=P43212 unit_cell=78.551,78.551,36.914,90.000,90.000,90.000" + + # -- DIALS ------------------------------------------------------------------------- + # dials.import before xia2.ssx, checking the image COUNT: dxtbx reports a short scan + # rather than failing when it cannot reach every image, and xia2.ssx still succeeds on + # the images it did get, so an exit code alone does not notice. Multi-file NXmxLegacy is + # exercised by the XDS cases below but deliberately not here: dxtbx reads only the first + # data file of a legacy master (it takes one dataset out of NXdata and indexes it + # globally), so that combination cannot pass until the limitation is fixed upstream. + dials_case() { #