1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-06-30 12:14:08 +03:00
occt/.github/workflows/build-and-test-multiplatform.yml
Pasukhin Dmitry e82126db69
Testing - IR integration enable concurrency (#531)
Fix concurrency cancel-in-progress condition in CI workflow for IR branch
2025-05-15 15:20:27 +01:00

558 lines
14 KiB
YAML

# This workflow builds and tests OCCT on multiple platforms (Windows, macOS, Linux with Clang, and Linux with GCC).
# It is triggered on pull requests to any branch.
# The workflow includes steps to prepare and build the project on each platform, run tests, and upload the results.
# Concurrency is set to ensure that only one instance of the workflow runs per pull request at a time.
name: Build and Test OCCT on Multiple Platforms
on:
pull_request:
branches:
- '**'
push:
branches:
- 'master'
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number }}
cancel-in-progress: ${{ !(github.ref == 'refs/heads/IR' && github.repository == 'Open-Cascade-SAS/OCCT') }}
jobs:
clang-format:
name: Check code formatting
runs-on: windows-2022
steps:
- name: Checkout repository
uses: actions/checkout@v4.1.7
with:
fetch-depth: 0
- name: Run clang-format check
uses: ./.github/actions/clang-format-check
with:
base-ref: ${{ github.event.pull_request.base.ref || 'master' }}
documentation:
name: Build Documentation
runs-on: windows-2022
steps:
- name: Checkout repository
uses: actions/checkout@v4.2.1
- name: Build documentation
uses: ./.github/actions/build-docs
prepare-and-build-windows-x64:
name: Prepare and Build on Windows with MSVC (x64)
runs-on: windows-2022
steps:
- name: Checkout repository
uses: actions/checkout@v4.1.7
- name: Build OCCT
uses: ./.github/actions/build-occt
with:
platform: windows
compiler: msvc
artifact-name: install-windows-x64
prepare-and-build-windows-clang-x64:
name: Prepare and Build on Windows with Clang (x64)
runs-on: windows-2022
steps:
- name: Checkout repository
uses: actions/checkout@v4.1.7
- name: Build OCCT
uses: ./.github/actions/build-occt
with:
platform: windows
compiler: clang
artifact-name: install-windows-clang-x64
use-vtk: 'false'
prepare-and-build-macos-x64:
name: Prepare and Build on macOS with Clang (x64)
runs-on: macos-15
steps:
- name: Checkout repository
uses: actions/checkout@v4.1.7
- name: Build OCCT
uses: ./.github/actions/build-occt
with:
platform: macos
compiler: clang
artifact-name: install-macos-x64
prepare-and-build-macos-gcc-x64:
name: Prepare and Build on macOS with GCC (x64)
runs-on: macos-15
steps:
- name: Checkout repository
uses: actions/checkout@v4.1.7
- name: Build OCCT
uses: ./.github/actions/build-occt
with:
platform: macos
compiler: gcc
artifact-name: install-macos-gcc-x64
prepare-and-build-linux-clang-x64:
name: Prepare and Build on Ubuntu with Clang (x64)
runs-on: ubuntu-24.04
steps:
- name: Checkout repository
uses: actions/checkout@v4.1.7
- name: Build OCCT
uses: ./.github/actions/build-occt
with:
platform: linux
compiler: clang
artifact-name: install-linux-clang-x64
prepare-and-build-linux-gcc-x64:
name: Prepare and Build on Ubuntu with GCC (x64)
runs-on: ubuntu-24.04
steps:
- name: Checkout repository
uses: actions/checkout@v4.1.7
- name: Build OCCT
uses: ./.github/actions/build-occt
with:
platform: linux
compiler: gcc
artifact-name: install-linux-gcc-x64
build-inspector-windows:
name: Build TInspector on Windows
needs: prepare-and-build-windows-x64
runs-on: windows-2022
steps:
- name: Checkout repository
uses: actions/checkout@v4.1.7
- name: Build TInspector
uses: ./.github/actions/build-tinspector
with:
platform: windows
install-artifact-name: install-windows-x64
build-inspector-linux:
name: Build TInspector on Linux
needs: prepare-and-build-linux-clang-x64
runs-on: ubuntu-24.04
steps:
- name: Checkout repository
uses: actions/checkout@v4.1.7
- name: Build TInspector
uses: ./.github/actions/build-tinspector
with:
platform: linux
install-artifact-name: install-linux-clang-x64
build-csharp-windows:
name: Build CSharp Sample on Windows
needs: prepare-and-build-windows-x64
runs-on: windows-2022
steps:
- name: Checkout repository
uses: actions/checkout@v4.1.7
- name: Build CSharp Sample
uses: ./.github/actions/build-sample-csharp
with:
platform: windows
install-artifact-name: install-windows-x64
build-mfc-windows:
name: Build MFC Sample on Windows
needs: prepare-and-build-windows-x64
runs-on: windows-2022
steps:
- name: Checkout repository
uses: actions/checkout@v4.1.7
- name: Build MFC Sample
uses: ./.github/actions/build-sample-mfc
with:
platform: windows
install-artifact-name: install-windows-x64
build-qt-windows:
name: Build Qt Sample on Windows
needs: prepare-and-build-windows-x64
runs-on: windows-2022
steps:
- name: Checkout repository
uses: actions/checkout@v4.1.7
- name: Build Qt Sample
uses: ./.github/actions/build-sample-qt
with:
platform: windows
install-artifact-name: install-windows-x64
build-qt-linux:
name: Build Qt Sample on Linux
needs: prepare-and-build-linux-clang-x64
runs-on: ubuntu-24.04
steps:
- name: Checkout repository
uses: actions/checkout@v4.1.7
- name: Build Qt Sample
uses: ./.github/actions/build-sample-qt
with:
platform: linux
install-artifact-name: install-linux-clang-x64
test-windows-x64:
name: Test on Windows (x64)
runs-on: windows-2022
needs: prepare-and-build-windows-x64
steps:
- name: Checkout repository
uses: actions/checkout@v4.1.7
- name: Run tests
uses: ./.github/actions/run-tests
with:
platform: windows
compiler: msvc
install-artifact-name: install-windows-x64
test-directory-name: windows-x64
test-script: .github/actions/testgrid/testwindows.tcl
retest-windows-x64:
name: Regression Test on Windows (x64)
runs-on: windows-2022
needs: test-windows-x64
steps:
- name: Checkout repository
uses: actions/checkout@v4.1.7
- name: Run retest
uses: ./.github/actions/retest-failures
with:
platform: windows
compiler: msvc
install-artifact-name: install-windows-x64
results-artifact-name: results-windows-x64
test-directory-name: windows-x64
test-windows-clang-x64:
name: Test on Windows with Clang (x64)
runs-on: windows-2022
needs: prepare-and-build-windows-clang-x64
steps:
- name: Checkout repository
uses: actions/checkout@v4.1.7
- name: Run tests
uses: ./.github/actions/run-tests
with:
platform: windows
compiler: clang
install-artifact-name: install-windows-clang-x64
test-directory-name: windows-clang-x64
test-script: .github/actions/testgrid/testwindowsclang.tcl
retest-windows-clang-x64:
name: Regression Test on Windows with Clang (x64)
runs-on: windows-2022
needs: test-windows-clang-x64
steps:
- name: Checkout repository
uses: actions/checkout@v4.1.7
- name: Run retest
uses: ./.github/actions/retest-failures
with:
platform: windows
compiler: clang
install-artifact-name: install-windows-clang-x64
results-artifact-name: results-windows-clang-x64
test-directory-name: windows-clang-x64
test-macos-x64:
name: Test on macOS (x64)
runs-on: macos-15
needs: prepare-and-build-macos-x64
steps:
- name: Checkout repository
uses: actions/checkout@v4.1.7
- name: Run tests
uses: ./.github/actions/run-tests
with:
platform: macos
compiler: clang
install-artifact-name: install-macos-x64
test-directory-name: macos-x64
test-script: .github/actions/testgrid/testmacos.tcl
retest-macos-x64:
name: Regression Test on macOS (x64)
runs-on: macos-15
needs: test-macos-x64
steps:
- name: Checkout repository
uses: actions/checkout@v4.1.7
- name: Run retest
uses: ./.github/actions/retest-failures
with:
platform: macos
compiler: clang
install-artifact-name: install-macos-x64
results-artifact-name: results-macos-x64
test-directory-name: macos-x64
test-macos-gcc-x64:
name: Test on macOS with GCC (x64)
runs-on: macos-15
needs: prepare-and-build-macos-gcc-x64
steps:
- name: Checkout repository
uses: actions/checkout@v4.1.7
- name: Run tests
uses: ./.github/actions/run-tests
with:
platform: macos
compiler: gcc
install-artifact-name: install-macos-gcc-x64
test-directory-name: macos-gcc-x64
test-script: .github/actions/testgrid/testmacosgcc.tcl
retest-macos-gcc-x64:
name: Regression Test on macOS with GCC (x64)
runs-on: macos-15
needs: test-macos-gcc-x64
steps:
- name: Checkout repository
uses: actions/checkout@v4.1.7
- name: Run retest
uses: ./.github/actions/retest-failures
with:
platform: macos
compiler: gcc
install-artifact-name: install-macos-gcc-x64
results-artifact-name: results-macos-gcc-x64
test-directory-name: macos-gcc-x64
test-linux-clang-x64:
name: Test on Linux with Clang (x64)
runs-on: ubuntu-24.04
needs: prepare-and-build-linux-clang-x64
steps:
- name: Checkout repository
uses: actions/checkout@v4.1.7
- name: Run tests
uses: ./.github/actions/run-tests
with:
platform: linux
compiler: clang
install-artifact-name: install-linux-clang-x64
test-directory-name: linux-clang-x64
test-script: .github/actions/testgrid/testlinuxclang.tcl
retest-linux-clang-x64:
name: Regression Test on Linux with Clang (x64)
runs-on: ubuntu-24.04
needs: test-linux-clang-x64
steps:
- name: Checkout repository
uses: actions/checkout@v4.1.7
- name: Run retest
uses: ./.github/actions/retest-failures
with:
platform: linux
compiler: clang
install-artifact-name: install-linux-clang-x64
results-artifact-name: results-linux-clang-x64
test-directory-name: linux-clang-x64
test-linux-gcc-x64:
name: Test on Linux with GCC (x64)
runs-on: ubuntu-24.04
needs: prepare-and-build-linux-gcc-x64
steps:
- name: Checkout repository
uses: actions/checkout@v4.1.7
- name: Run tests
uses: ./.github/actions/run-tests
with:
platform: linux
compiler: gcc
install-artifact-name: install-linux-gcc-x64
test-directory-name: linux-gcc-x64
test-script: .github/actions/testgrid/testlinuxgcc.tcl
retest-linux-gcc-x64:
name: Regression Test on Linux with GCC (x64)
runs-on: ubuntu-24.04
needs: test-linux-gcc-x64
steps:
- name: Checkout repository
uses: actions/checkout@v4.1.7
- name: Run retest
uses: ./.github/actions/retest-failures
with:
platform: linux
compiler: gcc
install-artifact-name: install-linux-gcc-x64
results-artifact-name: results-linux-gcc-x64
test-directory-name: linux-gcc-x64
run-gtest-windows-x64:
name: Run GTest on Windows with MSVC (x64)
needs: prepare-and-build-windows-x64
runs-on: windows-2022
steps:
- name: Checkout repository
uses: actions/checkout@v4.1.7
- name: Run GTests
uses: ./.github/actions/run-gtest
with:
platform: windows
compiler: msvc
install-artifact-name: install-windows-x64
artifact-suffix: x64
run-gtest-windows-clang-x64:
name: Run GTest on Windows with Clang (x64)
needs: prepare-and-build-windows-clang-x64
runs-on: windows-2022
steps:
- name: Checkout repository
uses: actions/checkout@v4.1.7
- name: Run GTests
uses: ./.github/actions/run-gtest
with:
platform: windows
compiler: clang
install-artifact-name: install-windows-clang-x64
artifact-suffix: x64
run-gtest-macos-x64:
name: Run GTest on macOS with Clang (x64)
needs: prepare-and-build-macos-x64
runs-on: macos-15
steps:
- name: Checkout repository
uses: actions/checkout@v4.1.7
- name: Run GTests
uses: ./.github/actions/run-gtest
with:
platform: macos
compiler: clang
install-artifact-name: install-macos-x64
artifact-suffix: x64
run-gtest-macos-gcc-x64:
name: Run GTest on macOS with GCC (x64)
needs: prepare-and-build-macos-gcc-x64
runs-on: macos-15
steps:
- name: Checkout repository
uses: actions/checkout@v4.1.7
- name: Run GTests
uses: ./.github/actions/run-gtest
with:
platform: macos
compiler: gcc
install-artifact-name: install-macos-gcc-x64
artifact-suffix: x64
run-gtest-linux-clang-x64:
name: Run GTest on Linux with Clang (x64)
needs: prepare-and-build-linux-clang-x64
runs-on: ubuntu-24.04
steps:
- name: Checkout repository
uses: actions/checkout@v4.1.7
- name: Run GTests
uses: ./.github/actions/run-gtest
with:
platform: linux
compiler: clang
install-artifact-name: install-linux-clang-x64
artifact-suffix: x64
run-gtest-linux-gcc-x64:
name: Run GTest on Linux with GCC (x64)
needs: prepare-and-build-linux-gcc-x64
runs-on: ubuntu-24.04
steps:
- name: Checkout repository
uses: actions/checkout@v4.1.7
- name: Run GTests
uses: ./.github/actions/run-gtest
with:
platform: linux
compiler: gcc
install-artifact-name: install-linux-gcc-x64
artifact-suffix: x64
test-summary:
name: 'Summarize Test Results'
runs-on: ubuntu-24.04
if: ${{ !cancelled() && github.event_name == 'pull_request' }}
needs: [retest-windows-x64, retest-windows-clang-x64, retest-macos-x64, retest-macos-gcc-x64, retest-linux-clang-x64, retest-linux-gcc-x64]
steps:
- name: Checkout repository
uses: actions/checkout@v4.1.7
- name: Generate Test Summary
uses: ./.github/actions/test-summary