Merge bugfix into feature branch #1103
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: Test build | |
on: | |
pull_request: | |
types: | |
- opened | |
- reopened | |
- synchronize | |
jobs: | |
changes: | |
name: Detect changes | |
runs-on: ubuntu-latest | |
outputs: | |
cpp: ${{ steps.filter.outputs.cpp }} | |
cpp_tests: ${{ steps.filter.outputs.cpp_tests }} | |
python: ${{ steps.filter.outputs.python }} | |
python_tests: ${{ steps.filter.outputs.python_tests }} | |
any: ${{ steps.filter.outputs.any }} | |
steps: | |
- name: Look up Git repository in cache | |
uses: actions/cache/restore@v4 | |
with: | |
path: .git/ | |
key: test-build-cache-git-${{ github.run_id }} | |
restore-keys: | | |
test-build-cache-git | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Detect changes | |
uses: dorny/paths-filter@v3 | |
id: filter | |
with: | |
filters: | | |
build_files: &build_files | |
- '.github/workflows/test_build.yml' | |
- 'build' | |
- 'build.bat' | |
- 'scons/**' | |
cpp: &cpp | |
- *build_files | |
- 'cpp/**/include/**' | |
- 'cpp/**/src/**' | |
- '**/*.pxd' | |
- '**/*.pyx' | |
- '**/meson.build' | |
cpp_tests: &cpp_tests | |
- *cpp | |
- 'cpp/**/test/**' | |
python: &python | |
- *build_files | |
- 'python/requirements.txt' | |
- 'python/**/mlrl/**' | |
python_tests: &python_tests | |
- *python | |
- *cpp_tests | |
- 'python/**/tests/**' | |
any: | |
- *cpp_tests | |
- *python_tests | |
- name: Save Git repository to cache | |
uses: actions/cache/save@v4 | |
if: success() || failure() | |
with: | |
path: .git/ | |
key: test-build-cache-git-${{ github.run_id }} | |
linux_build: | |
needs: changes | |
if: ${{ needs.changes.outputs.any == 'true' }} | |
name: Test Linux build | |
runs-on: ubuntu-latest | |
steps: | |
- name: Look up Git repository in cache | |
uses: actions/cache/restore@v4 | |
with: | |
path: .git/ | |
key: test-build-cache-git-${{ github.run_id }} | |
restore-keys: | | |
test-build-cache-git | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version-file: .version-python | |
- name: Install OpenCL | |
run: | | |
sudo apt update | |
sudo apt install -y opencl-headers ocl-icd-opencl-dev | |
- name: Install GoogleTest | |
run: sudo apt install -y googletest | |
- name: Prepare ccache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: ${{ runner.os }}-test-build-ccache | |
- name: Compile via GCC | |
if: ${{ needs.changes.outputs.cpp == 'true' }} | |
run: TEST_SUPPORT=enabled ./build compile_cpp | |
- name: Test C++ code | |
if: ${{ needs.changes.outputs.cpp_tests == 'true' }} | |
run: ./build tests_cpp | |
- name: Publish C++ test results | |
if: ${{ needs.changes.outputs.cpp_tests == 'true' }} && (success() || failure()) | |
uses: EnricoMi/publish-unit-test-result-action@v2 | |
with: | |
check_name: C++ Test Results | |
files: | | |
cpp/build/meson-logs/testlog.junit.xml | |
- name: Test Python code | |
if: ${{ needs.changes.outputs.python_tests == 'true' }} | |
run: ./build tests_python | |
- name: Publish Python test results | |
if: ${{ needs.changes.outputs.python_tests == 'true' }} && (success() || failure()) | |
uses: EnricoMi/publish-unit-test-result-action@v2 | |
with: | |
check_name: Python Test Results | |
files: | | |
python/build/test-results/*.xml | |
macos_build: | |
needs: changes | |
if: ${{ needs.changes.outputs.cpp == 'true' }} | |
name: Test MacOS build | |
runs-on: macos-latest | |
steps: | |
- name: Look up Git repository in cache | |
uses: actions/cache/restore@v4 | |
with: | |
path: .git/ | |
key: test-build-cache-git-${{ github.run_id }} | |
restore-keys: | | |
test-build-cache-git | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version-file: .version-python | |
- name: Install OpenMP | |
run: brew install libomp | |
- name: Install OpenCL | |
run: brew install opencl-clhpp-headers | |
- name: Prepare ccache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: ${{ runner.os }}-test-build-ccache | |
- name: Compile via Clang | |
run: TEST_SUPPORT=disabled CPLUS_INCLUDE_PATH=/opt/homebrew/opt/libomp/include/:/opt/homebrew/opt/opencl-clhpp-headers/include/ | |
LIBRARY_PATH=/opt/homebrew/opt/libomp/lib/ ./build compile | |
windows_build: | |
needs: changes | |
if: ${{ needs.changes.outputs.cpp == 'true' }} | |
name: Test Windows build | |
runs-on: windows-latest | |
env: | |
SCCACHE_GHA_ENABLED: 'true' | |
steps: | |
- name: Look up Git repository in cache | |
uses: actions/cache/restore@v4 | |
with: | |
enableCrossOsArchive: true | |
path: .git/ | |
key: test-build-cache-git-${{ github.run_id }} | |
restore-keys: | | |
test-build-cache-git | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version-file: .version-python | |
- name: Prepare MSVC | |
uses: ilammy/msvc-dev-cmd@v1 | |
- name: Install OpenCL | |
uses: johnwason/vcpkg-action@v6 | |
with: | |
pkgs: opencl | |
triplet: x64-windows | |
token: ${{ github.token }} | |
- name: Prepare sccache | |
uses: mozilla-actions/[email protected] | |
- name: Compile via MSVC | |
run: |- | |
$env:TEST_SUPPORT = "disabled" | |
$env:INCLUDE += ";$($pwd.Path)\vcpkg\packages\opencl_x64-windows\include" | |
$env:LIB += ";$($pwd.Path)\vcpkg\packages\opencl_x64-windows\lib" | |
./build.bat compile |