Skip to content

Append to update_log #10

Append to update_log

Append to update_log #10

name: Build and test ERT and docs
on:
push:
branches:
- main
- 'version-**'
tags: "*"
pull_request:
env:
ERT_SHOW_BACKTRACE: 1
ECL_SKIP_SIGNAL: 1
jobs:
build-test-cmake:
name: Run C++ tests and coverage
timeout-minutes: 10
strategy:
fail-fast: false
matrix:
os: ['ubuntu-latest', 'macos-latest']
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- name: Install Ubuntu dependencies
if: matrix.os == 'ubuntu-latest'
run: |
sudo apt-get update -y
sudo apt-get install -y valgrind
- uses: actions/setup-python@v4
id: setup_python
with:
python-version: '3.11'
- uses: actions/cache@v3
with:
path: ~/.conan/
key: ${{ matrix.os }}-conan-${{ hashFiles('**/CMakeLists.txt') }}
- name: Install dependencies from PyPI
run: |
python3 -m pip install "conan<2" pybind11 resdata
echo "PIP_PKGS_PATH=$(python3 -m pip show conan | grep Location | cut -d ' ' -f 2 | sed -e 's@/lib/.*site-packages$@/bin@')" >> "$GITHUB_ENV"
- name: Build ert clib
run: |
export PATH=$PATH:${{ env.PIP_PKGS_PATH }}
mkdir cmake-build
cmake -S src/clib -B cmake-build -DCMAKE_BUILD_TYPE=Debug -DBUILD_TESTS=ON -DCOVERAGE=ON
cmake --build cmake-build "-j$(nproc)"
- name: Run tests
run: |
cd cmake-build
export PATH=$PWD/bin:$PATH
ctest --output-on-failure
- name: Install gcovr
if: matrix.os == 'ubuntu-latest'
run: |
python3 -m pip install gcovr
- name: generate coverage report
if: matrix.os == 'ubuntu-latest'
run: |
export PATH=$PATH:${{ env.PIP_PKGS_PATH }}
gcovr -r src/clib/ --gcov-ignore-parse-errors=negative_hits.warn --exclude-directories ".*tests" cmake-build/ --xml -o cov.xml
- name: Upload c coverage to Codecov
uses: codecov/codecov-action@v3
if: matrix.os == 'ubuntu-latest'
with:
token: ${{ secrets.CODECOV_TOKEN }}
# fail_ci_if_error: true
files: cov.xml
build-linux:
strategy:
fail-fast: false
matrix:
python-version: [ '3.8', '3.9', '3.10', '3.11' ]
uses: ./.github/workflows/build-wheels-linux.yml
with:
python-version: ${{ matrix.python-version }}
build-mac:
strategy:
fail-fast: false
matrix:
python-version: [ '3.8', '3.9', '3.10', '3.11' ]
os: [ 'macos-latest', 'macos-latest-xlarge' ]
exclude: # m1 runner macos-latest-xlarge does not have python < 3.10
- os: macos-latest-xlarge
python-version: '3.8'
- os: macos-latest-xlarge
python-version: '3.9'
uses: ./.github/workflows/build-wheels-macos.yml
with:
python-version: ${{ matrix.python-version }}
os: ${{ matrix.os }}
test-linux:
needs: [build-linux]
strategy:
fail-fast: false
matrix:
test-type: [ 'integration-tests', 'unit-tests', 'gui-test' ]
python-version: [ '3.8', '3.9', '3.10', '3.11' ]
os: [ ubuntu-latest ]
exclude:
- os: ubuntu-latest
python-version: '3.9'
test-type: 'gui-test'
- os: ubuntu-latest
python-version: '3.10'
test-type: 'gui-test'
uses: ./.github/workflows/test_ert.yml
with:
os: ${{ matrix.os }}
python-version: ${{ matrix.python-version }}
test-type: ${{ matrix.test-type }}
test-slurm:
needs: [build-linux]
strategy:
fail-fast: false
matrix:
os: [ ubuntu-latest ]
python-version: [ '3.8', '3.9', '3.10', '3.11' ]
uses: ./.github/workflows/test_ert_with_slurm.yml
with:
os: ${{ matrix.os }}
python-version: ${{ matrix.python-version }}
test-mac:
needs: [build-mac]
strategy:
fail-fast: false
matrix:
test-type: [ 'integration-tests', 'unit-tests', 'gui-test' ]
python-version: [ '3.10' ]
os: [ macos-latest ]
uses: ./.github/workflows/test_ert.yml
with:
os: ${{ matrix.os }}
python-version: ${{ matrix.python-version }}
test-type: ${{ matrix.test-type }}
docs-ert:
name: Test ert docs
needs: [build-linux]
strategy:
fail-fast: false
matrix:
python-version: ['3.11']
os: [ubuntu-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: './.github/actions/install_dependencies'
with:
os: ${{ matrix.os }}
- name: Install PlantUML
run: |
sudo apt install plantuml
- name: Install pandoc
run: |
sudo apt install pandoc
- uses: actions/setup-python@v4
id: setup_python
with:
python-version: ${{ matrix.python-version }}
cache: "pip"
cache-dependency-path: |
pyproject.toml
- name: Get wheels
uses: actions/download-artifact@v3
with:
name: ${{ matrix.os }} Python ${{ matrix.python-version }} wheel
- name: Install wheel
run: |
find . -name "*.whl" -exec pip install "{}[dev]" \;
- name: Make test directory
run: |
mkdir tmp_tests
mv tests tmp_tests/tests
mv test-data tmp_tests/test-data
mkdir tmp_tests/.git
- name: Test docs
run: |
sphinx-build -n -v -E -W ./docs ./tmp/ert_docs
publish:
name: Publish to PyPI
runs-on: ubuntu-latest
needs: [build-test-cmake, test-linux, test-mac, docs-ert]
# If this is a tagged release
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags')
steps:
- name: Get wheels
uses: actions/download-artifact@v3
with:
path: artifacts
- name: Move to dist/
run: |
mkdir dist
find artifacts -name "*.whl" -exec mv '{}' dist/ \;
- name: Publish to PyPI
uses: pypa/[email protected]
with:
password: ${{ secrets.pypi_password }}