Skip to content

Fix: apply first-load options using matched config group on initial r… #10826

Fix: apply first-load options using matched config group on initial r…

Fix: apply first-load options using matched config group on initial r… #10826

Workflow file for this run

name: CI
on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review, labeled]
paths-ignore:
- "doc/**"
- "_config.yml"
push:
branches:
- master
concurrency:
group: "${{ github.workflow }}-${{ github.ref_name }}"
cancel-in-progress: true
jobs:
#----------------------------------------------------------------------------
# Default versions: Set default version for all dependencies
#----------------------------------------------------------------------------
default_versions:
runs-on: ubuntu-22.04
name: Set default versions
if: |
contains(github.event.pull_request.labels.*.name, 'ci:fast') ||
contains(github.event.pull_request.labels.*.name, 'ci:main') ||
contains(github.event.pull_request.labels.*.name, 'ci:full') ||
github.ref == 'refs/heads/master'
outputs:
alembic_min_version: ${{ steps.set_default_versions.outputs.alembic_min_version }}
alembic_version: ${{ steps.set_default_versions.outputs.alembic_version }}
assimp_min_version: ${{ steps.set_default_versions.outputs.assimp_min_version }}
assimp_version: ${{ steps.set_default_versions.outputs.assimp_version }}
blosc_min_version: ${{ steps.set_default_versions.outputs.blosc_min_version }}
blosc_version: ${{ steps.set_default_versions.outputs.blosc_version }}
draco_min_version: ${{ steps.set_default_versions.outputs.draco_min_version }}
draco_version: ${{ steps.set_default_versions.outputs.draco_version }}
imath_min_version: ${{ steps.set_default_versions.outputs.imath_min_version }}
imath_version: ${{ steps.set_default_versions.outputs.imath_version }}
java_min_version: ${{ steps.set_default_versions.outputs.java_min_version }}
java_version: ${{ steps.set_default_versions.outputs.java_version }}
occt_min_version: ${{ steps.set_default_versions.outputs.occt_min_version }}
occt_version: ${{ steps.set_default_versions.outputs.occt_version }}
openexr_min_version: ${{ steps.set_default_versions.outputs.openexr_min_version }}
openexr_version: ${{ steps.set_default_versions.outputs.openexr_version }}
openvdb_min_version: ${{ steps.set_default_versions.outputs.openvdb_min_version }}
openvdb_version: ${{ steps.set_default_versions.outputs.openvdb_version }}
ospray_min_version: ${{ steps.set_default_versions.outputs.ospray_min_version }}
ospray_version: ${{ steps.set_default_versions.outputs.ospray_version }}
pybind11_min_version: ${{ steps.set_default_versions.outputs.pybind11_min_version }}
pybind11_version: ${{ steps.set_default_versions.outputs.pybind11_version }}
python_min_version: ${{ steps.set_default_versions.outputs.python_min_version }}
python_version: ${{ steps.set_default_versions.outputs.python_version }}
tbb_min_version: ${{ steps.set_default_versions.outputs.tbb_min_version }}
tbb_version: ${{ steps.set_default_versions.outputs.tbb_version }}
usd_min_version: ${{ steps.set_default_versions.outputs.usd_min_version }}
usd_version: ${{ steps.set_default_versions.outputs.usd_version }}
webp_min_version: ${{ steps.set_default_versions.outputs.webp_min_version }}
webp_version: ${{ steps.set_default_versions.outputs.webp_version }}
zlib_min_version: ${{ steps.set_default_versions.outputs.zlib_min_version }}
zlib_version: ${{ steps.set_default_versions.outputs.zlib_version }}
vtk_commit_sha: ${{ steps.set_default_versions.outputs.vtk_commit_sha }}
timestamp: ${{ steps.set_default_versions.outputs.timestamp }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
path: "source"
fetch-depth: 1
lfs: false
- name: Set default versions
id: set_default_versions
uses: f3d-app/default-versions-action@main
with:
file: ./source/.github/workflows/versions.json
#----------------------------------------------------------------------------
# Cache LFS: Checkout LFS data and update the cache to limit LFS bandwidth
#----------------------------------------------------------------------------
cache_lfs:
runs-on: ubuntu-22.04
name: Update LFS data cache
if: |
contains(github.event.pull_request.labels.*.name, 'ci:fast') ||
contains(github.event.pull_request.labels.*.name, 'ci:main') ||
contains(github.event.pull_request.labels.*.name, 'ci:full') ||
github.ref == 'refs/heads/master'
outputs:
lfs_sha: ${{ steps.lfs_sha_recover.outputs.lfs_sha }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
path: "source"
fetch-depth: 1
lfs: false
- name: Cache LFS Data
id: lfs_sha_recover
uses: f3d-app/lfs-data-cache-action@v1
with:
cache_postfix: cache-0
#----------------------------------------------------------------------------
# Cache Dependencies: Checkout and compile all dependencies but VTK if not cached
#----------------------------------------------------------------------------
cache_dependencies:
name: Cache dependencies
needs: default_versions
if: |
contains(github.event.pull_request.labels.*.name, 'ci:main') ||
contains(github.event.pull_request.labels.*.name, 'ci:full') ||
github.ref == 'refs/heads/master'
strategy:
fail-fast: false
matrix:
os: [ubuntu-22.04, windows-latest, macos-13, macos-14]
build_type: [standard]
include:
- cpu: x86_64
- os: macos-14
cpu: arm64
- alembic_version: ${{needs.default_versions.outputs.alembic_version}}
- assimp_version: ${{needs.default_versions.outputs.assimp_version}}
- blosc_version: ${{needs.default_versions.outputs.blosc_version}}
- draco_version: ${{needs.default_versions.outputs.draco_version}}
- imath_version: ${{needs.default_versions.outputs.imath_version}}
- occt_version: ${{needs.default_versions.outputs.occt_version}}
- openexr_version: ${{needs.default_versions.outputs.openexr_version}}
- openvdb_version: ${{needs.default_versions.outputs.openvdb_version}}
- ospray_version: ${{needs.default_versions.outputs.ospray_version}}
- pybind11_version: ${{needs.default_versions.outputs.pybind11_version}}
- tbb_version: ${{needs.default_versions.outputs.tbb_version}}
- usd_version: ${{needs.default_versions.outputs.usd_version}}
- webp_version: ${{needs.default_versions.outputs.webp_version}}
- zlib_version: ${{needs.default_versions.outputs.zlib_version}}
- build_type: mindeps
os: ubuntu-22.04
cpu: x86_64
alembic_version: ${{needs.default_versions.outputs.alembic_min_version}}
assimp_version: ${{needs.default_versions.outputs.assimp_min_version}}
blosc_version: ${{needs.default_versions.outputs.blosc_min_version}}
draco_version: ${{needs.default_versions.outputs.draco_min_version}}
imath_version: ${{needs.default_versions.outputs.imath_min_version}}
occt_version: ${{needs.default_versions.outputs.occt_min_version}}
openexr_version: ${{needs.default_versions.outputs.openexr_min_version}}
openvdb_version: ${{needs.default_versions.outputs.openvdb_min_version}}
ospray_version: ${{needs.default_versions.outputs.ospray_min_version}}
pybind11_version: ${{needs.default_versions.outputs.pybind11_min_version}}
tbb_version: ${{needs.default_versions.outputs.tbb_min_version}}
usd_version: ${{needs.default_versions.outputs.usd_min_version}}
webp_version: ${{needs.default_versions.outputs.webp_min_version}}
zlib_version: ${{needs.default_versions.outputs.zlib_min_version}}
runs-on: ${{matrix.os}}
container: ${{ matrix.os == 'ubuntu-22.04' && 'ghcr.io/f3d-app/f3d-ci' || null }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
path: "source"
fetch-depth: 1
lfs: false
- name: Generic Dependencies
uses: ./source/.github/actions/generic-dependencies
with:
cpu: ${{matrix.cpu}}
alembic_version: ${{matrix.alembic_version}}
assimp_version: ${{matrix.assimp_version}}
blosc_version: ${{matrix.blosc_version}}
draco_version: ${{matrix.draco_version}}
imath_version: ${{matrix.imath_version}}
occt_version: ${{matrix.occt_version}}
openexr_version: ${{matrix.openexr_version}}
openvdb_version: ${{matrix.openvdb_version}}
ospray_version: ${{matrix.ospray_version}}
pybind11_version: ${{matrix.pybind11_version}}
tbb_version: ${{matrix.tbb_version}}
usd_version: ${{matrix.usd_version}}
webp_version: ${{matrix.webp_version}}
zlib_version: ${{matrix.zlib_version}}
#----------------------------------------------------------------------------
# Cache VTK Dependency: Checkout and compile VTK if not cached
#----------------------------------------------------------------------------
cache_vtk_dependency:
name: Cache VTK dependency
needs: [default_versions, cache_dependencies]
if: |
contains(github.event.pull_request.labels.*.name, 'ci:main') ||
contains(github.event.pull_request.labels.*.name, 'ci:full') ||
github.ref == 'refs/heads/master'
strategy:
fail-fast: false
matrix:
os: [ubuntu-22.04, windows-latest, macos-13, macos-14]
vtk_version:
[
"${{needs.default_versions.outputs.vtk_commit_sha}}",
v9.5.0,
v9.4.2,
v9.3.1,
v9.2.6,
]
build_type: [standard]
exclude:
- os: macos-13
vtk_version: v9.3.1
- os: macos-13
vtk_version: v9.2.6
- os: macos-14
vtk_version: v9.3.1
- os: macos-14
vtk_version: v9.2.6
include:
- cpu: x86_64
- blosc_version: ${{needs.default_versions.outputs.blosc_version}}
- openvdb_version: ${{needs.default_versions.outputs.openvdb_version}}
- ospray_version: ${{needs.default_versions.outputs.ospray_version}}
- tbb_version: ${{needs.default_versions.outputs.tbb_version}}
- zlib_version: ${{needs.default_versions.outputs.zlib_version}}
- os: macos-14
cpu: arm64
- build_type: mindeps
os: ubuntu-22.04
vtk_version: ${{needs.default_versions.outputs.vtk_commit_sha}}
cpu: x86_64
blosc_version: ${{needs.default_versions.outputs.blosc_min_version}}
openvdb_version: ${{needs.default_versions.outputs.openvdb_min_version}}
ospray_version: ${{needs.default_versions.outputs.ospray_min_version}}
tbb_version: ${{needs.default_versions.outputs.tbb_min_version}}
zlib_version: ${{needs.default_versions.outputs.zlib_min_version}}
- build_type: no_optional_deps
os: ubuntu-22.04
vtk_version: ${{needs.default_versions.outputs.vtk_commit_sha}}
cpu: x86_64
blosc_version: ${{needs.default_versions.outputs.blosc_version}}
tbb_version: ${{needs.default_versions.outputs.tbb_version}}
zlib_version: ${{needs.default_versions.outputs.zlib_version}}
- build_type: no_raytracing
os: ubuntu-22.04
vtk_version: ${{needs.default_versions.outputs.vtk_commit_sha}}
cpu: x86_64
blosc_version: ${{needs.default_versions.outputs.blosc_version}}
openvdb_version: ${{needs.default_versions.outputs.openvdb_version}}
tbb_version: ${{needs.default_versions.outputs.tbb_version}}
zlib_version: ${{needs.default_versions.outputs.zlib_version}}
runs-on: ${{matrix.os}}
container: ${{ matrix.os == 'ubuntu-22.04' && 'ghcr.io/f3d-app/f3d-ci' || null }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
path: "source"
fetch-depth: 1
lfs: false
- name: Dependencies Dir
shell: bash
working-directory: ${{github.workspace}}
run: |
mkdir dependencies
cd dependencies
mkdir install
- name: Install VTK dependencies
uses: ./source/.github/actions/vtk-dependencies
with:
cpu: ${{matrix.cpu}}
openvdb_version: ${{matrix.openvdb_version}}
blosc_version: ${{matrix.blosc_version}}
tbb_version: ${{matrix.tbb_version}}
zlib_version: ${{matrix.zlib_version}}
- name: Install Raytracing Dependencies
if: matrix.ospray_version != ''
uses: ./source/.github/actions/ospray-sb-install-dep
with:
version: ${{matrix.ospray_version}}
cpu: ${{matrix.cpu}}
- name: VTK dependency
uses: ./source/.github/actions/vtk-install-dep
with:
vtk_version: ${{matrix.vtk_version}}
cpu: ${{matrix.cpu}}
blosc_version: ${{matrix.blosc_version}}
openvdb_version: ${{matrix.openvdb_version}}
ospray_version: ${{matrix.ospray_version}}
tbb_version: ${{matrix.tbb_version}}
zlib_version: ${{matrix.zlib_version}}
#----------------------------------------------------------------------------
# Windows CI: Build and test, cross-vtk build matrix
#----------------------------------------------------------------------------
windows:
needs: [cache_lfs, cache_vtk_dependency, default_versions]
if: |
contains(github.event.pull_request.labels.*.name, 'ci:main') ||
contains(github.event.pull_request.labels.*.name, 'ci:full') ||
github.ref == 'refs/heads/master'
strategy:
fail-fast: false
matrix:
vtk_version:
[
"${{needs.default_versions.outputs.vtk_commit_sha}}",
v9.5.0,
v9.4.2,
v9.3.1,
v9.2.6,
]
static_label: [no-static]
include:
- vtk_version: ${{needs.default_versions.outputs.vtk_commit_sha}}
static_label: static
runs-on: windows-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
path: "source"
fetch-depth: 0
lfs: false
- name: Generic CI
uses: ./source/.github/actions/generic-ci
with:
vtk_version: ${{matrix.vtk_version}}
static_label: ${{matrix.static_label}}
lfs_sha: ${{ needs.cache_lfs.outputs.lfs_sha}}
alembic_version: ${{needs.default_versions.outputs.alembic_version}}
assimp_version: ${{needs.default_versions.outputs.assimp_version}}
blosc_version: ${{needs.default_versions.outputs.blosc_version}}
draco_version: ${{needs.default_versions.outputs.draco_version}}
imath_version: ${{needs.default_versions.outputs.imath_version}}
java_version: ${{needs.default_versions.outputs.java_version}}
occt_version: ${{needs.default_versions.outputs.occt_version}}
openexr_version: ${{needs.default_versions.outputs.openexr_version}}
openvdb_version: ${{needs.default_versions.outputs.openvdb_version}}
ospray_version: ${{needs.default_versions.outputs.ospray_version}}
pybind11_version: ${{needs.default_versions.outputs.pybind11_version}}
python_version: ${{needs.default_versions.outputs.python_version}}
tbb_version: ${{needs.default_versions.outputs.tbb_version}}
usd_version: ${{needs.default_versions.outputs.usd_version}}
webp_version: ${{needs.default_versions.outputs.webp_version}}
zlib_version: ${{needs.default_versions.outputs.zlib_version}}
#----------------------------------------------------------------------------
# Linux fast CI: Build and test a single fast CI
#----------------------------------------------------------------------------
linux_fast:
needs: [cache_lfs, default_versions]
if: |
contains(github.event.pull_request.labels.*.name, 'ci:fast') ||
contains(github.event.pull_request.labels.*.name, 'ci:main') ||
contains(github.event.pull_request.labels.*.name, 'ci:full') ||
github.ref == 'refs/heads/master'
runs-on: ubuntu-22.04
container: ghcr.io/f3d-app/f3d-ci
env:
DISPLAY: :0
steps:
- name: Checkout
uses: actions/checkout@v4
with:
path: "source"
fetch-depth: 0
lfs: false
- name: Generic CI
uses: ./source/.github/actions/generic-ci
with:
build_type: fast
rendering_backend: auto
optional_deps_label: no-optional-deps
exclude_deprecated_label: exclude-deprecated
static_label: no-static
lfs_sha: ${{ needs.cache_lfs.outputs.lfs_sha}}
blosc_version: ${{needs.default_versions.outputs.blosc_version}}
tbb_version: ${{needs.default_versions.outputs.tbb_version}}
vtk_version: v9.5.0
zlib_version: ${{needs.default_versions.outputs.zlib_version}}
#----------------------------------------------------------------------------
# Linux CI: Build and test, cross-vtk build matrix
#----------------------------------------------------------------------------
linux:
needs: [cache_lfs, cache_vtk_dependency, default_versions]
if: |
contains(github.event.pull_request.labels.*.name, 'ci:main') ||
contains(github.event.pull_request.labels.*.name, 'ci:full') ||
github.ref == 'refs/heads/master'
strategy:
fail-fast: false
matrix:
vtk_version:
[
"${{needs.default_versions.outputs.vtk_commit_sha}}",
v9.5.0,
v9.4.2,
v9.3.1,
v9.2.6,
]
build_type: [standard]
include:
- exclude_deprecated_label: no-exclude-deprecated
- optional_deps_label: optional-deps
- rendering_backend: auto
- static_label: no-static
- alembic_version: ${{needs.default_versions.outputs.alembic_version}}
- assimp_version: ${{needs.default_versions.outputs.assimp_version}}
- blosc_version: ${{needs.default_versions.outputs.blosc_version}}
- draco_version: ${{needs.default_versions.outputs.draco_version}}
- imath_version: ${{needs.default_versions.outputs.imath_version}}
- java_version: ${{needs.default_versions.outputs.java_version}}
- occt_version: ${{needs.default_versions.outputs.occt_version}}
- openexr_version: ${{needs.default_versions.outputs.openexr_version}}
- openvdb_version: ${{needs.default_versions.outputs.openvdb_version}}
- ospray_version: ${{needs.default_versions.outputs.ospray_version}}
- pybind11_version: ${{needs.default_versions.outputs.pybind11_version}}
- python_version: ${{needs.default_versions.outputs.python_version}}
- tbb_version: ${{needs.default_versions.outputs.tbb_version}}
- usd_version: ${{needs.default_versions.outputs.usd_version}}
- webp_version: ${{needs.default_versions.outputs.webp_version}}
- zlib_version: ${{needs.default_versions.outputs.zlib_version}}
- build_type: egl
vtk_version: ${{needs.default_versions.outputs.vtk_commit_sha}}
optional_deps_label: optional-deps
exclude_deprecated_label: no-exclude-deprecated
rendering_backend: egl
static_label: no-static
alembic_version: ${{needs.default_versions.outputs.alembic_version}}
assimp_version: ${{needs.default_versions.outputs.assimp_version}}
blosc_version: ${{needs.default_versions.outputs.blosc_version}}
draco_version: ${{needs.default_versions.outputs.draco_version}}
imath_version: ${{needs.default_versions.outputs.imath_version}}
java_version: ${{needs.default_versions.outputs.java_version}}
occt_version: ${{needs.default_versions.outputs.occt_version}}
openexr_version: ${{needs.default_versions.outputs.openexr_version}}
openvdb_version: ${{needs.default_versions.outputs.openvdb_version}}
ospray_version: ${{needs.default_versions.outputs.ospray_version}}
pybind11_version: ${{needs.default_versions.outputs.pybind11_version}}
python_version: ${{needs.default_versions.outputs.python_version}}
tbb_version: ${{needs.default_versions.outputs.tbb_version}}
usd_version: ${{needs.default_versions.outputs.usd_version}}
webp_version: ${{needs.default_versions.outputs.webp_version}}
zlib_version: ${{needs.default_versions.outputs.zlib_version}}
- build_type: osmesa
vtk_version: ${{needs.default_versions.outputs.vtk_commit_sha}}
optional_deps_label: optional-deps
exclude_deprecated_label: no-exclude-deprecated
rendering_backend: osmesa
static_label: no-static
alembic_version: ${{needs.default_versions.outputs.alembic_version}}
assimp_version: ${{needs.default_versions.outputs.assimp_version}}
blosc_version: ${{needs.default_versions.outputs.blosc_version}}
draco_version: ${{needs.default_versions.outputs.draco_version}}
imath_version: ${{needs.default_versions.outputs.imath_version}}
java_version: ${{needs.default_versions.outputs.java_version}}
occt_version: ${{needs.default_versions.outputs.occt_version}}
openexr_version: ${{needs.default_versions.outputs.openexr_version}}
openvdb_version: ${{needs.default_versions.outputs.openvdb_version}}
ospray_version: ${{needs.default_versions.outputs.ospray_version}}
pybind11_version: ${{needs.default_versions.outputs.pybind11_version}}
python_version: ${{needs.default_versions.outputs.python_version}}
tbb_version: ${{needs.default_versions.outputs.tbb_version}}
usd_version: ${{needs.default_versions.outputs.usd_version}}
webp_version: ${{needs.default_versions.outputs.webp_version}}
zlib_version: ${{needs.default_versions.outputs.zlib_version}}
- build_type: exclude_deprecated
vtk_version: ${{needs.default_versions.outputs.vtk_commit_sha}}
optional_deps_label: optional-deps
exclude_deprecated_label: exclude-deprecated
rendering_backend: auto
static_label: no-static
alembic_version: ${{needs.default_versions.outputs.alembic_version}}
assimp_version: ${{needs.default_versions.outputs.assimp_version}}
blosc_version: ${{needs.default_versions.outputs.blosc_version}}
draco_version: ${{needs.default_versions.outputs.draco_version}}
imath_version: ${{needs.default_versions.outputs.imath_version}}
java_version: ${{needs.default_versions.outputs.java_version}}
occt_version: ${{needs.default_versions.outputs.occt_version}}
openexr_version: ${{needs.default_versions.outputs.openexr_version}}
openvdb_version: ${{needs.default_versions.outputs.openvdb_version}}
ospray_version: ${{needs.default_versions.outputs.ospray_version}}
pybind11_version: ${{needs.default_versions.outputs.pybind11_version}}
python_version: ${{needs.default_versions.outputs.python_version}}
tbb_version: ${{needs.default_versions.outputs.tbb_version}}
usd_version: ${{needs.default_versions.outputs.usd_version}}
webp_version: ${{needs.default_versions.outputs.webp_version}}
zlib_version: ${{needs.default_versions.outputs.zlib_version}}
- build_type: no_optional_deps
blosc_version: ${{needs.default_versions.outputs.blosc_version}}
tbb_version: ${{needs.default_versions.outputs.tbb_version}}
vtk_version: ${{needs.default_versions.outputs.vtk_commit_sha}}
zlib_version: ${{needs.default_versions.outputs.zlib_version}}
optional_deps_label: no-optional-deps
exclude_deprecated_label: no-exclude-deprecated
rendering_backend: auto
static_label: no-static
- build_type: static_libs
vtk_version: ${{needs.default_versions.outputs.vtk_commit_sha}}
optional_deps_label: optional-deps
exclude_deprecated_label: no-exclude-deprecated
rendering_backend: auto
static_label: static
alembic_version: ${{needs.default_versions.outputs.alembic_version}}
assimp_version: ${{needs.default_versions.outputs.assimp_version}}
blosc_version: ${{needs.default_versions.outputs.blosc_version}}
draco_version: ${{needs.default_versions.outputs.draco_version}}
imath_version: ${{needs.default_versions.outputs.imath_version}}
java_version: ${{needs.default_versions.outputs.java_version}}
occt_version: ${{needs.default_versions.outputs.occt_version}}
openexr_version: ${{needs.default_versions.outputs.openexr_version}}
openvdb_version: ${{needs.default_versions.outputs.openvdb_version}}
pybind11_version: ${{needs.default_versions.outputs.pybind11_version}}
python_version: ${{needs.default_versions.outputs.python_version}}
tbb_version: ${{needs.default_versions.outputs.tbb_version}}
usd_version: ${{needs.default_versions.outputs.usd_version}}
webp_version: ${{needs.default_versions.outputs.webp_version}}
zlib_version: ${{needs.default_versions.outputs.zlib_version}}
- build_type: mindeps
vtk_version: ${{needs.default_versions.outputs.vtk_commit_sha}}
optional_deps_label: optional-deps
exclude_deprecated_label: no-exclude-deprecated
rendering_backend: auto
static_label: no-static
alembic_version: ${{needs.default_versions.outputs.alembic_min_version}}
assimp_version: ${{needs.default_versions.outputs.assimp_min_version}}
blosc_version: ${{needs.default_versions.outputs.blosc_min_version}}
draco_version: ${{needs.default_versions.outputs.draco_min_version}}
imath_version: ${{needs.default_versions.outputs.imath_min_version}}
java_version: ${{needs.default_versions.outputs.java_min_version}}
occt_version: ${{needs.default_versions.outputs.occt_min_version}}
openexr_version: ${{needs.default_versions.outputs.openexr_min_version}}
openvdb_version: ${{needs.default_versions.outputs.openvdb_min_version}}
ospray_version: ${{needs.default_versions.outputs.ospray_min_version}}
pybind11_version: ${{needs.default_versions.outputs.pybind11_min_version}}
python_version: ${{needs.default_versions.outputs.python_min_version}}
tbb_version: ${{needs.default_versions.outputs.tbb_min_version}}
usd_version: ${{needs.default_versions.outputs.usd_min_version}}
webp_version: ${{needs.default_versions.outputs.webp_min_version}}
zlib_version: ${{needs.default_versions.outputs.zlib_min_version}}
runs-on: ubuntu-22.04
container: ghcr.io/f3d-app/f3d-ci
env:
DISPLAY: :0
steps:
- name: Checkout
uses: actions/checkout@v4
with:
path: "source"
fetch-depth: 0
lfs: false
- name: Generic CI
uses: ./source/.github/actions/generic-ci
with:
build_type: ${{matrix.build_type}}
vtk_version: ${{matrix.vtk_version}}
rendering_backend: ${{matrix.rendering_backend}}
optional_deps_label: ${{matrix.optional_deps_label}}
exclude_deprecated_label: ${{matrix.exclude_deprecated_label}}
static_label: ${{matrix.static_label}}
lfs_sha: ${{ needs.cache_lfs.outputs.lfs_sha}}
alembic_version: ${{matrix.alembic_version}}
assimp_version: ${{matrix.assimp_version}}
blosc_version: ${{matrix.blosc_version}}
draco_version: ${{matrix.draco_version}}
imath_version: ${{matrix.imath_version}}
java_version: ${{matrix.java_version}}
occt_version: ${{matrix.occt_version}}
openexr_version: ${{matrix.openexr_version}}
openvdb_version: ${{matrix.openvdb_version}}
ospray_version: ${{matrix.ospray_version}}
pybind11_version: ${{matrix.pybind11_version}}
python_version: ${{matrix.python_version}}
tbb_version: ${{matrix.tbb_version}}
usd_version: ${{matrix.usd_version}}
webp_version: ${{matrix.webp_version}}
zlib_version: ${{matrix.zlib_version}}
#----------------------------------------------------------------------------
# MacOS CI: Build and test, cross-vtk build matrix
#----------------------------------------------------------------------------
macos:
needs: [cache_lfs, cache_vtk_dependency, default_versions]
if: |
contains(github.event.pull_request.labels.*.name, 'ci:main') ||
contains(github.event.pull_request.labels.*.name, 'ci:full') ||
github.ref == 'refs/heads/master'
strategy:
fail-fast: false
matrix:
vtk_version:
[
"${{needs.default_versions.outputs.vtk_commit_sha}}",
v9.5.0,
v9.4.2,
v9.3.1,
v9.2.6,
]
runs-on: macos-13
steps:
- name: Checkout
uses: actions/checkout@v4
with:
path: "source"
fetch-depth: 0
lfs: false
- name: Generic CI
uses: ./source/.github/actions/generic-ci
with:
vtk_version: ${{matrix.vtk_version}}
cpu: x86_64
lfs_sha: ${{ needs.cache_lfs.outputs.lfs_sha}}
alembic_version: ${{needs.default_versions.outputs.alembic_version}}
assimp_version: ${{needs.default_versions.outputs.assimp_version}}
blosc_version: ${{needs.default_versions.outputs.blosc_version}}
draco_version: ${{needs.default_versions.outputs.draco_version}}
imath_version: ${{needs.default_versions.outputs.imath_version}}
occt_version: ${{needs.default_versions.outputs.occt_version}}
openexr_version: ${{needs.default_versions.outputs.openexr_version}}
openvdb_version: ${{needs.default_versions.outputs.openvdb_version}}
ospray_version: ${{needs.default_versions.outputs.ospray_version}}
pybind11_version: ${{needs.default_versions.outputs.pybind11_version}}
python_version: ${{needs.default_versions.outputs.python_version}}
tbb_version: ${{needs.default_versions.outputs.tbb_version}}
usd_version: ${{needs.default_versions.outputs.usd_version}}
webp_version: ${{needs.default_versions.outputs.webp_version}}
zlib_version: ${{needs.default_versions.outputs.zlib_version}}
#----------------------------------------------------------------------------
# MacOS ARM CI: Build and test, cross-vtk build matrix with a few optional builds
#----------------------------------------------------------------------------
macos_arm:
needs: [cache_lfs, cache_vtk_dependency, default_versions]
if: |
contains(github.event.pull_request.labels.*.name, 'ci:main') ||
contains(github.event.pull_request.labels.*.name, 'ci:full') ||
github.ref == 'refs/heads/master'
strategy:
fail-fast: false
matrix:
vtk_version: [
"${{needs.default_versions.outputs.vtk_commit_sha}}",
v9.5.0,
v9.4.2,
v9.3.1,
] # VTK 9.2.6 not compatible with recent clang version on macOS
bundle_label: [no-bundle]
static_label: [no-static]
include:
- vtk_version: ${{needs.default_versions.outputs.vtk_commit_sha}}
bundle_label: bundle
static_label: no-static
- vtk_version: ${{needs.default_versions.outputs.vtk_commit_sha}}
bundle_label: no-bundle
static_label: static
runs-on: macos-14
steps:
- name: Checkout
uses: actions/checkout@v4
with:
path: "source"
fetch-depth: 0
lfs: false
- name: Generic CI
uses: ./source/.github/actions/generic-ci
with:
vtk_version: ${{matrix.vtk_version}}
bundle_label: ${{matrix.bundle_label}}
static_label: ${{matrix.static_label}}
cpu: arm64
lfs_sha: ${{ needs.cache_lfs.outputs.lfs_sha}}
alembic_version: ${{needs.default_versions.outputs.alembic_version}}
assimp_version: ${{needs.default_versions.outputs.assimp_version}}
blosc_version: ${{needs.default_versions.outputs.blosc_version}}
draco_version: ${{needs.default_versions.outputs.draco_version}}
imath_version: ${{needs.default_versions.outputs.imath_version}}
occt_version: ${{needs.default_versions.outputs.occt_version}}
openexr_version: ${{needs.default_versions.outputs.openexr_version}}
openvdb_version: ${{needs.default_versions.outputs.openvdb_version}}
ospray_version: ${{needs.default_versions.outputs.ospray_version}}
pybind11_version: ${{needs.default_versions.outputs.pybind11_version}}
python_version: ${{needs.default_versions.outputs.python_version}}
tbb_version: ${{needs.default_versions.outputs.tbb_version}}
usd_version: ${{needs.default_versions.outputs.usd_version}}
webp_version: ${{needs.default_versions.outputs.webp_version}}
zlib_version: ${{needs.default_versions.outputs.zlib_version}}
#----------------------------------------------------------------------------
# Python packaging: Build and test the Python wheel
#----------------------------------------------------------------------------
python-packaging:
needs: [cache_lfs, cache_vtk_dependency, default_versions]
if: |
contains(github.event.pull_request.labels.*.name, 'ci:full') ||
github.ref == 'refs/heads/master'
strategy:
fail-fast: false
matrix:
os: [ubuntu-22.04, windows-latest, macos-13]
python_version: ["3.11"]
include:
- os: ubuntu-22.04
python_version: "3.9"
- os: ubuntu-22.04
python_version: "3.10"
- os: ubuntu-22.04
python_version: "3.11"
- os: ubuntu-22.04
python_version: "3.12"
- os: ubuntu-22.04
python_version: "3.13"
runs-on: ${{matrix.os}}
container: ${{ matrix.os == 'ubuntu-22.04' && 'ghcr.io/f3d-app/f3d-ci' || null }}
env:
DISPLAY: :0
steps:
- name: Checkout
uses: actions/checkout@v4
with:
path: "source"
fetch-depth: 0
lfs: false
- name: Python CI
uses: ./source/.github/actions/python-ci
with:
lfs_sha: ${{ needs.cache_lfs.outputs.lfs_sha}}
python_version: ${{matrix.python_version}}
alembic_version: ${{needs.default_versions.outputs.alembic_version}}
assimp_version: ${{needs.default_versions.outputs.assimp_version}}
blosc_version: ${{needs.default_versions.outputs.blosc_version}}
draco_version: ${{needs.default_versions.outputs.draco_version}}
imath_version: ${{needs.default_versions.outputs.imath_version}}
occt_version: ${{needs.default_versions.outputs.occt_version}}
openexr_version: ${{needs.default_versions.outputs.openexr_version}}
openvdb_version: ${{needs.default_versions.outputs.openvdb_version}}
pybind11_version: ${{needs.default_versions.outputs.pybind11_version}}
tbb_version: ${{needs.default_versions.outputs.tbb_version}}
usd_version: ${{needs.default_versions.outputs.usd_version}}
vtk_version: ${{needs.default_versions.outputs.vtk_commit_sha}}
webp_version: ${{needs.default_versions.outputs.webp_version}}
zlib_version: ${{needs.default_versions.outputs.zlib_version}}
#----------------------------------------------------------------------------
# Coverage: Build and test on linux with last VTK with coverage option
#----------------------------------------------------------------------------
coverage:
needs: [cache_lfs, cache_vtk_dependency, default_versions]
if: |
contains(github.event.pull_request.labels.*.name, 'ci:main') ||
contains(github.event.pull_request.labels.*.name, 'ci:full') ||
github.ref == 'refs/heads/master'
runs-on: ubuntu-22.04
container: ghcr.io/f3d-app/f3d-ci
# Add dummy F3D_PLUGINS_PATH for coverage
env:
DISPLAY: :0
F3D_PLUGINS_PATH: /dummy1:/dummy2
steps:
- name: Checkout
uses: actions/checkout@v4
with:
path: "source"
fetch-depth: 0
lfs: false
- name: Coverage CI
uses: ./source/.github/actions/coverage-ci
with:
lfs_sha: ${{ needs.cache_lfs.outputs.lfs_sha}}
codecov_token: ${{secrets.CODECOV_TOKEN}}
alembic_version: ${{needs.default_versions.outputs.alembic_version}}
assimp_version: ${{needs.default_versions.outputs.assimp_version}}
blosc_version: ${{needs.default_versions.outputs.blosc_version}}
draco_version: ${{needs.default_versions.outputs.draco_version}}
imath_version: ${{needs.default_versions.outputs.imath_version}}
occt_version: ${{needs.default_versions.outputs.occt_version}}
openexr_version: ${{needs.default_versions.outputs.openexr_version}}
openvdb_version: ${{needs.default_versions.outputs.openvdb_version}}
ospray_version: ${{needs.default_versions.outputs.ospray_version}}
tbb_version: ${{needs.default_versions.outputs.tbb_version}}
usd_version: ${{needs.default_versions.outputs.usd_version}}
vtk_version: ${{needs.default_versions.outputs.vtk_commit_sha}}
webp_version: ${{needs.default_versions.outputs.webp_version}}
zlib_version: ${{needs.default_versions.outputs.zlib_version}}
#----------------------------------------------------------------------------
# Sanitizer: Build and test on linux with last VTK with sanitizer options
#----------------------------------------------------------------------------
# "leak" is run by default with "address" so we do not need to run it in CI
# "memory" returns false positives in VTK:
# https://stackoverflow.com/questions/60097307/memory-sanitizer-reports-use-of-uninitialized-value-in-global-object-constructio
sanitizer:
needs: [cache_lfs, cache_vtk_dependency, default_versions]
if: |
contains(github.event.pull_request.labels.*.name, 'ci:full') ||
github.ref == 'refs/heads/master'
strategy:
fail-fast: false
matrix:
sanitizer_type: [address, thread, undefined]
runs-on: ubuntu-22.04
container: ghcr.io/f3d-app/f3d-ci
env:
DISPLAY: :0
CC: clang
CXX: clang++
VTK_SMP_BACKEND_IN_USE: Sequential
steps:
- name: Checkout
uses: actions/checkout@v4
with:
path: "source"
fetch-depth: 0
lfs: false
- name: Sanitizer CI
uses: ./source/.github/actions/sanitizer-ci
with:
sanitizer_type: ${{matrix.sanitizer_type}}
lfs_sha: ${{ needs.cache_lfs.outputs.lfs_sha}}
alembic_version: ${{needs.default_versions.outputs.alembic_version}}
assimp_version: ${{needs.default_versions.outputs.assimp_version}}
blosc_version: ${{needs.default_versions.outputs.blosc_version}}
draco_version: ${{needs.default_versions.outputs.draco_version}}
imath_version: ${{needs.default_versions.outputs.imath_version}}
occt_version: ${{needs.default_versions.outputs.occt_version}}
openexr_version: ${{needs.default_versions.outputs.openexr_version}}
tbb_version: ${{needs.default_versions.outputs.tbb_version}}
vtk_version: ${{needs.default_versions.outputs.vtk_commit_sha}}
webp_version: ${{needs.default_versions.outputs.webp_version}}
zlib_version: ${{needs.default_versions.outputs.zlib_version}}
#----------------------------------------------------------------------------
# static-analysis: Run static analysis on linux
#----------------------------------------------------------------------------
static-analysis:
needs: [cache_lfs, cache_vtk_dependency, default_versions]
if: |
contains(github.event.pull_request.labels.*.name, 'ci:full') ||
github.ref == 'refs/heads/master'
strategy:
fail-fast: false
runs-on: ubuntu-22.04
container: ghcr.io/f3d-app/f3d-ci
env:
CC: clang
CXX: clang++
steps:
- name: Checkout
uses: actions/checkout@v4
with:
path: "source"
fetch-depth: 0
lfs: false
- name: Static analysis CI
uses: ./source/.github/actions/static-analysis-ci
with:
lfs_sha: ${{ needs.cache_lfs.outputs.lfs_sha}}
alembic_version: ${{needs.default_versions.outputs.alembic_version}}
assimp_version: ${{needs.default_versions.outputs.assimp_version}}
blosc_version: ${{needs.default_versions.outputs.blosc_version}}
draco_version: ${{needs.default_versions.outputs.draco_version}}
imath_version: ${{needs.default_versions.outputs.imath_version}}
occt_version: ${{needs.default_versions.outputs.occt_version}}
openexr_version: ${{needs.default_versions.outputs.openexr_version}}
openvdb_version: ${{needs.default_versions.outputs.openvdb_version}}
tbb_version: ${{needs.default_versions.outputs.tbb_version}}
usd_version: ${{needs.default_versions.outputs.usd_version}}
vtk_version: ${{needs.default_versions.outputs.vtk_commit_sha}}
webp_version: ${{needs.default_versions.outputs.webp_version}}
zlib_version: ${{needs.default_versions.outputs.zlib_version}}
#----------------------------------------------------------------------------
# external-build: Check build of F3D as sub-project
#----------------------------------------------------------------------------
external-build:
needs: [cache_vtk_dependency, default_versions]
if: |
contains(github.event.pull_request.labels.*.name, 'ci:full') ||
github.ref == 'refs/heads/master'
strategy:
fail-fast: false
runs-on: ubuntu-22.04
container: ghcr.io/f3d-app/f3d-ci
steps:
- name: Checkout
uses: actions/checkout@v4
with:
path: "source/f3d"
fetch-depth: 0
lfs: false
- name: External build CI
uses: ./source/f3d/.github/actions/external-build-ci
with:
blosc_version: ${{needs.default_versions.outputs.blosc_version}}
tbb_version: ${{needs.default_versions.outputs.tbb_version}}
vtk_version: ${{needs.default_versions.outputs.vtk_commit_sha}}
zlib_version: ${{needs.default_versions.outputs.zlib_version}}
#----------------------------------------------------------------------------
# Check android/wasm docker images
#----------------------------------------------------------------------------
check_docker_images:
needs: default_versions
runs-on: ubuntu-22.04
# Pull request can require a rebuild of docker image, wait for it to be done
# This job does not do anything in master branch but is not skipped for simpler logic
steps:
- name: Extract branch name
if: contains(github.event.pull_request.labels.*.name, 'ci:full')
shell: bash
run: echo "F3D_BRANCH_NAME=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" >> $GITHUB_ENV
- name: Wait for docker images
if: contains(github.event.pull_request.labels.*.name, 'ci:full')
run: |
gh run list -w build-docker-images.yml --repo ${{ github.repository }} -L 1 -b ${{ env.F3D_BRANCH_NAME }}
until gh run list -w build-docker-images.yml --repo ${{ github.repository }} -L 1 -b ${{ env.F3D_BRANCH_NAME }} --json status | jq '.[]| .status' | grep -q "completed";
do
echo "Waiting 1s"
sleep 1;
done
gh run list -w build-docker-images.yml --repo ${{ github.repository }} -L 1 -b ${{ env.F3D_BRANCH_NAME }} --json conclusion | jq '.[]| .conclusion' | grep -q "success"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
#----------------------------------------------------------------------------
# android: Check build of F3D for android
#----------------------------------------------------------------------------
android:
needs: [default_versions, check_docker_images]
if: |
contains(github.event.pull_request.labels.*.name, 'ci:full') ||
github.ref == 'refs/heads/master'
strategy:
fail-fast: false
matrix:
arch: [armeabi-v7a, arm64-v8a, x86, x86_64]
runs-on: ubuntu-22.04
container: ghcr.io/f3d-app/f3d-android-${{ matrix.arch }}:${{needs.default_versions.outputs.timestamp}}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
path: "source"
fetch-depth: 0
lfs: false
- name: Android CI
uses: ./source/.github/actions/android-ci
with:
arch: ${{matrix.arch}}
#----------------------------------------------------------------------------
# webassembly: Build webassembly artifacts
#----------------------------------------------------------------------------
webassembly:
needs: [default_versions, check_docker_images]
if: |
contains(github.event.pull_request.labels.*.name, 'ci:full') ||
github.ref == 'refs/heads/master'
strategy:
fail-fast: false
runs-on: ubuntu-22.04
env:
CMAKE_BUILD_PARALLEL_LEVEL: 4
F3D_DOCKER_TIMESTAMP: ${{needs.default_versions.outputs.timestamp}}
steps:
# Note that LFS is needed in order to include the default model
- name: Checkout
uses: actions/checkout@v4
with:
path: "source"
fetch-depth: 0
lfs: true
- name: WebAssembly CI
uses: ./source/.github/actions/wasm-ci
#----------------------------------------------------------------------------
# generate website
#----------------------------------------------------------------------------
generate-website:
needs: webassembly
name: Generate Website
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
lfs: true
- name: Build Jekyll
uses: actions/jekyll-build-pages@v1
- name: Install doxygen and build doxygen doc
working-directory: ${{github.workspace}}
run: |
pip install "sphinx==5.3.0" "pydata-sphinx-theme==0.13.1" sphinx-book-theme exhale
sudo apt install doxygen
sphinx-build -M html ./library/doxygen ./library/doxygen/build/
sudo mv library/doxygen/build/html _site/doc/libf3d/doxygen
sphinx-build -M html ./vtkext/public/doxygen ./vtkext/public/doxygen/build/
sudo mv vtkext/public/doxygen/build/html _site/doc/libf3d/vtkext_doxygen
- name: Retrieve f3d package
uses: actions/download-artifact@v4
with:
name: f3d-wasm-package
path: ${{github.workspace}}/examples/libf3d/web
- name: Install f3d package
working-directory: ${{github.workspace}}/examples/libf3d/web
run: npm install f3d-*.tgz
- name: Build F3D web app
working-directory: ${{github.workspace}}/examples/libf3d/web
run: npm run build
- name: Copy F3D web app
run: sudo mv ${{github.workspace}}/examples/libf3d/web/dist _site/web
- name: Deploy
if: github.ref == 'refs/heads/master'
uses: JamesIves/github-pages-deploy-action@v4
with:
folder: _site
token: ${{ secrets.GITHUB_TOKEN }}
clean: true