# 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