Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

adding developer workflow #724

Merged
merged 35 commits into from
Dec 12, 2022
Merged
Show file tree
Hide file tree
Changes from 34 commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
7a6e5cf
adding developer workflow
edwardhartnett Dec 11, 2022
e07f579
working on developer workflow
edwardhartnett Dec 11, 2022
bbb9b96
working on developer workflow
edwardhartnett Dec 11, 2022
de034d3
working on developer workflow
edwardhartnett Dec 11, 2022
5f0f0c4
more changes
edwardhartnett Dec 11, 2022
b9f458f
more changes
edwardhartnett Dec 11, 2022
7c30a80
more changes
edwardhartnett Dec 11, 2022
51e7ac1
more changes
edwardhartnett Dec 11, 2022
ac6aefd
more changes
edwardhartnett Dec 11, 2022
e171884
more
edwardhartnett Dec 12, 2022
1cffa1a
more
edwardhartnett Dec 12, 2022
b86a6e8
addding debug2
edwardhartnett Dec 12, 2022
b3801ad
addding debug2
edwardhartnett Dec 12, 2022
80891bc
addding debug2
edwardhartnett Dec 12, 2022
354b4f6
more
edwardhartnett Dec 12, 2022
ca86d6f
more
edwardhartnett Dec 12, 2022
504f690
more
edwardhartnett Dec 12, 2022
74b7422
more
edwardhartnett Dec 12, 2022
f8042cf
more
edwardhartnett Dec 12, 2022
b964da7
more
edwardhartnett Dec 12, 2022
08463b5
more
edwardhartnett Dec 12, 2022
59692f5
more
edwardhartnett Dec 12, 2022
058d515
more
edwardhartnett Dec 12, 2022
dfb675e
more
edwardhartnett Dec 12, 2022
924ae49
more
edwardhartnett Dec 12, 2022
ba6bb5c
more
edwardhartnett Dec 12, 2022
a41d195
more
edwardhartnett Dec 12, 2022
c9ce62b
more
edwardhartnett Dec 12, 2022
943e67e
more
edwardhartnett Dec 12, 2022
ca1c232
more
edwardhartnett Dec 12, 2022
d23fb34
more
edwardhartnett Dec 12, 2022
0da10b5
more
edwardhartnett Dec 12, 2022
3790db2
more
edwardhartnett Dec 12, 2022
d3280d8
more
edwardhartnett Dec 12, 2022
17656ba
Merge branch 'develop' into ejh_ci
edwardhartnett Dec 12, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 12 additions & 9 deletions .github/workflows/debug-docs-test_coverage.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,15 @@
name: debug-docs-test_coverage
on: [push, pull_request]
on:
push:
branches:
- develop
paths-ignore:
- README.md
pull_request:
branches:
- develop
paths-ignore:
- README.md

defaults:
run:
Expand Down Expand Up @@ -105,12 +115,5 @@ jobs:
- name: test
run: |
cd ufs_utils/build
export LSAN_OPTIONS=suppressions=LSanSuppress.supp
# export LSAN_OPTIONS=suppressions=LSanSuppress.supp
ctest --rerun-failed --output-on-failure
export PATH="/home/runner/.local/bin:$PATH"
gcovr -r .. --html-details -o test-coverage.html

- uses: actions/upload-artifact@v2
with:
name: test-coverage
path: ufs_utils/build/*.html
356 changes: 356 additions & 0 deletions .github/workflows/developer.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,356 @@
# UFS_UTILS test workflow.
#
# This workflow tests all developer options - address santizer,
# warning check, documentation check, and test code coverage.
#
# Ed Hartnett 12/11/22
name: developer
on:
push:
branches:
- develop
paths-ignore:
- README.md
pull_request:
branches:
- develop
paths-ignore:
- README.md

defaults:
run:
shell: bash -exo pipefail {0}

jobs:
developer:
runs-on: ubuntu-latest
env:
FC: mpifort
CC: mpicc
FCFLAGS: -fallow-argument-mismatch

steps:

- name: install-dependencies
run: |
sudo apt-get update
sudo apt-get install libpng-dev zlib1g-dev libjpeg-dev doxygen libmpich-dev
sudo apt-get install libnetcdf-dev libnetcdff-dev netcdf-bin pkg-config
python3 -m pip install gcovr

- name: cache-esmf
id: cache-esmf
uses: actions/cache@v2
with:
path: ~/esmf
key: developer-esmf-8.2.0-${{ runner.os }}3

- name: build-esmf
if: steps.cache-esmf.outputs.cache-hit != 'true'
run: |
pushd ~
export ESMF_DIR=~/esmf-ESMF_8_2_0
wget https://github.com/esmf-org/esmf/archive/ESMF_8_2_0.tar.gz &> /dev/null
tar zxf ESMF_8_2_0.tar.gz
cd esmf-ESMF_8_2_0
export ESMF_COMM=mpich3
export ESMF_INSTALL_BINDIR=bin
export ESMF_INSTALL_LIBDIR=lib
export ESMF_INSTALL_MODDIR=mod
export ESMF_COMPILER=gfortran
export ESMF_INSTALL_PREFIX=~/esmf
export ESMF_NETCDF=split
export ESMF_NETCDF_INCLUDE=/usr/include
export ESMF_NETCDF_LIBPATH=/usr/x86_64-linux-gnu
make -j2
make install

- name: cache-jasper
id: cache-jasper
uses: actions/cache@v2
with:
path: ~/jasper
key: developer-jasper-${{ runner.os }}-2.0.33-1

- name: checkout-jasper
if: steps.cache-jasper.outputs.cache-hit != 'true'
uses: actions/checkout@v2
with:
repository: jasper-software/jasper
path: jasper
ref: version-2.0.33

- 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: cache-bacio
id: cache-bacio
uses: actions/cache@v2
with:
path: ~/bacio
key: developer-bacio-${{ runner.os }}-v2.4.1

- name: checkout-bacio
if: steps.cache-bacio.outputs.cache-hit != 'true'
uses: actions/checkout@v2
with:
repository: NOAA-EMC/NCEPLIBS-bacio
path: bacio
ref: v2.4.1

- name: build-bacio
if: steps.cache-bacio.outputs.cache-hit != 'true'
run: |
cd bacio
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=~/bacio
make -j2
make install

- name: cache-g2
id: cache-g2
uses: actions/cache@v2
with:
path: ~/g2
key: developer-g2-${{ runner.os }}-3.4.3

- name: checkout-g2
if: steps.cache-g2.outputs.cache-hit != 'true'
uses: actions/checkout@v2
with:
repository: NOAA-EMC/NCEPLIBS-g2
path: g2
ref: v3.4.3

- name: build-g2
if: steps.cache-g2.outputs.cache-hit != 'true'
run: |
cd g2
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=~/g2 -DCMAKE_PREFIX_PATH="~/bacio;~/jasper" ..
make -j2
make install

- name: cache-sp
id: cache-sp
uses: actions/cache@v2
with:
path: ~/sp
key: developer-sp-${{ runner.os }}-2.3.3-1

- name: checkout-sp
if: steps.cache-sp.outputs.cache-hit != 'true'
uses: actions/checkout@v2
with:
repository: NOAA-EMC/NCEPLIBS-sp
path: sp
ref: v2.3.3

- name: build-sp
if: steps.cache-sp.outputs.cache-hit != 'true'
run: |
cd sp
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=~/sp
make -j2
make install

- name: cache-ip
id: cache-ip
uses: actions/cache@v2
with:
path: ~/ip
key: developer-ip-${{ runner.os }}-3.3.3

- name: checkout-ip
if: steps.cache-ip.outputs.cache-hit != 'true'
uses: actions/checkout@v2
with:
repository: NOAA-EMC/NCEPLIBS-ip
path: ip
ref: v3.3.3

- name: build-ip
if: steps.cache-ip.outputs.cache-hit != 'true'
run: |
cd ip
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=~/ip -DCMAKE_PREFIX_PATH=~~/sp ..
make -j2
make install

# - name: checkout-w3emc
# uses: actions/checkout@v2
# 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 ..
# make -j2
# make install

# - name: checkout-g2c
# uses: actions/checkout@v2
# with:
# repository: NOAA-EMC/NCEPLIBS-g2c
# path: g2c
# ref: develop

# - name: build-g2c
# run: |
# cd g2c
# mkdir build
# cd build
# cmake .. -DCMAKE_INSTALL_PREFIX=~/g2c -DJasper_ROOT=~/jasper
# make -j2
# make install

- name: cache-sfcio
id: cache-sfcio
uses: actions/cache@v2
with:
path: ~/sfcio
key: developer-sfcio-${{ runner.os }}-1.4.0-1

- name: checkout-sfcio
if: steps.cache-sfcio.outputs.cache-hit != 'true'
uses: actions/checkout@v2
with:
repository: NOAA-EMC/NCEPLIBS-sfcio
path: sfcio
ref: v1.4.0

- name: build-sfcio
if: steps.cache-sfcio.outputs.cache-hit != 'true'
run: |
cd sfcio
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=~/sfcio
make -j2
make install

- name: cache-w3nco
id: cache-w3nco
uses: actions/cache@v2
with:
path: ~/w3nco
key: developer-w3nco-${{ runner.os }}-2.4.0

- name: checkout-w3nco
if: steps.cache-w3nco.outputs.cache-hit != 'true'
uses: actions/checkout@v2
with:
repository: NOAA-EMC/NCEPLIBS-w3nco
path: w3nco
ref: v2.4.0

- name: build-w3nco
if: steps.cache-w3nco.outputs.cache-hit != 'true'
run: |
cd w3nco
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=~/w3nco
make -j2
make install

- name: cache-nemsio
id: cache-nemsio
uses: actions/cache@v2
with:
path: ~/nemsio
key: developer-nemsio-${{ runner.os }}-2.5.0-1

- name: checkout-nemsio
if: steps.cache-nemsio.outputs.cache-hit != 'true'
uses: actions/checkout@v2
with:
repository: NOAA-EMC/NCEPLIBS-nemsio
path: nemsio
ref: v2.5.0

- name: build-nemsio
if: steps.cache-nemsio.outputs.cache-hit != 'true'
run: |
cd nemsio
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=~/nemsio -DCMAKE_PREFIX_PATH="~/bacio;~/w3nco" ..
make -j2
make install

- name: cache-sigio
id: cache-sigio
uses: actions/cache@v2
with:
path: ~/sigio
key: developer-sigio-${{ runner.os }}-2.3.0

- name: checkout-sigio
if: steps.cache-sigio.outputs.cache-hit != 'true'
uses: actions/checkout@v2
with:
repository: NOAA-EMC/NCEPLIBS-sigio
path: sigio
ref: v2.3.0

- name: build-sigio
if: steps.cache-sigio.outputs.cache-hit != 'true'
run: |
cd sigio
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=~/sigio
make -j2
make install

- name: checkout
uses: actions/checkout@v2
with:
path: ufs_utils
submodules: true

- name: build
run: |
set -x
cd ufs_utils
mkdir build
doxygen --version
export ESMFMKFILE=~/esmf/lib/esmf.mk
cd build
cmake .. -DFTP_TEST_FILES=ON -DTEST_FILE_DIR=/home/runner/data -DENABLE_DOCS=On -DJasper_ROOT=~/jasper -DCMAKE_PREFIX_PATH="~/g2c;~/bacio;~/g2;~/w3nco;~/sfcio;~/sigio;~/nemsio;~/sp;~/ip" -DCMAKE_Fortran_FLAGS="-g -fprofile-arcs -ftest-coverage -O0" -DCMAKE_C_FLAGS="-g -fprofile-arcs -ftest-coverage -O0" -DCMAKE_BUILD_TYPE=Debug
make -j2 VERBOSE=1

- name: test
run: |
cd ufs_utils/build
ctest --verbose --rerun-failed --output-on-failure
gcovr --root .. -v --html-details --exclude ../tests --exclude CMakeFiles --print-summary -o test-coverage.html &> /dev/null

- name: upload-test-coverage
uses: actions/upload-artifact@v2
with:
name: ufs_utils-test-coverage
path: |
ufs_utils/build/*.html
ufs_utils/build/*.css




Loading