Nightly VTK master #541
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: Nightly VTK master | |
on: | |
schedule: | |
- cron: '0 0 * * *' | |
jobs: | |
#---------------------------------------------------------------------------- | |
# Check nightly: Checkout VTK and check if the last merged commit is less than 24 hours old | |
#---------------------------------------------------------------------------- | |
check_nightly: | |
if: github.repository == 'f3d-app/f3d' | |
runs-on: ubuntu-22.04 | |
name: Check nightly | |
outputs: | |
should_run: ${{ steps.should_run.outputs.should_run }} | |
vtk_sha: ${{ steps.vtk_sha_recover.outputs.vtk_sha }} | |
steps: | |
- name: Checkout VTK | |
uses: actions/checkout@v4 | |
with: | |
repository: Kitware/VTK | |
submodules: false | |
fetch-depth: 0 | |
ref: master | |
- name: Check latest commit age is less than 24 hours | |
id: should_run | |
run: test -n "$(git rev-list --no-merges HEAD --not $(git rev-list -n1 --before=24hours --first-parent HEAD))" && echo "should_run=true" >> $GITHUB_OUTPUT || echo "should_run=false" >> $GITHUB_OUTPUT | |
- name: Set VTK sha env var | |
id: vtk_sha_recover | |
shell: bash | |
run: echo "vtk_sha=$(git log -n 1 --pretty=format:%H)" >> $GITHUB_OUTPUT | |
#---------------------------------------------------------------------------- | |
# Default versions: Set default version for all dependencies | |
#---------------------------------------------------------------------------- | |
default_versions: | |
runs-on: ubuntu-22.04 | |
name: Set default versions | |
outputs: | |
alembic_version: ${{ steps.set_default_versions.outputs.alembic_version }} | |
alembic_min_version: ${{ steps.set_default_versions.outputs.alembic_min_version }} | |
assimp_version: ${{ steps.set_default_versions.outputs.assimp_version }} | |
assimp_min_version: ${{ steps.set_default_versions.outputs.assimp_min_version }} | |
draco_version: ${{ steps.set_default_versions.outputs.draco_version }} | |
draco_min_version: ${{ steps.set_default_versions.outputs.draco_min_version }} | |
occt_version: ${{ steps.set_default_versions.outputs.occt_version }} | |
occt_min_version: ${{ steps.set_default_versions.outputs.occt_min_version }} | |
openexr_version: ${{ steps.set_default_versions.outputs.openexr_version }} | |
openexr_min_version: ${{ steps.set_default_versions.outputs.openexr_min_version }} | |
openvdb_version: ${{ steps.set_default_versions.outputs.openvdb_version }} | |
openvdb_min_version: ${{ steps.set_default_versions.outputs.openvdb_min_version }} | |
pybind11_version: ${{ steps.set_default_versions.outputs.pybind11_version }} | |
pybind11_min_version: ${{ steps.set_default_versions.outputs.pybind11_min_version }} | |
python_version: ${{ steps.set_default_versions.outputs.python_version }} | |
python_min_version: ${{ steps.set_default_versions.outputs.python_min_version }} | |
usd_version: ${{ steps.set_default_versions.outputs.usd_version }} | |
usd_min_version: ${{ steps.set_default_versions.outputs.usd_min_version }} | |
java_version: ${{ steps.set_default_versions.outputs.java_version }} | |
java_min_version: ${{ steps.set_default_versions.outputs.java_min_version }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
path: 'source' | |
fetch-depth: 1 | |
lfs: false | |
- name: Set default versions | |
id: set_default_versions | |
uses: ./source/.github/actions/default-versions | |
#---------------------------------------------------------------------------- | |
# Cache LFS: Checkout LFS data and update the cache to limit LFS bandwidth | |
#---------------------------------------------------------------------------- | |
cache_lfs: | |
needs: check_nightly | |
if: ${{ needs.check_nightly.outputs.should_run == 'true' }} | |
runs-on: ubuntu-22.04 | |
name: Update LFS data cache | |
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 | |
#---------------------------------------------------------------------------- | |
# Windows CI: Build and test | |
#---------------------------------------------------------------------------- | |
windows: | |
needs: [cache_lfs, check_nightly, default_versions] | |
if: ${{ needs.check_nightly.outputs.should_run == 'true' }} | |
strategy: | |
fail-fast: false | |
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: ${{needs.check_nightly.outputs.vtk_sha}} | |
raytracing_label: raytracing | |
lfs_sha: ${{ needs.cache_lfs.outputs.lfs_sha}} | |
alembic_version: ${{needs.default_versions.outputs.alembic_version}} | |
assimp_version: ${{needs.default_versions.outputs.assimp_version}} | |
draco_version: ${{needs.default_versions.outputs.draco_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}} | |
usd_version: ${{needs.default_versions.outputs.usd_version}} | |
java_version: ${{needs.default_versions.outputs.java_version}} | |
#---------------------------------------------------------------------------- | |
# Linux CI: Build and test | |
#---------------------------------------------------------------------------- | |
linux: | |
needs: [cache_lfs, check_nightly, default_versions] | |
if: ${{ needs.check_nightly.outputs.should_run == 'true' }} | |
strategy: | |
fail-fast: false | |
matrix: | |
build_type: [standard] | |
include: | |
- rendering_backend: auto | |
- build_type: egl | |
rendering_backend: egl | |
- build_type: osmesa | |
rendering_backend: osmesa | |
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: ${{needs.check_nightly.outputs.vtk_sha}} | |
raytracing_label: 'raytracing' | |
rendering_backend: ${{matrix.rendering_backend}} | |
lfs_sha: ${{ needs.cache_lfs.outputs.lfs_sha}} | |
alembic_version: ${{needs.default_versions.outputs.alembic_version}} | |
assimp_version: ${{needs.default_versions.outputs.assimp_version}} | |
draco_version: ${{needs.default_versions.outputs.draco_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}} | |
usd_version: ${{needs.default_versions.outputs.usd_version}} | |
java_version: ${{needs.default_versions.outputs.java_version}} | |
#---------------------------------------------------------------------------- | |
# MacOS CI: Build and test | |
#---------------------------------------------------------------------------- | |
macos: | |
needs: [cache_lfs, check_nightly, default_versions] | |
if: ${{ needs.check_nightly.outputs.should_run == 'true' }} | |
strategy: | |
fail-fast: false | |
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: ${{needs.check_nightly.outputs.vtk_sha}} | |
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}} | |
draco_version: ${{needs.default_versions.outputs.draco_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}} | |
usd_version: ${{needs.default_versions.outputs.usd_version}} | |
java_version: ${{needs.default_versions.outputs.java_version}} | |
#---------------------------------------------------------------------------- | |
# MacOS arm64 CI: Build and test | |
#---------------------------------------------------------------------------- | |
macos_arm: | |
needs: [cache_lfs, check_nightly, default_versions] | |
if: ${{ needs.check_nightly.outputs.should_run == 'true' }} | |
strategy: | |
fail-fast: false | |
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: ${{needs.check_nightly.outputs.vtk_sha}} | |
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}} | |
draco_version: ${{needs.default_versions.outputs.draco_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}} | |
usd_version: ${{needs.default_versions.outputs.usd_version}} | |
java_version: ${{needs.default_versions.outputs.java_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, check_nightly, default_versions] | |
if: ${{ needs.check_nightly.outputs.should_run == 'true' }} | |
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: | |
vtk_version: ${{needs.check_nightly.outputs.vtk_sha}} | |
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}} | |
draco_version: ${{needs.default_versions.outputs.draco_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}} | |
usd_version: ${{needs.default_versions.outputs.usd_version}} | |
java_version: ${{needs.default_versions.outputs.java_version}} | |
#---------------------------------------------------------------------------- | |
# android: Check build of F3D for android | |
#---------------------------------------------------------------------------- | |
android: | |
needs: check_nightly | |
if: ${{ needs.check_nightly.outputs.should_run == 'true' }} | |
strategy: | |
fail-fast: false | |
matrix: | |
arch: [armeabi-v7a, arm64-v8a, x86, x86_64] | |
runs-on: ubuntu-22.04 | |
container: ghcr.io/f3d-app/f3d-ci | |
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}} | |
vtk_version: ${{needs.check_nightly.outputs.vtk_sha}} | |
#---------------------------------------------------------------------------- | |
# webassembly: Check build of F3D for webassembly | |
#---------------------------------------------------------------------------- | |
webassembly: | |
needs: check_nightly | |
if: ${{ needs.check_nightly.outputs.should_run == 'true' }} | |
strategy: | |
fail-fast: false | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
path: 'source' | |
fetch-depth: 0 | |
lfs: 'false' | |
- name: Build | |
working-directory: ${{github.workspace}}/source/webassembly | |
run: npm run build:rel |