Skip to content

Merge pull request #1403 from ericmehl/msvcVersion #1271

Merge pull request #1403 from ericmehl/msvcVersion

Merge pull request #1403 from ericmehl/msvcVersion #1271

Workflow file for this run

name: CI
on:
workflow_dispatch:
push:
branches:
- main
- 'RB-*'
pull_request:
branches:
- main
- 'RB-*'
release:
types: [published]
jobs:
build:
strategy:
# Don't cancel other jobs in the build matrix if one job fails.
fail-fast: false
matrix:
# Rather than generate all permutations of various settings,
# we want to explicitly list each of the variants we want to
# test. We can use `name` to declare the names of our variants,
# and then use `include` to define their settings.
name: [
linux-python3,
linux-python3-debug,
windows-python3,
windows-python3-debug
]
include:
- name: linux-python3
os: ubuntu-20.04
buildType: RELEASE
containerImage: ghcr.io/gafferhq/build/build:2.0.0
options: .github/workflows/main/options.posix
dependenciesURL: https://github.com/GafferHQ/dependencies/releases/download/7.0.0/gafferDependencies-7.0.0-linux.tar.gz
tests: testCore testCorePython testScene testImage testAlembic testUSD testVDB
publish: true
- name: linux-python3-debug
os: ubuntu-20.04
buildType: DEBUG
containerImage: ghcr.io/gafferhq/build/build:2.0.0
options: .github/workflows/main/options.posix
dependenciesURL: https://github.com/GafferHQ/dependencies/releases/download/7.0.0/gafferDependencies-7.0.0-linux.tar.gz
tests: testCore testCorePython testScene testImage testAlembic testUSD testVDB
publish: false
- name: windows-python3
os: windows-2019
buildType: RELEASE
options: .github/workflows/main/options.windows
dependenciesURL: https://github.com/GafferHQ/dependencies/releases/download/7.0.0/gafferDependencies-7.0.0-windows.zip
tests: testCore testCorePython testScene testImage testAlembic testUSD testVDB
publish: true
- name: windows-python3-debug
os: windows-2019
buildType: RELWITHDEBINFO
options: .github/workflows/main/options.windows
dependenciesURL: https://github.com/GafferHQ/dependencies/releases/download/7.0.0/gafferDependencies-7.0.0-windows.zip
tests: testCore testCorePython testScene testImage testAlembic testUSD testVDB
publish: false
runs-on: ${{ matrix.os }}
container: ${{ matrix.containerImage }}
steps:
- uses: actions/checkout@v2
- uses: ilammy/[email protected]
with:
sdk: 10.0.17763.0
- name: Install toolchain (Windows)
run: |
python -m pip install scons
echo "PACKAGE_COMMAND=7z a -tzip" >> $env:GITHUB_ENV
echo "PACKAGE_EXTENSION=zip" >> $env:GITHUB_ENV
if: runner.os == 'Windows'
- name: Install toolchain (MacOS)
# Prefer `pip install` because it is faster
# than `brew install`.
run: |
sudo pip3 install scons==4.0.1
# Brew installs all manner of headers into `/usr/local/include`, including
# OpenEXR and Imath versions that conflict with our own. We can't stop Clang
# finding them because Clang is hardcoded to look in `/usr/local/include`
# _before_ anything we specify with `-isystem`, despite documentation to the
# contrary. So we nuke the headers.
rm -rf /usr/local/include/*
echo PACKAGE_COMMAND=tar -czf >> $GITHUB_ENV
echo PACKAGE_EXTENSION=tar.gz >> $GITHUB_ENV
if: runner.os == 'macOS'
- name: Install toolchain (Linux)
run: |
# The Docker container configures bash shells such that they enable the
# software collections we want. If we could set GitHub's
# `defaults.run.shell` to `bash` then all our build steps would pick up
# this environment automatically. But we can't do that because it
# breaks the build on Windows, and we can't configure a different shell
# per platform because GitHub won't allow it. But we can run _this_
# Linux-only step in bash, and transfer the environment out to be used
# in later steps.
echo $PATH > $GITHUB_PATH
echo LD_LIBRARY_PATH=$LD_LIBRARY_PATH >> $GITHUB_ENV
echo PACKAGE_COMMAND=tar -czf >> $GITHUB_ENV
echo PACKAGE_EXTENSION=tar.gz >> $GITHUB_ENV
shell: bash
if: runner.os == 'Linux'
- name: Install Python Modules
run: |
python --version
pip install PyJWT==1.7.1 PyGitHub==1.45
- name: Set Custom Variables
run: |
.github/workflows/main/setBuildVars.py
env:
GITHUB_ACCESS_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CORTEX_BUILD_VARIANT: ${{ matrix.name }}
shell: bash
- name: Install dependencies
# The `$GITHUB_ENV` shenanigans creates an environment variable
# containing the hash of the archive, for use in the cache key
# below.
run: |
echo CORTEX_DEPENDENCIES_HASH=`python config/installDependencies.py --archiveURL ${{ matrix.dependenciesURL }} --dependenciesDir ${{ env.CORTEX_BUILD_NAME }} --outputFormat "{archiveDigest}"` >> $GITHUB_ENV
shell: bash
- name: Cache
uses: actions/cache@v3
with:
path: sconsCache
key: ${{ runner.os }}-${{ matrix.containerImage }}-${{env.CORTEX_DEPENDENCIES_HASH}}-${{ matrix.buildType }}-${{ github.sha }}
restore-keys: |
${{ runner.os }}-${{ matrix.containerImage }}-${{env.CORTEX_DEPENDENCIES_HASH}}-${{ matrix.buildType }}-
- name: Build
run: |
scons -j 2 install BUILD_TYPE=${{ matrix.buildType }} OPTIONS=${{ matrix.options }} BUILD_CACHEDIR=sconsCache
# Copy the config log for use in the "Debug Failures" step, because it
# gets clobbered by the `scons test*` call below.
cp config.log buildConfig.log
- name: Test
run: |
scons ${{ matrix.tests }} BUILD_TYPE=${{ matrix.buildType }} OPTIONS=${{ matrix.options }} BUILD_CACHEDIR=sconsCache
env:
IECORE_RTLD_GLOBAL: 0
OCIO: ${{ env.CORTEX_BUILD_NAME }}/openColorIO/config.ocio
- name: Build Package
run: |
${{ env.PACKAGE_COMMAND }} ${{ env.CORTEX_BUILD_NAME }}.${{env.PACKAGE_EXTENSION}} ${{ env.CORTEX_BUILD_NAME }}
if: matrix.publish
- uses: actions/upload-artifact@v2
with:
name: ${{ env.CORTEX_BUILD_NAME }}
path: ${{ env.CORTEX_BUILD_NAME }}.${{ env.PACKAGE_EXTENSION }}
if: matrix.publish
- name: Publish Release
run: |
python ./.github/workflows/main/publishRelease.py --archive ${{ env.CORTEX_BUILD_NAME }}.${{ env.PACKAGE_EXTENSION }} --repo ${{ github.repository }} --releaseId ${{ env.CORTEX_GITHUB_RELEASEID }}
if: matrix.publish && env.CORTEX_GITHUB_RELEASEID != ''
env:
GITHUB_ACCESS_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Limit cache size
run: python ./.github/workflows/main/limitCacheSize.py
- name: Debug Failures
run: |
# Give MacOS crash reporter time to do its thing
sleep 20
# Print SCons logs and MacOS crash logs
shopt -s nullglob
for logFile in config.log buildConfig.log ~/Library/Logs/DiagnosticReports/*.crash
do
echo $logFile
cat $logFile
done
shell: bash
if: failure()