@@ -54,18 +54,18 @@ jobs:
5454 -o shared=${H5CPP_SHARED} \
5555 -o *:shared=${H5CPP_SHARED}"
5656 conan profile detect
57- conan remove -c zlib/*
57+ conan remove -c zlib/*
5858 conan lock create conanfile.py ${CONAN_ARGS} --lockfile-packages --lockfile-out base.lock
5959 conan lock create conanfile.py ${CONAN_ARGS} --build missing
60- - name : cache conan dependencies
60+ - name : Cache conan dependencies
6161 uses : actions/cache@v4
6262 with :
6363 path : ~/.conan/data
6464 key : conan-${{ matrix.profile }}-${{ hashfiles('base.lock') }}-${{ hashFiles('conan.lock') }}
6565 restore-keys : |
6666 conan-${{ matrix.profile }}-${{ hashfiles('base.lock') }}
6767 conan-${{ matrix.profile }}
68- - name : install conan dependencies
68+ - name : Install conan dependencies
6969 run : |
7070 CONAN_ARGS="--profile .github/workflows/conan/profiles/${{ matrix.profile }} \
7171 -o with_boost=${H5CPP_WITH_BOOST} \
7878 --lockfile conan.lock \
7979 --build missing \
8080 --update
81- - name : build with cmake
81+ - name : Build with cmake
8282 run : |
8383 CONAN_ARGS="--profile .github/workflows/conan/profiles/${{ matrix.profile }} \
8484 -o with_boost=${H5CPP_WITH_BOOST} \
8888 conan build . ${CONAN_ARGS} \
8989 --lockfile conan.lock \
9090 --output-folder build
91- - name : run tests
91+ - name : Run tests
9292 run : |
9393 cd build
9494 ctest --extra-verbose --no-tests=error
@@ -122,18 +122,18 @@ jobs:
122122 -o shared=${H5CPP_SHARED} \
123123 -o *:shared=${H5CPP_SHARED}"
124124 conan profile detect
125- conan remove -c zlib/*
125+ conan remove -c zlib/*
126126 conan lock create conanfile.py ${CONAN_ARGS} --lockfile-packages --lockfile-out base.lock
127127 conan lock create conanfile.py ${CONAN_ARGS} --build missing
128- - name : cache conan dependencies
128+ - name : Cache conan dependencies
129129 uses : actions/cache@v4
130130 with :
131131 path : ~/.conan/data
132132 key : conan-vs2022-${{ hashfiles('base.lock') }}-${{ hashFiles('conan.lock') }}
133133 restore-keys : |
134134 conan-vs-2022-${{ hashfiles('base.lock') }}
135135 conan-vs-2022
136- - name : install conan dependencies
136+ - name : Install conan dependencies
137137 run : |
138138 CONAN_ARGS="--profile .github/workflows/conan/profiles/vs2022 \
139139 -o with_boost=${H5CPP_WITH_BOOST} \
@@ -146,7 +146,7 @@ jobs:
146146 --build missing \
147147 --update \
148148 --generator VirtualRunEnv
149- - name : build with cmake
149+ - name : Build with cmake
150150 run : |
151151 CONAN_ARGS="--profile .github/workflows/conan/profiles/vs2022 \
152152 -o with_boost=${H5CPP_WITH_BOOST} \
@@ -155,7 +155,7 @@ jobs:
155155 conan build . ${CONAN_ARGS} \
156156 --lockfile conan.lock \
157157 --output-folder build
158- - name : run tests
158+ - name : Run tests
159159 run : |
160160 cd build
161161 .\conanbuildenv-release-x86_64.ps1
@@ -205,15 +205,15 @@ jobs:
205205 conan remove -c zlib/*
206206 conan lock create conanfile.py ${CONAN_ARGS} --lockfile-packages --lockfile-out base.lock
207207 conan lock create conanfile.py ${CONAN_ARGS} --build missing
208- - name : cache conan dependencies
208+ - name : Cache conan dependencies
209209 uses : actions/cache@v4
210210 with :
211211 path : ~/.conan/data
212212 key : conan-apple-clang12-${{ hashfiles('base.lock') }}-${{ hashFiles('conan.lock') }}
213213 restore-keys : |
214214 conan-apple-clang12-${{ hashfiles('base.lock') }}
215215 conan-apple-clang12
216- - name : install conan dependencies
216+ - name : Install conan dependencies
217217 run : |
218218 HDF5_SHARED=${H5CPP_SHARED}
219219 if [ "${H5CPP_WITH_MPI}" = "True" ]; then
@@ -231,7 +231,7 @@ jobs:
231231 --build missing \
232232 --update \
233233 --generator VirtualRunEnv
234- - name : build with cmake
234+ - name : Build with cmake
235235 run : |
236236 HDF5_SHARED=${H5CPP_SHARED}
237237 if [ "${H5CPP_WITH_MPI}" = "True" ]; then
@@ -245,7 +245,7 @@ jobs:
245245 conan build . ${CONAN_ARGS} \
246246 --lockfile conan.lock \
247247 --output-folder build
248- - name : run tests
248+ - name : Run tests
249249 run : |
250250 cd build
251251 ctest --extra-verbose --no-tests=error
@@ -259,65 +259,91 @@ jobs:
259259 serial
260260 ]
261261 runs-on : ubuntu-24.04
262- container :
263- image : debian:bookworm
264262 steps :
265263 - uses : actions/checkout@v4
264+ - name : Build the docker
265+ run : docker build -t build .github/workflows/debian12
266+
267+ - name : Run the docker
268+ run : docker run --name build -i -d -v"$PWD:/home/p00user/src" build
269+
266270 - name : Set environment variables
267271 run : |
268272 bash .github/workflows/set_env_vars.sh \
269273 ${{ matrix.shared }} \
270274 ${{ matrix.boost }} \
271275 ${{ matrix.mpi }}
272- - name : install serial prerequisites
276+ - name : Install serial prerequisites
273277 if : ${{ matrix.mpi == 'serial' }}
274278 run : |
275- apt-get update
276- apt-get -y install \
277- cmake \
278- catch2 \
279- g++ \
280- libhdf5-dev \
281- libboost-filesystem-dev \
282- wget
279+ docker exec --user root build /bin/bash -c "apt-get update && apt-get -y install libhdf5-dev"
283280 - name : Install MPI prerequisites
284281 if : ${{ matrix.mpi == 'mpi' }}
285282 run : |
286- apt-get update
287- apt-get install -y --no-install-recommends \
288- build-essential \
289- cmake \
290- catch2 \
291- g++ \
292- libboost-filesystem-dev \
293- libhdf5-mpi-dev \
294- libopenmpi-dev
295- - name : build with cmake
283+ docker exec --user root build /bin/bash -c "apt-get update && apt-get -y install --no-install-recommends build-essential libhdf5-dev libhdf5-mpi-dev libopenmpi-dev"
284+ - name : Create Config
296285 run : |
297- HDF5_STATIC=ON
298- [ "${H5CPP_SHARED}" = "True" ] && HDF5_STATIC=OFF
299- mkdir build
300- cd build
301- cmake .. \
302- -DCMAKE_BUILD_TYPE=Release \
303- -DH5CPP_CONAN=DISABLE \
304- -DH5CPP_CATCH2_V2=TRUE \
305- -DHDF5_USE_STATIC_LIBRARIES=${HDF5_STATIC} \
306- -DH5CPP_BUILD_SHARED=${H5CPP_SHARED} \
307- -DH5CPP_WITH_BOOST=${H5CPP_WITH_BOOST} \
308- -DH5CPP_WITH_MPI=${H5CPP_WITH_MPI}
309- cmake --build . -- -j 2
310- - name : run tests
286+ docker exec --user root build /bin/bash -c "chown -R p00user /home/p00user/src"
287+ docker exec build /bin/bash -c "HDF5_STATIC=ON; [ \"${H5CPP_SHARED}\" = \"True\" ] && HDF5_STATIC=OFF; git config --global --add safe.directory /home/p00user/src && mkdir ../build && cd ../build &&
288+ cmake ../src -DCMAKE_BUILD_TYPE=Release -DH5CPP_CONAN=DISABLE -DH5CPP_CATCH2_V2=TRUE -DHDF5_USE_STATIC_LIBRARIES=${HDF5_STATIC} -DH5CPP_BUILD_SHARED=${H5CPP_SHARED} -DH5CPP_WITH_BOOST=${H5CPP_WITH_BOOST} -DH5CPP_WITH_MPI=${H5CPP_WITH_MPI}"
289+ - name : Build all
290+ run : docker exec build /bin/bash -c "cd ../build && cmake --build . -- -j 2"
291+ - name : Build html
292+ if : (github.ref == 'refs/heads/develop' || startsWith(github.ref, 'refs/heads/docs_')) && matrix.shared == 'shared' && matrix.boost == 'stdfs' && matrix.mpi == 'serial'
293+ run : docker exec build /bin/bash -c "cd ../build && cmake --build . --target html"
294+ - name : Run tests
295+ run : docker exec build /bin/bash -c "cd ../build && ctest --extra-verbose --no-tests=error"
296+ - name : Install with cmake
297+ run : docker exec --user root build /bin/bash -c "cd ../build && cmake --build . --target install"
298+ - name : Build examples
299+ run : docker exec build /bin/bash -c "mkdir ../examples_build && cd ../examples_build && cmake ../src/examples -DCMAKE_BUILD_TYPE=Release && cmake --build . -- -j 2 "
300+ - name : Append documentation for the latest release version
301+ if : startsWith(github.ref, 'refs/heads/develop') && matrix.shared == 'shared' && matrix.boost == 'stdfs' && matrix.mpi == 'serial'
311302 run : |
312- ctest --extra-verbose --no-tests=error
313- working-directory : build
314- - name : install with cmake
303+ docker exec --user root build /bin/bash -c "chown -R p00user /home/p00user/src"
304+ docker exec build /bin/bash -c "git config --unset-all remote.origin.fetch"
305+ docker exec build /bin/bash -c "git config remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*'"
306+ docker exec build /bin/bash -c "git fetch && git clean -fd && git checkout gh-pages && git pull"
307+ docker exec build /bin/bash -c "mkdir -p ./latest && shopt -u dotglob && rm -rf ./latest/*"
308+ docker exec build /bin/bash -c "mv -f ../build/doc/build/* ./latest/"
309+ docker exec build /bin/bash -c "mv -f ../build/doc/doxygen_html ./latest/api_reference/doxygen"
310+ docker exec build /bin/bash -c "mv -f ../build/doc/index.html ./"
311+ docker exec build /bin/bash -c "find ./ -type d -name \"CMakeFiles\" -prune -exec rm -rf {} \\;"
312+ docker exec build /bin/bash -c "find ./ -name \"Makefile\" -exec rm -rf {} \\;"
313+ docker exec build /bin/bash -c "find ./ -name \"*.cmake\" -exec rm -rf {} \\;"
314+ docker exec build /bin/bash -c "rm -rf ./latest/_sources"
315+
316+ - name : Extract the code version from the branch name
317+ if : startsWith(github.ref, 'refs/heads/docs_') && matrix.shared == 'shared' && matrix.boost == 'stdfs' && matrix.mpi == 'serial'
318+ shell : bash
319+ run : echo "docver=$(echo ${GITHUB_REF#refs/heads/docs_})" >> $GITHUB_OUTPUT
320+ # run: echo "##[set-output name=docver;]$(echo ${GITHUB_REF#refs/heads/docs_})"
321+ id : extract_docver
322+
323+ - name : Append documentation for the extracted release version
324+ if : startsWith(github.ref, 'refs/heads/docs_') && matrix.shared == 'shared' && matrix.boost == 'stdfs' && matrix.mpi == 'serial'
315325 run : |
316- cmake --build . --target install
317- working-directory : build
318- - name : build examples
319- run : |
320- mkdir examples_build
321- cd examples_build
322- cmake ../examples -DCMAKE_BUILD_TYPE=Release
323- cmake --build . -- -j 2
326+ echo Version: ${{ steps.extract_docver.outputs.docver }}
327+ docker exec --user root build /bin/bash -c "chown -R p00user /home/p00user/src"
328+ docker exec build /bin/bash -c "git config --unset-all remote.origin.fetch"
329+ docker exec build /bin/bash -c "git config remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*'"
330+ docker exec build /bin/bash -c "git fetch && git clean -fd && git checkout gh-pages && git pull"
331+ docker exec build /bin/bash -c "mkdir -p ./${{ steps.extract_docver.outputs.docver }}"
332+ docker exec build /bin/bash -c "shopt -u dotglob && rm -rf ./${{ steps.extract_docver.outputs.docver }}/*"
333+ docker exec build /bin/bash -c "mv -f ../build/doc/build/* ./${{ steps.extract_docver.outputs.docver }}/"
334+ docker exec build /bin/bash -c "mv -f ../build/doc/doxygen_html ./${{ steps.extract_docver.outputs.docver }}/api_reference/doxygen"
335+ docker exec build /bin/bash -c "mv -f ../build/doc/index.html ./"
336+ docker exec build /bin/bash -c "find ./ -type d -name \"CMakeFiles\" -prune -exec rm -rf {} \\;"
337+ docker exec build /bin/bash -c "find ./ -name \"Makefile\" -exec rm -rf {} \\;"
338+ docker exec build /bin/bash -c "find ./ -name \"*.cmake\" -exec rm -rf {} \\;"
339+ docker exec build /bin/bash -c "rm -rf ./${{ steps.extract_docver.outputs.docver }}/_sources"
340+
341+ - name : Deploy documentation
342+ if : (github.ref == 'refs/heads/develop' || startsWith(github.ref, 'refs/heads/docs_')) && matrix.shared == 'shared' && matrix.boost == 'stdfs' && matrix.mpi == 'serial'
343+ uses : s0/git-publish-subdir-action@develop
344+ env :
345+ REPO : self
346+ BRANCH : gh-pages
347+ FOLDER : .
348+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
349+ MESSAGE : " Build: ({sha}) {msg}"
0 commit comments