Houdini #2405
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: Houdini | |
on: | |
push: | |
branches: | |
- 'master' | |
- 'feature/**' | |
- 'pr/**' | |
paths-ignore: | |
- 'CHANGES' | |
- 'CODEOWNERS' | |
- 'doc/**' | |
- 'nanovdb/**' | |
- 'openvdb_maya/**' | |
- 'pendingchanges/**' | |
- '**.md' | |
pull_request: | |
branches: | |
- '**' | |
paths-ignore: | |
- 'CHANGES' | |
- 'CODEOWNERS' | |
- 'doc/**' | |
- 'nanovdb/**' | |
- 'openvdb_maya/**' | |
- 'pendingchanges/**' | |
- '**.md' | |
schedule: | |
# run this workflow every day 7am UTC | |
- cron: '0 7 * * *' | |
workflow_dispatch: | |
# Allow subsequent pushes to the same PR or REF to cancel any previous jobs. | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
jobs: | |
checksecret: | |
# Check that valid github secrets have been set. This isn't needed to retrieve | |
# the cache, but ensures that the job doens't start with an empty cache | |
name: Verify Houdini Secrets | |
runs-on: ubuntu-latest | |
outputs: | |
HOUDINI_SECRETS: ${{ steps.check.outputs.HOUDINI_SECRETS }} | |
steps: | |
- id: check | |
env: | |
HOUDINI_CLIENT_ID: ${{ secrets.HOUDINI_CLIENT_ID }} | |
HOUDINI_SECRET_KEY: ${{ secrets.HOUDINI_SECRET_KEY }} | |
run: echo "::set-output name=HOUDINI_SECRETS::${{ env.HOUDINI_CLIENT_ID != '' && env.HOUDINI_SECRET_KEY != '' }}" | |
- name: Skip Next Jobs | |
if: steps.check.outputs.HOUDINI_SECRETS != 'true' | |
run: echo "HOUDINI_CLIENT_ID and HOUDINI_SECRET_KEY GitHub Action Secrets needs to be set to install Houdini builds" | |
linux-vfx-houdini: | |
needs: [checksecret] | |
if: > | |
${{ needs.checksecret.outputs.HOUDINI_SECRETS == 'true' || | |
github.repository_owner == 'AcademySoftwareFoundation' }} | |
runs-on: ${{ (github.repository_owner == 'AcademySoftwareFoundation' && 'ubuntu-20.04-8c-32g-300h') || 'ubuntu-latest' }} | |
name: hou:${{ matrix.config.hou }}-vfx:${{ matrix.config.image }}-cxx:${{ matrix.config.cxx }} | |
container: | |
image: aswf/ci-base:${{ matrix.config.image }} | |
env: | |
CXX: ${{ matrix.config.cxx }} | |
CCACHE_DIR: /tmp/ccache | |
strategy: | |
matrix: | |
config: | |
- { cxx: clang++, image: '2021', hou: '19_5', j: '8', build: 'Release', components: 'core,hou,bin,view,render,python,test,axcore,axbin,axtest', disable_checks: 'OFF' } | |
# Houdini 19 is technically on VFX 2020, but we need 2021 dependencies for VDB 10 | |
- { cxx: clang++, image: '2021', hou: '19_0', j: '8', build: 'Release', components: 'core,hou,bin,view,render,python,test,axcore,axbin,axtest', disable_checks: 'ON' } | |
- { cxx: clang++, image: '2021', hou: '19_5', j: '8', build: 'Debug', components: 'core,hou', disable_checks: 'OFF' } | |
- { cxx: g++, image: '2021', hou: '19_5', j: '8', build: 'Release', components: 'core,hou', disable_checks: 'OFF' } | |
fail-fast: false | |
steps: | |
- uses: actions/checkout@v3 | |
- name: timestamp | |
id: timestamp | |
shell: bash | |
run: echo "::set-output name=timestamp::`date -u +'%Y-%m-%dT%H:%M:%SZ'`" | |
- name: ccache | |
# don't use ccache for debug builds | |
if: matrix.config.build == 'Release' | |
id: ccache | |
uses: actions/cache@v2 | |
with: | |
path: /tmp/ccache | |
key: linux-vfx-hou${{ matrix.config.hou }}-${{ matrix.config.image }}-${{ matrix.config.cxx }}-${{ steps.timestamp.outputs.timestamp }} | |
restore-keys: linux-vfx-hou${{ matrix.config.hou }}-${{ matrix.config.image }}-${{ matrix.config.cxx }}- | |
- name: fetch_houdini | |
uses: actions/cache@v2 | |
with: | |
path: hou | |
key: dummy-houdini${{ matrix.config.hou }}-${{ steps.timestamp.outputs.timestamp }} | |
restore-keys: vdb-v5-houdini${{ matrix.config.hou }}- | |
- name: validate_houdini | |
run: test -f "hou/hou.tar.gz" | |
# Make sure the cache is copied, not moved, as the cache action always posts the cache. | |
# Also make sure that the unpacked install is NOT in the root of the OpenVDB checkout | |
# otherwise CMake's install RPATHs wil not work correctly. | |
- name: install_houdini | |
run: | | |
mkdir $HOME/houdini_install | |
cp hou/hou.tar.gz $HOME/houdini_install/hou.tar.gz | |
cd $HOME/houdini_install && tar -xzf hou.tar.gz && cd - | |
- name: build | |
shell: bash | |
run: | | |
export HFS="$HOME/houdini_install/hou" | |
export HDSO="${HFS}/dsolib" | |
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/usr/lib64:${HDSO}" | |
./ci/build.sh -v --build-type=Release --components="core,hou" --cargs=\"-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON -DDISABLE_CMAKE_SEARCH_PATHS=ON -DOPENVDB_BUILD_HOUDINI_ABITESTS=OFF -DOPENVDB_HOUDINI_INSTALL_PREFIX=/tmp\ -DTBB_INCLUDEDIR=/usr/local/include -DTBB_LIBRARYDIR=/usr/local/lib\" | |
- name: test | |
run: cd build && ctest -V | |
# Keep ccache light by stripping out any caches not accessed in the last day | |
- name: ccache_clean | |
if: matrix.config.build == 'Release' | |
shell: bash | |
run: ccache --evict-older-than 1d | |
# Delete the houdini tarball so that this dummy cache occupies no space | |
- name: delete_hou | |
run: rm -f hou/hou.tar.gz |