diff options
author | Dana Robinson <derobins@hdfgroup.org> | 2021-05-03 22:00:43 (GMT) |
---|---|---|
committer | Dana Robinson <derobins@hdfgroup.org> | 2021-05-03 22:00:43 (GMT) |
commit | 20c328e2d578570c5123fe222b41eb8a85814673 (patch) | |
tree | 5b7819b35965dd6d82f0c119f850d2e4788f3782 /.github/workflows | |
parent | 0ab5dd5e8ea2342ef039f0f79bd76e4ab187dddf (diff) | |
download | hdf5-20c328e2d578570c5123fe222b41eb8a85814673.zip hdf5-20c328e2d578570c5123fe222b41eb8a85814673.tar.gz hdf5-20c328e2d578570c5123fe222b41eb8a85814673.tar.bz2 |
Adds github action files
Diffstat (limited to '.github/workflows')
-rw-r--r-- | .github/workflows/clang-format-check.yml | 18 | ||||
-rw-r--r-- | .github/workflows/clang-format-fix.yml | 25 | ||||
-rw-r--r-- | .github/workflows/main.yml | 155 | ||||
-rw-r--r-- | .github/workflows/pr-check.yml | 214 |
4 files changed, 404 insertions, 8 deletions
diff --git a/.github/workflows/clang-format-check.yml b/.github/workflows/clang-format-check.yml new file mode 100644 index 0000000..4f696e7 --- /dev/null +++ b/.github/workflows/clang-format-check.yml @@ -0,0 +1,18 @@ +name: clang-format Check +on: + pull_request: +jobs: + formatting-check: + name: Formatting Check + runs-on: ubuntu-latest + if: "!contains(github.event.head_commit.message, 'skip-ci')" + steps: + - uses: actions/checkout@v2 + - name: Run clang-format style check for C programs. + uses: DoozyX/clang-format-lint-action@v0.11 + with: + source: '.' + extensions: 'c,h,cpp,hpp' + clangFormatVersion: 10 + style: file + exclude: './config ./hl/src/H5LTanalyze.c ./hl/src/H5LTparse.c ./hl/src/H5LTparse.h ./src/H5Epubgen.h ./src/H5Einit.h ./src/H5Eterm.h ./src/H5Edefin.h ./src/H5version.h ./src/H5overflow.h' diff --git a/.github/workflows/clang-format-fix.yml b/.github/workflows/clang-format-fix.yml new file mode 100644 index 0000000..082d617 --- /dev/null +++ b/.github/workflows/clang-format-fix.yml @@ -0,0 +1,25 @@ +name: clang-format Check +on: + workflow_dispatch: + push: +jobs: + formatting-check: + name: Formatting Check + runs-on: ubuntu-latest + if: "!contains(github.event.head_commit.message, 'skip-ci')" + steps: + - uses: actions/checkout@v2 + - name: Run clang-format style check for C programs. + uses: DoozyX/clang-format-lint-action@v0.11 + with: + source: '.' + extensions: 'c,h,cpp,hpp' + clangFormatVersion: 10 + inplace: True + style: file + exclude: './config ./hl/src/H5LTanalyze.c ./hl/src/H5LTparse.c ./hl/src/H5LTparse.h ./src/H5Epubgen.h ./src/H5Einit.h ./src/H5Eterm.h ./src/H5Edefin.h ./src/H5version.h ./src/H5overflow.h' + - uses: EndBug/add-and-commit@v7 + with: + author_name: github-actions + author_email: 41898282+github-actions[bot]@users.noreply.github.com + message: 'Committing clang-format changes' diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 60e21c7..d147d28 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -2,11 +2,14 @@ name: hdf5 dev CI # Controls when the action will run. Triggers the workflow on push or pull request on: + workflow_dispatch: push: - branches: [ develop, hdf5_1_12, hdf5_1_10, hdf5_1_8 ] - pull_request: - branches: [ develop, hdf5_1_12, hdf5_1_10, hdf5_1_8 ] - + branches: [ develop, hdf5_1_12, hdf5_1_10, hdf5_1_8, feature/vfd_swmr] + paths-ignore: + - '.github/**' + - 'doc/**' + - 'release_docs/**' + # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: # This workflow contains a single job called "build" @@ -14,39 +17,152 @@ jobs: strategy: # fail-fast: false matrix: - name: ["Windows Latest MSVC", "Ubuntu Latest GCC", "macOS Latest Clang"] + name: ["Windows Latest MSVC", "Ubuntu Latest GCC", "Ubuntu Debug GCC", "macOS Latest Clang", "Ubuntu Autotools GCC", "Windows TS MSVC", "Ubuntu TS GCC", "TS Debug GCC", "macOS TS Clang", "TS Autotools GCC"] include: - name: "Windows Latest MSVC" artifact: "Windows-MSVC.tar.xz" os: windows-latest build_type: "Release" toolchain: "" + cpp: ON fortran: OFF + java: ON + ts: OFF + hl: ON + parallel: OFF generator: "-G \"Visual Studio 16 2019\" -A x64" - name: "Ubuntu Latest GCC" artifact: "Linux.tar.xz" os: ubuntu-latest build_type: "Release" + cpp: ON fortran: OFF + java: ON + ts: OFF + hl: ON + parallel: OFF toolchain: "config/toolchain/GCC.cmake" generator: "-G Ninja" - name: "macOS Latest Clang" artifact: "macOS.tar.xz" os: macos-latest build_type: "Release" + cpp: ON + fortran: OFF + java: ON + ts: OFF + hl: ON + parallel: OFF + toolchain: "config/toolchain/clang.cmake" + generator: "-G Ninja" + - name: "Ubuntu Debug GCC" + artifact: "LinuxDBG.tar.xz" + os: ubuntu-latest + build_type: "Debug" + cpp: ON + fortran: OFF + java: OFF + ts: OFF + hl: ON + parallel: OFF + toolchain: "config/toolchain/GCC.cmake" + generator: "-G Ninja" + - name: "Ubuntu Autotools GCC" + artifact: "LinuxA.tar.xz" + os: ubuntu-latest + build_type: "Release" + cpp: enable + fortran: enable + java: enable + ts: disable + hl: enable + parallel: disable + toolchain: "" + generator: "autogen" +# Threadsafe runs + - name: "Windows TS MSVC" + artifact: "Windows-MSVCTS.tar.xz" + os: windows-2016 + build_type: "Release" + toolchain: "" + cpp: OFF + fortran: OFF + java: OFF + ts: ON + hl: OFF + parallel: OFF + generator: "-G \"Visual Studio 15 2017 Win64\"" + - name: "Ubuntu TS GCC" + artifact: "LinuxTS.tar.xz" + os: ubuntu-latest + build_type: "Release" + cpp: OFF + fortran: OFF + java: OFF + ts: ON + hl: OFF + parallel: OFF + toolchain: "config/toolchain/GCC.cmake" + generator: "-G Ninja" + - name: "macOS TS Clang" + artifact: "macOSTS.tar.xz" + os: macos-latest + build_type: "Release" + cpp: OFF fortran: OFF + java: OFF + ts: ON + hl: OFF + parallel: OFF toolchain: "config/toolchain/clang.cmake" generator: "-G Ninja" + - name: "TS Debug GCC" + artifact: "LinuxTSDBG.tar.xz" + os: ubuntu-latest + build_type: "Debug" + cpp: OFF + fortran: OFF + java: OFF + ts: ON + hl: OFF + parallel: OFF + toolchain: "config/toolchain/GCC.cmake" + generator: "-G Ninja" + - name: "TS Autotools GCC" + artifact: "LinuxATS.tar.xz" + os: ubuntu-latest + build_type: "Release" + cpp: disable + fortran: disable + java: disable + ts: enable + hl: disable + parallel: disable + toolchain: "" + generator: "autogen" +# - name: "Ubuntu Parallel GCC" +# artifact: "LinuxPar.tar.xz" +# os: ubuntu-latest +# build_type: "Release" +# cpp: OFF +# fortran: OFF +# parallel: ON +# toolchain: "config/toolchain/GCC.cmake" +# generator: "-G Ninja" name: ${{ matrix.name }} # The type of runner that the job will run on runs-on: ${{ matrix.os }} + if: "!contains(github.event.head_commit.message, 'skip-ci')" # Steps represent a sequence of tasks that will be executed as part of the job steps: - name: Install Dependencies (Linux) run: sudo apt-get install ninja-build if: matrix.os == 'ubuntu-latest' + - name: Install Autotools Dependencies (Linux) + run: sudo apt-get install automake autoconf libtool libtool-bin + if: matrix.generator == 'autogen' - name: Install Dependencies (Windows) run: choco install ninja if: matrix.os == 'windows-latest' @@ -57,24 +173,47 @@ jobs: if: matrix.os == 'windows-latest' run: | # Set these env vars so cmake picks the correct compiler - echo "::set-env name=CXX::cl.exe" - echo "::set-env name=CC::cl.exe" + echo "CXX=cl.exe" >> $GITHUB_ENV + echo "CC=cl.exe" >> $GITHUB_ENV # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - name: Get Sources uses: actions/checkout@v2 + - name: Autotools Configure + if: matrix.generator == 'autogen' + run: | + sh ./autogen.sh + sh ./bin/chkmanifest + mkdir "${{ runner.workspace }}/build" + cd "${{ runner.workspace }}/build" + $GITHUB_WORKSPACE/configure --enable-shared --${{ matrix.ts }}-threadsafe --${{ matrix.hl }}-hl --${{ matrix.parallel }}-parallel --${{ matrix.cpp }}-cxx --${{ matrix.fortran }}-fortran --${{ matrix.java }}-java + shell: bash + - name: Configure + if: matrix.generator != 'autogen' run: | mkdir "${{ runner.workspace }}/build" cd "${{ runner.workspace }}/build" - cmake ${{ matrix.generator }} -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -DCMAKE_TOOLCHAIN_FILE=${{ matrix.toolchain }} -DBUILD_SHARED_LIBS=ON -DHDF5_ENABLE_ALL_WARNINGS=ON -DHDF5_BUILD_FORTRAN=${{ matrix.fortran }} -DHDF5_BUILD_JAVA=ON $GITHUB_WORKSPACE + cmake ${{ matrix.generator }} -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -DCMAKE_TOOLCHAIN_FILE=${{ matrix.toolchain }} -DBUILD_SHARED_LIBS=ON -DHDF5_ENABLE_ALL_WARNINGS=ON -DHDF5_ENABLE_THREADSAFE:BOOL=${{ matrix.ts }} -DHDF5_BUILD_HL_LIB:BOOL=${{ matrix.hl }} -DHDF5_ENABLE_PARALLEL:BOOL=${{ matrix.parallel }} -DHDF5_BUILD_CPP_LIB:BOOL=${{ matrix.cpp }} -DHDF5_BUILD_FORTRAN=${{ matrix.fortran }} -DHDF5_BUILD_JAVA=${{ matrix.java }} $GITHUB_WORKSPACE shell: bash + - name: Autotools Build + if: matrix.generator == 'autogen' + run: make + working-directory: ${{ runner.workspace }}/build + - name: Build + if: matrix.generator != 'autogen' run: cmake --build . --config ${{ matrix.build_type }} working-directory: ${{ runner.workspace }}/build + - name: Autotools Test + if: matrix.generator == 'autogen' + run: make check + working-directory: ${{ runner.workspace }}/build + - name: Test + if: matrix.generator != 'autogen' run: ctest --build . -C ${{ matrix.build_type }} -V working-directory: ${{ runner.workspace }}/build diff --git a/.github/workflows/pr-check.yml b/.github/workflows/pr-check.yml new file mode 100644 index 0000000..b50bf59 --- /dev/null +++ b/.github/workflows/pr-check.yml @@ -0,0 +1,214 @@ +name: hdf5 dev CI + +# Controls when the action will run. Triggers the workflow on push or pull request +on: + pull_request: + branches: [ develop, hdf5_1_12, hdf5_1_10, hdf5_1_8 ] + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + # This workflow contains a single job called "build" + build: + strategy: +# fail-fast: false + matrix: + name: ["Windows Latest MSVC", "Ubuntu Latest GCC", "Ubuntu Debug GCC", "macOS Latest Clang", "Ubuntu Autotools GCC", "Windows TS MSVC", "Ubuntu TS GCC", "TS Debug GCC", "macOS TS Clang", "TS Autotools GCC"] + include: + - name: "Windows Latest MSVC" + artifact: "Windows-MSVC.tar.xz" + os: windows-latest + build_type: "Release" + toolchain: "" + cpp: ON + fortran: OFF + java: ON + ts: OFF + hl: ON + parallel: OFF + generator: "-G \"Visual Studio 16 2019\" -A x64" + - name: "Ubuntu Latest GCC" + artifact: "Linux.tar.xz" + os: ubuntu-latest + build_type: "Release" + cpp: ON + fortran: OFF + java: ON + ts: OFF + hl: ON + parallel: OFF + toolchain: "config/toolchain/GCC.cmake" + generator: "-G Ninja" + - name: "macOS Latest Clang" + artifact: "macOS.tar.xz" + os: macos-latest + build_type: "Release" + cpp: ON + fortran: OFF + java: ON + ts: OFF + hl: ON + parallel: OFF + toolchain: "config/toolchain/clang.cmake" + generator: "-G Ninja" + - name: "Ubuntu Debug GCC" + artifact: "LinuxDBG.tar.xz" + os: ubuntu-latest + build_type: "Debug" + cpp: ON + fortran: OFF + java: OFF + ts: OFF + hl: ON + parallel: OFF + toolchain: "config/toolchain/GCC.cmake" + generator: "-G Ninja" + - name: "Ubuntu Autotools GCC" + artifact: "LinuxA.tar.xz" + os: ubuntu-latest + build_type: "Release" + cpp: enable + fortran: enable + java: enable + ts: disable + hl: enable + parallel: disable + toolchain: "" + generator: "autogen" +# Threadsafe runs + - name: "Windows TS MSVC" + artifact: "Windows-MSVCTS.tar.xz" + os: windows-2016 + build_type: "Release" + toolchain: "" + cpp: OFF + fortran: OFF + java: OFF + ts: ON + hl: OFF + parallel: OFF + generator: "-G \"Visual Studio 15 2017 Win64\"" + - name: "Ubuntu TS GCC" + artifact: "LinuxTS.tar.xz" + os: ubuntu-latest + build_type: "Release" + cpp: OFF + fortran: OFF + java: OFF + ts: ON + hl: OFF + parallel: OFF + toolchain: "config/toolchain/GCC.cmake" + generator: "-G Ninja" + - name: "macOS TS Clang" + artifact: "macOSTS.tar.xz" + os: macos-latest + build_type: "Release" + cpp: OFF + fortran: OFF + java: OFF + ts: ON + hl: OFF + parallel: OFF + toolchain: "config/toolchain/clang.cmake" + generator: "-G Ninja" + - name: "TS Debug GCC" + artifact: "LinuxTSDBG.tar.xz" + os: ubuntu-latest + build_type: "Debug" + cpp: OFF + fortran: OFF + java: OFF + ts: ON + hl: OFF + parallel: OFF + toolchain: "config/toolchain/GCC.cmake" + generator: "-G Ninja" + - name: "TS Autotools GCC" + artifact: "LinuxATS.tar.xz" + os: ubuntu-latest + build_type: "Release" + cpp: disable + fortran: disable + java: disable + ts: enable + hl: disable + parallel: disable + toolchain: "" + generator: "autogen" +# - name: "Ubuntu Parallel GCC" +# artifact: "LinuxPar.tar.xz" +# os: ubuntu-latest +# build_type: "Release" +# cpp: OFF +# fortran: OFF +# parallel: ON +# toolchain: "config/toolchain/GCC.cmake" +# generator: "-G Ninja" + + name: ${{ matrix.name }} + # The type of runner that the job will run on + runs-on: ${{ matrix.os }} + if: "!contains(github.event.head_commit.message, 'skip-ci')" + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + - name: Install Dependencies (Linux) + run: sudo apt-get install ninja-build + if: matrix.os == 'ubuntu-latest' + - name: Install Autotools Dependencies (Linux) + run: sudo apt-get install automake autoconf libtool libtool-bin + if: matrix.generator == 'autogen' + - name: Install Dependencies (Windows) + run: choco install ninja + if: matrix.os == 'windows-latest' + - name: Install Dependencies (macOS) + run: brew install ninja + if: matrix.os == 'macos-latest' + - name: Set environment for MSVC (Windows) + if: matrix.os == 'windows-latest' + run: | + # Set these env vars so cmake picks the correct compiler + echo "CXX=cl.exe" >> $GITHUB_ENV + echo "CC=cl.exe" >> $GITHUB_ENV + + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - name: Get Sources + uses: actions/checkout@v2 + + - name: Autotools Configure + if: matrix.generator == 'autogen' + run: | + sh ./autogen.sh + sh ./bin/chkmanifest + mkdir "${{ runner.workspace }}/build" + cd "${{ runner.workspace }}/build" + $GITHUB_WORKSPACE/configure --enable-shared --${{ matrix.ts }}-threadsafe --${{ matrix.hl }}-hl --${{ matrix.parallel }}-parallel --${{ matrix.cpp }}-cxx --${{ matrix.fortran }}-fortran --${{ matrix.java }}-java + shell: bash + + - name: Configure + if: matrix.generator != 'autogen' + run: | + mkdir "${{ runner.workspace }}/build" + cd "${{ runner.workspace }}/build" + cmake ${{ matrix.generator }} -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -DCMAKE_TOOLCHAIN_FILE=${{ matrix.toolchain }} -DBUILD_SHARED_LIBS=ON -DHDF5_ENABLE_ALL_WARNINGS=ON -DHDF5_ENABLE_THREADSAFE:BOOL=${{ matrix.ts }} -DHDF5_BUILD_HL_LIB:BOOL=${{ matrix.hl }} -DHDF5_ENABLE_PARALLEL:BOOL=${{ matrix.parallel }} -DHDF5_BUILD_CPP_LIB:BOOL=${{ matrix.cpp }} -DHDF5_BUILD_FORTRAN=${{ matrix.fortran }} -DHDF5_BUILD_JAVA=${{ matrix.java }} $GITHUB_WORKSPACE + shell: bash + + - name: Autotools Build + if: matrix.generator == 'autogen' + run: make + working-directory: ${{ runner.workspace }}/build + + - name: Build + if: matrix.generator != 'autogen' + run: cmake --build . --config ${{ matrix.build_type }} + working-directory: ${{ runner.workspace }}/build + + - name: Autotools Test + if: matrix.generator == 'autogen' + run: make check + working-directory: ${{ runner.workspace }}/build + + - name: Test + if: matrix.generator != 'autogen' + run: ctest --build . -C ${{ matrix.build_type }} -V + working-directory: ${{ runner.workspace }}/build |