diff options
author | Allen Byrne <50328838+byrnHDF@users.noreply.github.com> | 2023-09-18 02:34:42 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-09-18 02:34:42 (GMT) |
commit | c82f9a550b4577f1854ca0375fe2a38fee731eb4 (patch) | |
tree | e8350da5ff96ebc3871c7ba8baf6a59a63b4c835 /.github/workflows/main-auto.yml | |
parent | 44a00ef876ad3e1922847e93feac57c479217fbe (diff) | |
download | hdf5-c82f9a550b4577f1854ca0375fe2a38fee731eb4.zip hdf5-c82f9a550b4577f1854ca0375fe2a38fee731eb4.tar.gz hdf5-c82f9a550b4577f1854ca0375fe2a38fee731eb4.tar.bz2 |
Convert main.yml CI into callable workflows (#3529)
Diffstat (limited to '.github/workflows/main-auto.yml')
-rw-r--r-- | .github/workflows/main-auto.yml | 182 |
1 files changed, 182 insertions, 0 deletions
diff --git a/.github/workflows/main-auto.yml b/.github/workflows/main-auto.yml new file mode 100644 index 0000000..3ad0399 --- /dev/null +++ b/.github/workflows/main-auto.yml @@ -0,0 +1,182 @@ +name: hdf5 dev autotools CI + +# Controls when the action will run. Triggers the workflow on a call +on: + workflow_call: + inputs: + thread_safety: + description: "thread-safety enable/disable" + required: true + type: string + build_mode: + description: "release vs. debug build" + required: true + type: string + +permissions: + contents: read + +# A workflow run is made up of one or more jobs that can run sequentially or +# in parallel. We just have one job, but the matrix items defined below will +# run in parallel. +jobs: + + # A workflow that builds the library and runs all the tests + # Linux (Ubuntu) w/ gcc + Autotools + # + Autotools_build_and_test: + name: "GCC-${{ inputs.build_mode }}-TS=${{ inputs.thread_safety }}d" + # Don't run the action if the commit message says to skip CI + if: "!contains(github.event.head_commit.message, 'skip-ci')" + + # The type of runner that the job will run on + runs-on: ubuntu-latest + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + # SETUP + - name: Install Linux Dependencies + run: | + sudo apt update + sudo apt-get install ninja-build doxygen graphviz + sudo apt install libssl3 libssl-dev libcurl4 libcurl4-openssl-dev + sudo apt install gcc-12 g++-12 gfortran-12 + sudo apt install automake autoconf libtool libtool-bin + sudo apt install libaec0 libaec-dev + echo "CC=gcc-12" >> $GITHUB_ENV + echo "CXX=g++-12" >> $GITHUB_ENV + echo "FC=gfortran-12" >> $GITHUB_ENV + + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - name: Get Sources + uses: actions/checkout@v4 + + # AUTOTOOLS CONFIGURE + - name: Autotools Configure + run: | + sh ./autogen.sh + mkdir "${{ runner.workspace }}/build" + cd "${{ runner.workspace }}/build" + $GITHUB_WORKSPACE/configure \ + --enable-build-mode=${{ inputs.build_mode }} \ + --enable-deprecated-symbols \ + --with-default-api-version=v114 \ + --enable-shared \ + --disable-parallel \ + --${{ inputs.thread_safety }}-threadsafe \ + --enable-cxx \ + --enable-fortran \ + --enable-java \ + --enable-mirror-vfd \ + --enable-direct-vfd \ + --enable-ros3-vfd \ + --with-szlib=yes + shell: bash + if: ${{ inputs.thread_safety == 'disable' }} + + - name: Autotools Configure (Thread-Safe) + run: | + sh ./autogen.sh + mkdir "${{ runner.workspace }}/build" + cd "${{ runner.workspace }}/build" + $GITHUB_WORKSPACE/configure \ + --enable-build-mode=${{ inputs.build_mode }} \ + --enable-shared \ + --${{ inputs.thread_safety }}-threadsafe \ + --disable-hl \ + --disable-parallel \ + --enable-mirror-vfd \ + --enable-direct-vfd \ + --enable-ros3-vfd \ + --with-szlib=yes + shell: bash + if: ${{ inputs.thread_safety == 'enable' }} + + # BUILD + - name: Autotools Build + run: make -j3 + working-directory: ${{ runner.workspace }}/build + + # RUN TESTS + # NORMAL + - name: Autotools Run Tests + run: make check -j2 + working-directory: ${{ runner.workspace }}/build + if: ${{ inputs.thread_safety == 'disable' }} + + # THREAD-SAFE + - name: Autotools Run Thread-Safe Tests + run: | + cd test + ./ttsafe + working-directory: ${{ runner.workspace }}/build + if: ${{ inputs.thread_safety == 'enable' }} + + # INSTALL (note that this runs even when we don't run the tests) + - name: Autotools Install + run: make install + working-directory: ${{ runner.workspace }}/build + + - name: Autotools Verify Install + run: make check-install + working-directory: ${{ runner.workspace }}/build + + # + # The GitHub runners are inadequate for running parallel HDF5 tests, + # so we catch most issues in daily testing. What we have here is just + # a compile check to make sure nothing obvious is broken. + # A workflow that builds the library + # Parallel Linux (Ubuntu) w/ gcc + Autotools + # + Autotools_build_parallel: + name: "Parallel GCC-${{ inputs.build_mode }}-TS=${{ inputs.thread_safety }}d" + # Don't run the action if the commit message says to skip CI + if: "!contains(github.event.head_commit.message, 'skip-ci')" + + # The type of runner that the job will run on + runs-on: ubuntu-latest + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + # SETUP + - name: Install Linux Dependencies + run: | + sudo apt update + sudo apt-get install ninja-build doxygen graphviz + sudo apt install libssl3 libssl-dev libcurl4 libcurl4-openssl-dev + sudo apt install gcc-12 g++-12 gfortran-12 + sudo apt install automake autoconf libtool libtool-bin + sudo apt install libaec0 libaec-dev + sudo apt install openmpi-bin openmpi-common mpi-default-dev + echo "CC=mpicc" >> $GITHUB_ENV + echo "FC=mpif90" >> $GITHUB_ENV + + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - name: Get Sources + uses: actions/checkout@v4 + + # AUTOTOOLS CONFIGURE + - name: Autotools Configure + run: | + sh ./autogen.sh + mkdir "${{ runner.workspace }}/build" + cd "${{ runner.workspace }}/build" + CC=mpicc $GITHUB_WORKSPACE/configure \ + --enable-build-mode=${{ inputs.build_mode }} \ + --enable-deprecated-symbols \ + --with-default-api-version=v114 \ + --enable-shared \ + --enable-parallel \ + --disable-cxx \ + --enable-fortran \ + --disable-java \ + --disable-mirror-vfd \ + --disable-direct-vfd \ + --disable-ros3-vfd \ + --with-szlib=yes + shell: bash + + # BUILD + - name: Autotools Build + run: make -j3 + working-directory: ${{ runner.workspace }}/build |