Improve realization number filtering for ensembles #15119
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: ResInsight Build With Cache | |
on: | |
push: | |
pull_request: | |
schedule: | |
# Every day at 1am to make sure we have a build cache for the current date | |
# build cache is | |
- cron: '0 1 * * *' | |
env: | |
BUILD_TYPE: Release | |
BUILDCACHE_VERSION: 0.27.6 | |
BUILDCACHE_DIR: ${{ github.workspace }}/buildcache_dir | |
BUILDCACHE_ACCURACY: SLOPPY | |
concurrency: | |
group: build-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
jobs: | |
build: | |
runs-on: ${{ matrix.config.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
config: | |
- { | |
name: "Windows Latest MSVC", | |
os: windows-2022, | |
cc: "cl", | |
cxx: "cl", | |
vcpkg-response-file: vcpkg_x64-windows.txt, | |
vcpkg-triplet: x64-windows, | |
build-python-module: true, | |
execute-unit-tests: true, | |
execute-pytests: true, | |
unity-build: true, | |
publish-to-pypi: false, | |
} | |
- { | |
name: "Ubuntu 20.04 gcc", | |
os: ubuntu-20.04, | |
cc: "gcc", | |
cxx: "g++", | |
vcpkg-response-file: vcpkg_x64-linux.txt, | |
vcpkg-triplet: x64-linux, | |
build-python-module: true, | |
execute-unit-tests: true, | |
execute-pytests: true, | |
unity-build: false, | |
publish-to-pypi: true, | |
} | |
- { | |
name: "Ubuntu 22.04 clang-16", | |
os: ubuntu-22.04, | |
cc: "clang-16", | |
cxx: "clang++-16", | |
vcpkg-response-file: vcpkg_x64-linux.txt, | |
vcpkg-triplet: x64-linux, | |
build-python-module: true, | |
execute-unit-tests: true, | |
execute-pytests: false, | |
unity-build: false, | |
publish-to-pypi: false, | |
} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.8" | |
- name: Display Python version | |
run: python -c "import sys; print(sys.version)" | |
- name: Get Python executable path | |
shell: bash | |
id: python-path | |
run: echo "PYTHON_EXECUTABLE=$(python -c 'import sys; import pathlib; print (pathlib.PurePath(sys.executable).as_posix())')" >> $GITHUB_OUTPUT | |
- name: Print Python path | |
run: echo "${{ steps.python-path.outputs.PYTHON_EXECUTABLE }}" | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install -r GrpcInterface/Python/dev-requirements.txt | |
- name: Use CMake | |
uses: lukka/get-cmake@latest | |
- name: Use MSVC (Windows) | |
uses: ilammy/msvc-dev-cmd@v1 | |
- name: Download buildcache | |
id: buildcache-download | |
shell: cmake -P {0} | |
run: | | |
if ("${{ runner.os }}" STREQUAL "Windows") | |
set(buildcache_suffix "windows.zip") | |
elseif ("${{ runner.os }}" STREQUAL "macOS") | |
set(buildcache_suffix "macos.zip") | |
elseif ("${{ runner.os }}" STREQUAL "Linux") | |
set(buildcache_suffix "linux.tar.gz") | |
endif() | |
set(buildcache_version $ENV{BUILDCACHE_VERSION}) | |
set(buildcache_url "https://github.com/mbitsnbites/buildcache/releases/download/v${buildcache_version}/buildcache-${buildcache_suffix}") | |
file(DOWNLOAD "${buildcache_url}" ./buildcache.zip) | |
execute_process(COMMAND ${CMAKE_COMMAND} -E tar xvf ./buildcache.zip) | |
if (NOT "${{ runner.os }}" STREQUAL "Windows") | |
execute_process( | |
COMMAND chmod +x buildcache/bin/buildcache | |
) | |
endif() | |
- name: Get current time | |
uses: josStorer/get-current-time@v2 | |
id: current-time | |
with: | |
format: YYYY-MM-DD | |
- name: Print time stamp | |
run: echo "timestamp ${{ steps.current-time.outputs.formattedTime }}" | |
- name: Cache Buildcache | |
id: cache-buildcache | |
uses: actions/cache@v4 | |
with: | |
path: ${{ env.BUILDCACHE_DIR }} | |
key: ${{ matrix.config.os }}-${{ matrix.config.cc }}-cache-v03-${{ steps.current-time.outputs.formattedTime }} | |
- name: Create Folder for buildcache | |
run: New-Item ${{ env.BUILDCACHE_DIR }} -ItemType "directory" -Force | |
shell: pwsh | |
- name: Add buildcache to system path | |
run: echo "${{github.workspace}}/buildcache/bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 | |
shell: pwsh | |
- name: Set apt mirror | |
# see https://github.com/actions/runner-images/issues/7048 | |
if: contains( matrix.config.os, 'ubuntu') | |
run: | | |
# make sure there is a `\t` between URL and `priority:*` attributes | |
printf 'http://azure.archive.ubuntu.com/ubuntu priority:1\n' | sudo tee /etc/apt/mirrors.txt | |
curl http://mirrors.ubuntu.com/mirrors.txt | sudo tee --append /etc/apt/mirrors.txt | |
sudo sed -i 's/http:\/\/azure.archive.ubuntu.com\/ubuntu\//mirror+file:\/etc\/apt\/mirrors.txt/' /etc/apt/sources.list | |
- name: Install Linux dependencies | |
if: contains( matrix.config.os, 'ubuntu') | |
run: | | |
sudo apt-get update --option="APT::Acquire::Retries=3" | |
sudo apt-get install --option="APT::Acquire::Retries=3" libxkbcommon-x11-0 libgl1-mesa-dev mesa-common-dev libglfw3-dev libglu1-mesa-dev libhdf5-dev | |
- name: Install gcc-10 | |
if: contains( matrix.config.cc, 'gcc') | |
run: | | |
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 100 --slave /usr/bin/g++ g++ /usr/bin/g++-10 --slave /usr/bin/gcov gcov /usr/bin/gcov-10 | |
- name: Install clang-16 | |
if: contains( matrix.config.cc, 'clang') | |
run: | | |
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 100 --slave /usr/bin/g++ g++ /usr/bin/g++-11 --slave /usr/bin/gcov gcov /usr/bin/gcov-11 | |
sudo apt-get upgrade | |
wget https://apt.llvm.org/llvm.sh | |
sudo chmod +x llvm.sh | |
sudo ./llvm.sh 16 all | |
- name: Install Qt | |
uses: jurplel/install-qt-action@v3 | |
with: | |
version: 5.12.12 | |
dir: "${{ github.workspace }}/Qt/" | |
cache: true | |
- name: Restore from cache and install vcpkg | |
uses: lukka/run-vcpkg@v7 | |
id: runvcpkg | |
with: | |
vcpkgArguments: "@${{ github.workspace }}/${{ matrix.config.vcpkg-response-file }}" | |
vcpkgDirectory: | |
"${{ github.workspace }}/ThirdParty/vcpkg" | |
appendedCacheKey: ${{ matrix.config.os }}-${{ matrix.config.cxx }}-cache-key-v2 | |
- name: Cache dynamic version of OpenSSL (Linux) | |
if: contains( matrix.config.os, 'ubuntu_disabled') | |
uses: actions/cache@v4 | |
with: | |
path: ${{ github.workspace }}/ThirdParty/vcpkg/installed/x64-linux-dynamic | |
key: ${{ matrix.config.os }}-vcpkg-x64-linux-dynamic_v05 | |
- name: Install dynamic version of OpenSSL (Linux) | |
if: contains( matrix.config.os, 'ubuntu') | |
run: | | |
$VCPKG_ROOT/vcpkg install --overlay-triplets=${{ github.workspace }}/ThirdParty/vcpkg-custom-triplets --triplet x64-linux-dynamic openssl | |
- name: Configure | |
shell: cmake -P {0} | |
run: | | |
set(ENV{CC} ${{ matrix.config.cc }}) | |
set(ENV{CXX} ${{ matrix.config.cxx }}) | |
execute_process( | |
COMMAND cmake | |
-S . | |
-B cmakebuild | |
-D CMAKE_BUILD_TYPE=$ENV{BUILD_TYPE} | |
-D CMAKE_INSTALL_PREFIX=cmakebuild/install | |
-D RESINSIGHT_BUNDLE_OPENSSL=true | |
-D RESINSIGHT_QT5_BUNDLE_LIBRARIES=true | |
-D RESINSIGHT_INCLUDE_APPLICATION_UNIT_TESTS=true | |
-D RESINSIGHT_TREAT_WARNINGS_AS_ERRORS=true | |
-D RESINSIGHT_ENABLE_PRECOMPILED_HEADERS=false | |
-D RESINSIGHT_ENABLE_UNITY_BUILD=${{ matrix.config.unity-build }} | |
-D RESINSIGHT_ENABLE_GRPC=${{ matrix.config.build-python-module }} | |
-D RESINSIGHT_GRPC_PYTHON_EXECUTABLE=${{ steps.python-path.outputs.PYTHON_EXECUTABLE }} | |
-D RESINSIGHT_GRPC_DOWNLOAD_PYTHON_MODULE=true | |
-D RESINSIGHT_ENABLE_HDF5=false | |
-D RESINSIGHT_BUILD_LIBS_FROM_SOURCE=false | |
-D CMAKE_TOOLCHAIN_FILE=ThirdParty/vcpkg/scripts/buildsystems/vcpkg.cmake | |
-G Ninja | |
RESULT_VARIABLE result | |
) | |
if (NOT result EQUAL 0) | |
message(FATAL_ERROR "Bad exit status") | |
endif() | |
- name: Build | |
shell: cmake -P {0} | |
run: | | |
set(ENV{NINJA_STATUS} "[%f/%t %o/sec] ") | |
execute_process( | |
COMMAND cmake --build cmakebuild --target install | |
RESULT_VARIABLE result | |
) | |
if (NOT result EQUAL 0) | |
message(FATAL_ERROR "Bad exit status") | |
endif() | |
- name: Stats for buildcache | |
run: ${{ github.workspace }}/buildcache/bin/buildcache -s | |
- name: Run Unit Tests | |
if: matrix.config.execute-unit-tests | |
shell: bash | |
run: | | |
cmakebuild/ApplicationLibCode/UnitTests/ResInsight-tests | |
- name: (Python) Check types using mypy | |
if: matrix.config.build-python-module | |
shell: bash | |
run: | | |
${{ steps.python-path.outputs.PYTHON_EXECUTABLE }} -m pip install mypy types-protobuf | |
cd GrpcInterface/Python/rips | |
${{ steps.python-path.outputs.PYTHON_EXECUTABLE }} -m mypy *.py generated/generated_classes.py | |
- name: Run pytest | |
if: matrix.config.execute-pytests | |
env: | |
RESINSIGHT_EXECUTABLE: ${{ runner.workspace }}/ResInsight/cmakebuild/ApplicationExeCode/ResInsight | |
run: | | |
cd GrpcInterface/Python | |
python setup.py sdist | |
cd rips | |
${{ steps.python-path.outputs.PYTHON_EXECUTABLE }} -m pytest --console | |
- name: Upload python distribution folder | |
if: matrix.config.publish-to-pypi | |
uses: actions/upload-artifact@v4 | |
with: | |
name: python-distribution | |
path: GrpcInterface/Python/dist | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ResInsight-${{ matrix.config.name }} | |
path: ${{ runner.workspace }}/ResInsight/cmakebuild/install | |
pypi-publish: | |
name: Upload release to PyPI | |
needs: build | |
runs-on: ubuntu-latest | |
environment: | |
name: pypi | |
url: https://pypi.org/p/rips | |
permissions: | |
id-token: write # IMPORTANT: this permission is mandatory for trusted publishing | |
# If this is a tagged release | |
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags') | |
steps: | |
- name: Download python distribution folder | |
uses: actions/download-artifact@v3 | |
with: | |
name: python-distribution | |
path: dist | |
- name: Display structure of downloaded files | |
run: ls -R | |
- name: Publish Python package to pypi | |
# https://docs.pypi.org/trusted-publishers/adding-a-publisher/ | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
# uncomment the two lines below to publish to test PyPi | |
# with: | |
# repository-url: https://test.pypi.org/legacy/ | |