Skip to content

Simplify _estimate_duration in snapshot.py #8594

Simplify _estimate_duration in snapshot.py

Simplify _estimate_duration in snapshot.py #8594

Workflow file for this run

name: Build and test ERT and docs
on:
push:
branches:
- main
- 'version-**'
tags: "*"
pull_request:
env:
ERT_SHOW_BACKTRACE: 1
ECL_SKIP_SIGNAL: 1
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
jobs:
build-test-cmake:
name: Run C++ tests and coverage
timeout-minutes: 10
strategy:
fail-fast: false
matrix:
os: ['ubuntu-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 clang-tidy
- uses: actions/setup-python@v5
id: setup_python
with:
python-version: '3.12'
- uses: actions/cache@v4
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 -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
cmake --build cmake-build "-j$(nproc)"
- name: find changed cpp files
id: find_changed_files
run: echo "changed_files=$(git diff --name-only ${{github.sha}} ${{github.event.pull_request.base.sha}} | tr ' ' '\n' | xargs ls -d 2>/dev/null | grep -E '\.(hpp|cpp)$' | tr '\n' ' ')" >> "$GITHUB_OUTPUT"
- run: echo ::add-matcher::.github/clang-tidy-matcher.json
- name: run clang-tidy
run: clang-tidy -p cmake-build/ ${{steps.find_changed_files.outputs.changed_files}}
if: steps.find_changed_files.outputs.changed_files != ''
- 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@v4
id: codecov1
if: matrix.os == 'ubuntu-latest'
continue-on-error: true
with:
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: true
files: cov.xml
- name: codecov retry sleep
if: matrix.os == 'ubuntu-latest' && steps.codecov1.outcome == 'failure'
run: |
sleep 30
- name: Codecov retry
uses: codecov/codecov-action@v4
if: matrix.os == 'ubuntu-latest' && steps.codecov1.outcome == 'failure'
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: cov.xml
fail_ci_if_error: ${{ github.ref == 'refs/heads/main' }}
build-linux:
strategy:
fail-fast: false
matrix:
python-version: [ '3.8', '3.9', '3.10', '3.11', '3.12' ]
uses: ./.github/workflows/build-wheels-linux.yml
with:
python-version: ${{ matrix.python-version }}
build-mac-for-tags:
if: github.ref_type == 'tag' # only build all variants for tags
strategy:
fail-fast: false
matrix:
python-version: [ '3.8', '3.9', '3.10', '3.11', '3.12' ]
# https://github.com/actions/runner-images?tab=readme-ov-file#available-images
os: [ 'macos-13', 'macos-14', 'macos-14-large']
exclude:
- os: 'macos-14'
python-version: '3.8'
- os: 'macos-14'
python-version: '3.9'
- os: 'macos-14'
python-version: '3.10'
- os: 'macos-14-large'
python-version: '3.8'
- os: 'macos-14-large'
python-version: '3.9'
- os: 'macos-14-large'
python-version: '3.10'
- os: 'macos-13'
python-version: '3.11'
- os: 'macos-13'
python-version: '3.12'
uses: ./.github/workflows/build-wheels-macos.yml
with:
python-version: ${{ matrix.python-version }}
os: ${{ matrix.os }}
build-mac:
if: github.ref_type != 'tag' # one combination when not tag
strategy:
fail-fast: false
matrix:
python-version: [ '3.12' ]
os: [ 'macos-latest' ]
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.11', '3.12' ]
os: [ ubuntu-latest ]
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.11', '3.12' ]
uses: ./.github/workflows/test_ert_with_slurm.yml
with:
os: ${{ matrix.os }}
python-version: ${{ matrix.python-version }}
test-mac-for-tags:
if: github.ref_type == 'tag' # only test all variants for tags
needs: [build-mac-for-tags]
strategy:
fail-fast: false
matrix:
test-type: [ 'integration-tests', 'unit-tests', 'gui-test' ]
python-version: [ '3.8', '3.12' ]
os: [ 'macos-13', 'macos-14', 'macos-14-large']
exclude:
- os: 'macos-14'
python-version: '3.8'
- os: 'macos-14-large'
python-version: '3.8'
- os: 'macos-13'
python-version: '3.12'
uses: ./.github/workflows/test_ert.yml
with:
os: ${{ matrix.os }}
python-version: ${{ matrix.python-version }}
test-type: ${{ matrix.test-type }}
test-mac:
if: github.ref_type != 'tag' # one combination when not tag
needs: [build-mac]
strategy:
fail-fast: false
matrix:
test-type: [ 'integration-tests', 'unit-tests', 'gui-test' ]
python-version: [ '3.12' ]
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.12']
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 pandoc
run: |
sudo apt install pandoc
- uses: actions/setup-python@v5
id: setup_python
with:
python-version: ${{ matrix.python-version }}
cache: "pip"
cache-dependency-path: |
pyproject.toml
- name: Get wheels
uses: actions/download-artifact@v4
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-for-tags, docs-ert]
permissions:
id-token: write
# If this is a tagged release
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags')
steps:
- name: Get wheels
uses: actions/download-artifact@v4
with:
path: artifacts
- name: Move to dist/
run: |
mkdir dist
find artifacts -name "*.whl" -exec mv '{}' dist/ \;
- name: Publish to PyPI
uses: pypa/gh-action-pypi-publish@v1.8.11