Revert indexing change in rotated samples (#296 | GRIDEDIT-889) #883
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: Build and test on macos | |
on: | |
push: | |
branches: | |
- master | |
- "release/v[0-9].[0-9].[0-9]" | |
pull_request: | |
types: | |
- opened # triggers build when opened | |
- synchronize # triggers build when commits are pushed to HEAD | |
branches: | |
- master | |
- "release/v[0-9].[0-9].[0-9]" | |
- "feature/**" | |
# Manual trigger | |
workflow_dispatch: | |
jobs: | |
build: | |
# Build strategy | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: | |
# - ubuntu-latest | |
- macos-latest | |
- macos-13-xlarge | |
build_type: | |
- 'Release' | |
#- 'Debug' | |
#- 'DebugWithRelInfo ' | |
# Build platform | |
runs-on: ${{ matrix.platform }} | |
name: ${{ matrix.platform }}-${{ matrix.build_type }} | |
# The default compiler on macos is clang, switch to gcc 11. Specifying the version is necessary. | |
# It seems like gcc and g++ are symbolic links to the default clang and clang++ compilers, respectively. | |
# CMAKE_CXX_COMPILER_ID will evaluate to AppleClang rather than GNU on macos. | |
env: | |
CC: gcc-11 | |
CXX: g++-11 | |
# Build steps | |
steps: | |
# Step: Checkout | |
- name: Checkout | |
uses: actions/checkout@v4 | |
# Workaround for getting "git describe --tags" to work in cmake/get_version_from_git.cmake (Build step) | |
with: | |
fetch-depth: 0 | |
# Step: Set paths | |
- name: Set paths | |
id: paths | |
run : | | |
echo "build_dir=${{ github.workspace }}/build" >> $GITHUB_OUTPUT | |
echo "ext_deps_dir=${{ github.workspace }}/external_dependencies" >> $GITHUB_OUTPUT | |
echo "install_dir=${{ github.workspace }}/install" >> $GITHUB_OUTPUT | |
- name: Install system-provided dependencies | |
run: | | |
if [ "${{ runner.os }}" == "macOS" ]; then | |
brew install boost doxygen netcdf | |
elif [ "${{ runner.os }}" == "Linux" ]; then | |
sudo apt-get install libboost-all-dev doxygen | |
fi | |
# Step: Restore cached user-provided dependencies | |
- if: runner.os != 'macOS' | |
name: Restore cached user-provided dependencies | |
uses: actions/cache/restore@v3 | |
id: restore-cached-external-dependencies | |
with: | |
key: ${{ runner.os }}-cache-key | |
restore-keys: ${{ runner.os }}-cache-key | |
path: ${{ steps.paths.outputs.ext_deps_dir }}/netcdf-c/install/netcdf-c | |
# Step: Build and install user-provided dependencies, executes only if no cache restored | |
- name: Build and install user-provided dependencies | |
if: runner.os != 'macOS' && steps.restore-cached-external-dependencies.outputs.cache-hit != 'true' | |
# NetCDF Dependencies m4, curl, and openssl are provided by the build machine | |
run: > | |
pwsh ${{ github.workspace }}/scripts/install_netcdf_static.ps1 | |
-WorkDir ${{ steps.paths.outputs.ext_deps_dir }}/netcdf-c/work | |
-InstallDir ${{ steps.paths.outputs.ext_deps_dir }}/netcdf-c/install | |
-BuildType '${{ matrix.build_type }}' | |
-ParallelJobs 10 | |
# Step: Cache user-provided dependencies, executes only if no cache restored | |
- name: Cache user-provided dependencies | |
uses: actions/cache/save@v3 | |
if: runner.os != 'macOS' && steps.restore-cached-external-dependencies.outputs.cache-hit != 'true' | |
with: | |
key: ${{ runner.os }}-cache-key | |
path: ${{ steps.paths.outputs.ext_deps_dir }}/netcdf-c/install/netcdf-c | |
# Step: CMake configuration | |
- name: Configure | |
run: > | |
cmake | |
-S ${{ github.workspace }} | |
-B ${{ steps.paths.outputs.build_dir }} | |
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }} | |
-DCMAKE_PREFIX_PATH=${{ steps.paths.outputs.ext_deps_dir }}/netcdf-c/install/netcdf-c | |
-DCMAKE_INSTALL_PREFIX=${{ steps.paths.outputs.install_dir }} | |
# Step: CMake build | |
- name: Build | |
run: cmake --build ${{ steps.paths.outputs.build_dir }} --config ${{ matrix.build_type }} -j | |
# Step: Test | |
# Works if runner.os == 'Linux' or runner.os == 'macOS' | |
# if runner.os == 'Windows', /matrix.build_type needs to be inserted before /tests | |
- name: Test | |
run: | | |
echo -e "\n*************** MeshKernel Tests ***************\n" | |
${{ steps.paths.outputs.build_dir }}/libs/MeshKernel/tests/MeshKernelUnitTests | |
echo -e "\n\n*************** MeshKernel API Tests ***************\n" | |
${{ steps.paths.outputs.build_dir }}/libs/MeshKernelApi/tests/MeshKernelApiUnitTests | |
# Step: CMake install | |
- name: Install | |
run: cmake --install ${{ steps.paths.outputs.build_dir }} | |
# Step: Upload artifacts | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
if: always() | |
with: | |
name: meshkernel-${{ matrix.platform }}-${{ matrix.build_type }} | |
path: ${{ steps.paths.outputs.install_dir }} | |
if-no-files-found: error |