From c22745e98e923be01080dc86107bf7bb74d09253 Mon Sep 17 00:00:00 2001 From: Edward Hartnett <38856240+edwardhartnett@users.noreply.github.com> Date: Thu, 16 May 2024 18:41:45 +0200 Subject: [PATCH] separating memcheck into separate CI workflow (#687) * separating memcheck into separate CI workflow * separating memcheck into separate CI workflow --- .github/workflows/developer.yml | 25 +------ .github/workflows/memcheck.yml | 121 ++++++++++++++++++++++++++++++++ 2 files changed, 122 insertions(+), 24 deletions(-) create mode 100644 .github/workflows/memcheck.yml diff --git a/.github/workflows/developer.yml b/.github/workflows/developer.yml index e55cdb6d..791a7277 100644 --- a/.github/workflows/developer.yml +++ b/.github/workflows/developer.yml @@ -1,7 +1,7 @@ # This is a GitHub actions workflow for NCEPLIBS-g2. # # This builds the develop branch with documentation, warning check, -# and address sanitizer, also the ctest memchecker. +# and address sanitizer. # # Ed Hartnett, 12/22/22 name: developer @@ -25,11 +25,6 @@ jobs: FC: gfortran CC: gcc - strategy: - fail-fast: true - matrix: - config: ["asan/code coverage", "memcheck"] - steps: - name: install-dependencies @@ -106,7 +101,6 @@ jobs: key: data-developer-5 - name: asan - if: matrix.config == 'asan/code coverage' run: | set -x cd g2 @@ -116,28 +110,12 @@ jobs: cmake -DFTP_LARGE_TEST_FILES=ON -DENABLE_DOCS=On -DJasper_ROOT=~/Jasper -DCMAKE_PREFIX_PATH="~/bacio;~/w3emc" -DCMAKE_Fortran_FLAGS="-g -fprofile-abs-path -fprofile-arcs -ftest-coverage -O0 -Wall -fno-omit-frame-pointer -fsanitize=address" -DCMAKE_C_FLAGS="-g -fprofile-abs-path -fprofile-arcs -ftest-coverage -O0 -Wall -fno-omit-frame-pointer -fsanitize=address" -DFTP_TEST_FILES=ON -DTEST_FILE_DIR=/home/runner/data -DCMAKE_BUILD_TYPE=Debug .. make -j2 VERBOSE=1 - - name: memcheck - if: matrix.config == 'memcheck' - run: | - cd g2 - mkdir build - cd build - cmake -DFTP_LARGE_TEST_FILES=ON -DJasper_ROOT=~/Jasper -DCMAKE_PREFIX_PATH="~/bacio;~/w3emc" -DCMAKE_Fortran_FLAGS="-g -O0" -DCMAKE_C_FLAGS="-g -O0" -DFTP_TEST_FILES=ON -DTEST_FILE_DIR=/home/runner/data -DCMAKE_BUILD_TYPE=Debug .. - make -j2 VERBOSE=1 - - name: test_asan - if: matrix.config == 'asan/code coverage' run: | cd $GITHUB_WORKSPACE/g2/build ctest --verbose --output-on-failure --rerun-failed gcovr --root .. -v --html-details --exclude ../tests --exclude CMakeFiles --print-summary -o test-coverage.html &> /dev/null - - name: test_memcheck - if: matrix.config == 'memcheck' - run: | - cd $GITHUB_WORKSPACE/g2/build - ctest -LE "^noMemcheck$" -T memcheck - - name: cache-data if: steps.cache-data.outputs.cache-hit != 'true' run: | @@ -145,7 +123,6 @@ jobs: cp $GITHUB_WORKSPACE/g2/build/tests/data/* ~/data - name: upload-test-coverage - if: matrix.config == 'asan/code coverage' uses: actions/upload-artifact@v4 with: name: g2-test-coverage diff --git a/.github/workflows/memcheck.yml b/.github/workflows/memcheck.yml new file mode 100644 index 00000000..9adf9566 --- /dev/null +++ b/.github/workflows/memcheck.yml @@ -0,0 +1,121 @@ +# This is a GitHub actions workflow for NCEPLIBS-g2. +# +# This builds the develop branch and does a memcheck with valgrind. +# +# Ed Hartnett, 5/16/24 +name: memcheck +on: + push: + branches: + - develop + pull_request: + branches: + - develop + +# Cancel in-progress workflows when pushing to a branch +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +jobs: + memcheck: + runs-on: ubuntu-latest + env: + FC: gfortran + CC: gcc + + steps: + + - name: install-dependencies + run: | + sudo apt-get update + sudo apt-get install libpng-dev zlib1g-dev libjpeg-dev doxygen gcovr valgrind + + - name: checkout-bacio + uses: actions/checkout@v4 + with: + repository: NOAA-EMC/NCEPLIBS-bacio + path: bacio + ref: develop + + - name: build-bacio + run: | + cd bacio + mkdir build + cd build + cmake .. -DCMAKE_INSTALL_PREFIX=~/bacio + make -j2 + make install + + - name: checkout-w3emc + uses: actions/checkout@v4 + with: + repository: NOAA-EMC/NCEPLIBS-w3emc + path: w3emc + ref: develop + + - name: build-w3emc + run: | + cd w3emc + mkdir build + cd build + cmake -DCMAKE_PREFIX_PATH=~/bacio -DCMAKE_INSTALL_PREFIX=~/w3emc -DBUILD_WITH_BUFR=OFF .. + make -j2 + make install + + - name: cache-jasper + id: cache-jasper + uses: actions/cache@v4 + with: + path: ~/Jasper + key: jasper-${{ runner.os }}-4.0.0 + + - name: checkout-jasper + if: steps.cache-jasper.outputs.cache-hit != 'true' + uses: actions/checkout@v4 + with: + repository: jasper-software/jasper + path: jasper + ref: version-4.0.0 + + - name: build-jasper + if: steps.cache-jasper.outputs.cache-hit != 'true' + run: | + cd jasper + mkdir build-jasper && cd build-jasper + cmake .. -DCMAKE_INSTALL_PREFIX=~/Jasper + make -j2 + make install + + - name: checkout + uses: actions/checkout@v4 + with: + path: g2 + + - name: cache-data + id: cache-data + uses: actions/cache@v4 + with: + path: ~/data + key: data-developer-4 + + - name: memcheck + run: | + cd g2 + mkdir build + cd build + cmake -DFTP_LARGE_TEST_FILES=ON -DJasper_ROOT=~/Jasper -DCMAKE_PREFIX_PATH="~/bacio;~/w3emc" -DCMAKE_Fortran_FLAGS="-g -O0" -DCMAKE_C_FLAGS="-g -O0" -DFTP_TEST_FILES=ON -DTEST_FILE_DIR=/home/runner/data -DCMAKE_BUILD_TYPE=Debug .. + make -j2 VERBOSE=1 + + - name: test_memcheck + run: | + cd $GITHUB_WORKSPACE/g2/build + ctest -LE "^noMemcheck$" -T memcheck + + - name: cache-data + if: steps.cache-data.outputs.cache-hit != 'true' + run: | + mkdir ~/data + cp $GITHUB_WORKSPACE/g2/build/tests/data/* ~/data + +