Nightly VTK master #989
This file contains hidden or 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-24.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@v7 | |
| 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 | |
| #---------------------------------------------------------------------------- | |
| # 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-24.04 | |
| name: Update LFS data cache | |
| outputs: | |
| lfs_sha: ${{ steps.lfs_sha_recover.outputs.lfs_sha }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v7 | |
| with: | |
| path: "source" | |
| fetch-depth: 1 | |
| lfs: false | |
| - name: Cache LFS Data | |
| id: lfs_sha_recover | |
| uses: f3d-app/lfs-data-cache-action@v2 | |
| with: | |
| cache_postfix: cache-0 | |
| #---------------------------------------------------------------------------- | |
| # Cross-platform CI: Build and test | |
| #---------------------------------------------------------------------------- | |
| cross-platform: | |
| needs: [cache_lfs, check_nightly] | |
| if: ${{ needs.check_nightly.outputs.should_run == 'true' }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| build_type: [standard] | |
| os: [ubuntu-24.04, windows-2022, macos-15, macos-15-intel] | |
| include: | |
| - rendering_backend: auto | |
| - build_type: egl | |
| os: ubuntu-24.04 | |
| rendering_backend: egl | |
| - build_type: osmesa | |
| os: ubuntu-24.04 | |
| rendering_backend: osmesa | |
| runs-on: ${{matrix.os}} | |
| container: ${{ matrix.os == 'ubuntu-24.04' && 'ghcr.io/f3d-app/f3d-ci' || null }} | |
| env: | |
| CMAKE_POLICY_VERSION_MINIMUM: 3.5 | |
| DISPLAY: :0 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v7 | |
| 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}} | |
| rendering_backend: ${{matrix.rendering_backend}} | |
| lfs_sha: ${{ needs.cache_lfs.outputs.lfs_sha}} | |
| versions_file: ./source/.github/workflows/versions.json | |
| cpu: ${{ matrix.os == 'macos-15' && 'arm64' || 'x86_64' }} | |
| #---------------------------------------------------------------------------- | |
| # 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] | |
| if: ${{ needs.check_nightly.outputs.should_run == 'true' }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| sanitizer_type: [address, thread, undefined] | |
| runs-on: ubuntu-24.04 | |
| container: ghcr.io/f3d-app/f3d-ci | |
| env: | |
| CMAKE_POLICY_VERSION_MINIMUM: 3.5 | |
| DISPLAY: :0 | |
| CC: clang | |
| CXX: clang++ | |
| VTK_SMP_BACKEND_IN_USE: Sequential | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v7 | |
| with: | |
| path: "source" | |
| fetch-depth: 0 | |
| lfs: false | |
| - name: Sanitizer CI | |
| uses: ./source/.github/actions/sanitizer-ci | |
| with: | |
| versions_file: ./source/.github/workflows/versions.json | |
| vtk_version: ${{needs.check_nightly.outputs.vtk_sha}} | |
| sanitizer_type: ${{matrix.sanitizer_type}} | |
| lfs_sha: ${{ needs.cache_lfs.outputs.lfs_sha}} | |
| #---------------------------------------------------------------------------- | |
| # Build android/wasm docker images | |
| #---------------------------------------------------------------------------- | |
| build_docker_images: | |
| name: Build docker images | |
| needs: check_nightly | |
| if: ${{ needs.check_nightly.outputs.should_run == 'true' }} | |
| runs-on: ubuntu-latest | |
| steps: | |
| # This require a F3D_DOCKER_CI_DISPATCH secret contain a PAT with read and write admin access | |
| - name: Trigger docker images build | |
| uses: convictional/trigger-workflow-and-wait@v1.6.5 | |
| with: | |
| owner: f3d-app | |
| repo: f3d-docker-images | |
| github_token: ${{ secrets.F3D_DOCKER_CI_DISPATCH }} | |
| workflow_file_name: build_docker_image.yml | |
| wait_interval: 60 | |
| client_payload: '{"vtk_version_override": "${{needs.check_nightly.outputs.vtk_sha}}"}' | |
| propagate_failure: true | |
| trigger_workflow: true | |
| wait_workflow: true | |
| #---------------------------------------------------------------------------- | |
| # Recover docker timestamp | |
| #---------------------------------------------------------------------------- | |
| recover_docker_timestamp: | |
| runs-on: ubuntu-24.04 | |
| name: Recover docker timestamp | |
| needs: check_nightly | |
| if: ${{ needs.check_nightly.outputs.should_run == 'true' }} | |
| outputs: | |
| docker_timestamp: ${{steps.docker_timestamp.outputs.extract}} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v7 | |
| with: | |
| path: "source" | |
| fetch-depth: 0 | |
| lfs: false | |
| - name: Extract docker timestamp | |
| id: docker_timestamp | |
| uses: f3d-app/extract-version-action@main | |
| with: | |
| file: ./source/.github/workflows/versions.json | |
| special_name: docker_timestamp | |
| #---------------------------------------------------------------------------- | |
| # android: Check build of F3D for android | |
| #---------------------------------------------------------------------------- | |
| android: | |
| needs: [check_nightly, build_docker_images, recover_docker_timestamp] | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| arch: [armeabi-v7a, arm64-v8a, x86, x86_64] | |
| runs-on: ubuntu-24.04 | |
| container: ghcr.io/f3d-app/f3d-android-${{ matrix.arch }}:${{needs.recover_docker_timestamp.outputs.docker_timestamp}}_${{needs.check_nightly.outputs.vtk_sha}} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v7 | |
| 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: | |
| [cache_lfs, check_nightly, build_docker_images, recover_docker_timestamp] | |
| strategy: | |
| fail-fast: false | |
| runs-on: ubuntu-24.04 | |
| env: | |
| CMAKE_BUILD_PARALLEL_LEVEL: 4 | |
| F3D_DOCKER_TIMESTAMP: ${{needs.recover_docker_timestamp.outputs.docker_timestamp}}_${{needs.check_nightly.outputs.vtk_sha}} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v7 | |
| with: | |
| path: "source" | |
| fetch-depth: 0 | |
| lfs: false | |
| - name: WebAssembly CI | |
| uses: ./source/.github/actions/wasm-ci | |
| with: | |
| lfs_sha: ${{ needs.cache_lfs.outputs.lfs_sha}} |