Skip to content

Commit

Permalink
Add Ubuntu 22/24 to CI
Browse files Browse the repository at this point in the history
  • Loading branch information
mattjala committed Dec 16, 2024
1 parent 43e4a0f commit db5f887
Showing 1 changed file with 71 additions and 144 deletions.
215 changes: 71 additions & 144 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,25 @@ env:
BUCKET_NAME: hsdstest

jobs:
build_and_test_with_autotools:
build_and_test:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest]
python-version: ["3.10"]
hdf5-branch: ["hdf5_1_14"]
os: [ubuntu-22.04, ubuntu-latest]
build_system: ["autotools", "cmake"]
python-version: ["3.10", "3.11", "3.12"]
hdf5-branch: ["hdf5_1_14", "develop"]
compiler: ["gcc-11", "gcc-12", "gcc-13"]
exclude:
# Ubuntu 22.04 runner does not have gcc-13
- os: ubuntu-22.04
compiler: "gcc-13"
# Ubuntu 24.04 runner does not have gcc-11
- os: ubuntu-latest
compiler: "gcc-11"
# hdf5 2.0.0+ does not support autotools
- hdf5-branch: "develop"
build_system: "autotools"

runs-on: ${{matrix.os}}
steps:
Expand All @@ -50,6 +62,7 @@ jobs:
sudo apt-get install libyajl-dev
- name: Get Autotools Dependencies
if: matrix.build_system == 'autotools'
run: |
sudo apt update
sudo apt install automake autoconf libtool libtool-bin
Expand All @@ -59,32 +72,78 @@ jobs:
with:
path: ${{github.workspace}}/vol-rest

- name: Autotools Configure + Build HDF5
- name: CMake Configure + Build HDF5
if: matrix.build_system == 'cmake'
run: |
mkdir ${{github.workspace}}/hdf5/build
cd ./build
cmake \
-DHDF5_BUILD_HL_LIB=ON \
-DBUILD_SHARED_LIBS=ON -DHDF5_ENABLE_SZIP_SUPPORT=OFF \
-DHDF5_TEST_API=ON \
-DHDF5_ENABLE_Z_LIB_SUPPORT=OFF \
-DCMAKE_BUILD_TYPE=RelWithDebInfo -DHDF5_ENABLE_THREADSAFE=OFF \
-DCMAKE_INSTALL_PREFIX=${{github.workspace}}/hdf5install \
-DCMAKE_C_COMPILER=${{matrix.compiler}} \
..
make
make install
shell: bash
working-directory: ${{github.workspace}}/hdf5

- name: Autotools Configure + Build HDF5
if: matrix.build_system == 'autotools'
run: |
./autogen.sh
./configure --prefix=${{github.workspace}}/hdf5install \
--enable-hl --disable-threadsafe \
--enable-build-mode=production --enable-shared
--enable-build-mode=production --enable-shared \
CC=${{matrix.compiler}}
make
make install
shell: bash
working-directory: ${{github.workspace}}/hdf5

- name: CMake Configure REST VOL
if: matrix.build_system == 'cmake'
run: |
mkdir ./build
cd ./build
CFLAGS="-D_POSIX_C_SOURCE=200809L" cmake -G "Unix Makefiles" -DHDF5_ROOT=${{github.workspace}}/hdf5install \
-DCMAKE_INSTALL_PREFIX=${{github.workspace}}/vol-rest/install \
-DCMAKE_C_COMPILER=${{matrix.compiler}} \
..
shell: bash
working-directory: ${{github.workspace}}/vol-rest

- name: Autotools Configure REST VOL
if: matrix.build_system == 'autotools'
run: |
./autogen.sh
mkdir ${{github.workspace}}/vol-rest/install
CFLAGS="-D_POSIX_C_SOURCE=200809L" ./configure --prefix=${{github.workspace}}/vol-rest/install --with-hdf5=${{github.workspace}}/hdf5install
CFLAGS="-D_POSIX_C_SOURCE=200809L" ./configure \
--prefix=${{github.workspace}}/vol-rest/install \
--with-hdf5=${{github.workspace}}/hdf5install \
CC=${{matrix.compiler}}
shell: bash
working-directory: ${{github.workspace}}/vol-rest

- name: Build + Install REST VOL
- name: Build + Install REST VOL (Autotools)
if: matrix.build_system == 'autotools'
run: |
make -j
make install
shell: bash
working-directory: ${{github.workspace}}/vol-rest/

- name: Build + Install REST VOL (CMake)
if: matrix.build_system == 'cmake'
run: |
make -j
make install
shell: bash
working-directory: ${{github.workspace}}/vol-rest/build/

- uses: actions/checkout@v4
with:
repository: HDFGroup/hsds
Expand Down Expand Up @@ -126,7 +185,6 @@ jobs:
pip install requests==2.31.0
- name: Start HSDS
if: ${{ matrix.endpoint != 'http://127.0.0.1:5101'}}
run: |
cd ${{github.workspace}}/hsds
mkdir ${{github.workspace}}/hsdsdata &&
Expand All @@ -140,149 +198,18 @@ jobs:
working-directory: ${{github.workspace}}/hsds

- name: Test HSDS
if: ${{matrix.endpoint != 'http://127.0.0.1:5101'}}
run: |
python tests/integ/setup_test.py
working-directory: ${{github.workspace}}/hsds

- name: Test REST VOL
- name: Test REST VOL (Autotools)
if: matrix.build_system == 'autotools'
working-directory: ${{github.workspace}}/vol-rest/
run: |
HDF5_PLUGIN_PATH=${{github.workspace}}/vol-rest/install/lib HDF5_VOL_CONNECTOR=REST ./test/test_rest_vol
- name: Show HSDS Logs on Fail
if: ${{failure()}}
working-directory: ${{github.workspace}}/hsds
run: |
cat hs.log
build_and_test_with_cmake:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest]
python-version: ["3.10"]
hdf5-branch: ["hdf5_1_14", "develop"]

runs-on: ${{matrix.os}}
steps:
- uses: actions/checkout@v4
with:
repository: HDFGroup/hdf5
ref: ${{matrix.hdf5-branch}}
path: ${{github.workspace}}/hdf5

- name: Get REST VOL dependencies
run: |
sudo apt-get update
sudo apt-get install libcurl4-openssl-dev
sudo apt-get install libyajl-dev
- name: Get REST VOL
uses: actions/checkout@v4
with:
path: ${{github.workspace}}/vol-rest

- name: CMake Configure + Build HDF5
run: |
mkdir ${{github.workspace}}/hdf5/build
cd ./build
cmake \
-DHDF5_BUILD_HL_LIB=ON \
-DBUILD_SHARED_LIBS=ON -DHDF5_ENABLE_SZIP_SUPPORT=OFF \
-DHDF5_TEST_API=ON \
-DHDF5_ENABLE_Z_LIB_SUPPORT=OFF \
-DCMAKE_BUILD_TYPE=RelWithDebInfo -DHDF5_ENABLE_THREADSAFE=OFF \
-DCMAKE_INSTALL_PREFIX=${{github.workspace}}/hdf5install \
..
make
make install
shell: bash
working-directory: ${{github.workspace}}/hdf5

- name: CMake Configure REST VOL
run: |
mkdir ./build
cd ./build
CFLAGS="-D_POSIX_C_SOURCE=200809L" cmake -G "Unix Makefiles" -DHDF5_ROOT=${{github.workspace}}/hdf5install \
-DCMAKE_INSTALL_PREFIX=${{github.workspace}}/vol-rest/install \
..
shell: bash
working-directory: ${{github.workspace}}/vol-rest

- name: Build + Install REST VOL
run: |
make -j
make install
shell: bash
working-directory: ${{github.workspace}}/vol-rest/build

- uses: actions/checkout@v4
with:
repository: HDFGroup/hsds
path: ${{github.workspace}}/hsds

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}

- name: Install HSDS dependencies
shell: bash
run: |
python -m pip install --upgrade pip
python -m pip install pytest
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
- name: Install HSDS package
shell: bash
run: |
cd ${{github.workspace}}/hsds
pip install -e .
- name: Run HSDS unit tests
shell: bash
run: |
cd ${{github.workspace}}/hsds
pytest
- name: Install valgrind
run: |
sudo apt update
sudo apt install valgrind
working-directory: ${{ github.workspace }}

# Requests 2.32.0 breaks requests-unixsocket, used by HSDS for socket connections
- name: Fix requests version
run: |
pip install requests==2.31.0
- name: Start HSDS
if: ${{ matrix.endpoint != 'http://127.0.0.1:5101'}}
run: |
cd ${{github.workspace}}/hsds
mkdir ${{github.workspace}}/hsdsdata &&
mkdir ${{github.workspace}}/hsdsdata/hsdstest &&
cp admin/config/groups.default admin/config/groups.txt &&
cp admin/config/passwd.default admin/config/passwd.txt &&
cp admin/config/groups.default admin/config/groups.txt &&
cp admin/config/passwd.default admin/config/passwd.txt
ROOT_DIR=${{github.workspace}}/hsdadata ./runall.sh --no-docker 1 &
sleep 10
working-directory: ${{github.workspace}}/hsds

- name: Test HSDS
if: ${{matrix.endpoint != 'http://127.0.0.1:5101'}}
run: |
python tests/integ/setup_test.py
working-directory: ${{github.workspace}}/hsds

- name: Set HDF5 Plugin path
run: |
echo "HDF5_PLUGIN_PATH=${{github.workspace}}/vol-rest/build/bin/" >> $GITHUB_ENV
echo "HDF5_VOL_CONNECTOR=REST" >> $GITHUB_ENV
- name: Test REST VOL
- name: Test REST VOL (CMake)
if: matrix.build_system == 'cmmake'
working-directory: ${{github.workspace}}/vol-rest/build/
run: |
valgrind --leak-check=full -s ctest -R "test_rest_vol" -VV
Expand Down

0 comments on commit db5f887

Please sign in to comment.