Skip to content

Restructuring for faster build times #190

Restructuring for faster build times

Restructuring for faster build times #190

Workflow file for this run

name: build
on:
push:
branches: [ master ]
tags:
- v*
pull_request:
branches: [ master ]
env:
BUILD_TYPE: Release
jobs:
#
# Windows
#
# __
# |\__/ \
# | |
# | __ |
# \__/ \|
#
#
maya-win:
runs-on: windows-2019
strategy:
# Without this, all containers stop if any fail
# That's bad, we want to know whether it's only one
# or if it happens to multiples or all.
fail-fast: false
matrix:
include:
- maya: "2018.7"
devkit: "https://autodesk-adn-transfer.s3-us-west-2.amazonaws.com/ADN+Extranet/M%26E/Maya/devkit+2018/Autodesk_Maya_2018_7_Update_DEVKIT_Windows.zip"
- maya: "2019.3"
devkit: "https://autodesk-adn-transfer.s3-us-west-2.amazonaws.com/ADN+Extranet/M%26E/Maya/devkit+2019/Autodesk_Maya_2019_3_Update_DEVKIT_Windows.zip"
- maya: "2020.4"
devkit: "https://autodesk-adn-transfer.s3-us-west-2.amazonaws.com/ADN+Extranet/M%26E/Maya/devkit+2020/Autodesk_Maya_2020_4_Update_DEVKIT_Windows.zip"
- maya: "2022.3"
devkit: "https://autodesk-adn-transfer.s3-us-west-2.amazonaws.com/ADN+Extranet/M%26E/Maya/devkit+2022/Autodesk_Maya_2022_3_Update_DEVKIT_Windows.zip"
- maya: "2023"
devkit: "https://autodesk-adn-transfer.s3-us-west-2.amazonaws.com/ADN+Extranet/M%26E/Maya/devkit+2023/Autodesk_Maya_2023_DEVKIT_Windows.zip"
- maya: "2024"
devkit: "https://autodesk-adn-transfer.s3-us-west-2.amazonaws.com/ADN+Extranet/M%26E/Maya/devkit+2024/Autodesk_Maya_2024_1_Update_DEVKIT_Windows.zip"
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
submodules: true
- name: Install devkit
run: |
Write-Host "Downloading Devkit: ${{matrix.devkit}}..."
Invoke-WebRequest -Uri ${{matrix.devkit}} -OutFile "$pwd/devkit.zip"
Write-Host "Extracting devkit.zip.."
Expand-Archive -LiteralPath devkit.zip -DestinationPath $pwd
- name: Configure CMake
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DMAYA_VERSION="${{matrix.maya}}" -DMAYA_DEVKIT_ROOT="$pwd/devkitBase"
- name: Build
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}}
- name: Artifacts
uses: actions/upload-artifact@v3
with:
name: windows-${{matrix.maya}}
path: build/${{env.BUILD_TYPE}}/cmdc.pyd
#
# MacOS
#
#
maya-macos-11:
runs-on: macos-11
strategy:
fail-fast: false
matrix:
include:
- maya: "2018.7"
devkit: "https://autodesk-adn-transfer.s3-us-west-2.amazonaws.com/ADN+Extranet/M%26E/Maya/devkit+2018/Autodesk_Maya_2018_7_Update_DEVKIT_Mac.dmg"
- maya: "2019.3"
devkit: "https://autodesk-adn-transfer.s3-us-west-2.amazonaws.com/ADN+Extranet/M%26E/Maya/devkit+2019/Autodesk_Maya_2019_3_Update_DEVKIT_Mac.dmg"
- maya: "2020.4"
devkit: "https://autodesk-adn-transfer.s3-us-west-2.amazonaws.com/ADN+Extranet/M%26E/Maya/devkit+2020/Autodesk_Maya_2020_4_Update_DEVKIT_Mac.dmg"
- maya: "2022.3"
devkit: "https://autodesk-adn-transfer.s3-us-west-2.amazonaws.com/ADN+Extranet/M%26E/Maya/devkit+2022/Autodesk_Maya_2022_3_Update_DEVKIT_Mac.dmg"
- maya: "2023"
devkit: "https://autodesk-adn-transfer.s3-us-west-2.amazonaws.com/ADN+Extranet/M%26E/Maya/devkit+2023/Autodesk_Maya_2023_DEVKIT_Mac.dmg"
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
submodules: true
- name: Install devkit
run: |
curl -o devkit.dmg ${{matrix.devkit}}
7z x devkit.dmg
- uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: '11.7'
- name: Configure CMake
run: |
cmake -G Xcode -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DMAYA_VERSION=${{matrix.maya}} -DMAYA_DEVKIT_ROOT="$PWD/devkitBase"
- name: Build
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}}
- name: Artifacts
uses: actions/upload-artifact@v3
with:
name: macos-${{matrix.maya}}
path: build/${{env.BUILD_TYPE}}/cmdc.so
maya-macos-12:
runs-on: macos-12
strategy:
fail-fast: false
matrix:
include:
- maya: "2024"
devkit: "https://autodesk-adn-transfer.s3-us-west-2.amazonaws.com/ADN+Extranet/M%26E/Maya/devkit+2024/Autodesk_Maya_2024_1_Update_DEVKIT_Mac.dmg"
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
submodules: true
- name: Install devkit
run: |
curl -o devkit.dmg ${{matrix.devkit}}
7z x devkit.dmg
- uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: '13.4'
- name: Configure CMake
run: |
cmake -G Xcode -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DMAYA_VERSION=${{matrix.maya}} -DMAYA_DEVKIT_ROOT="$PWD/devkitBase"
- name: Build
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}}
- name: Artifacts
uses: actions/upload-artifact@v3
with:
name: macos-${{matrix.maya}}
path: build/${{env.BUILD_TYPE}}/cmdc.so
#
# Linux
#
# _
# |o\
# / \
# / \
# |_|___|
#
#
maya-linux:
runs-on: ubuntu-latest
container: scottenglert/maya-build:${{matrix.maya}}
strategy:
fail-fast: false
matrix:
include:
- maya: "2018.7"
- maya: "2019.3"
- maya: "2020.4"
- maya: "2022.3"
- maya: "2023"
- maya: "2024"
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
submodules: true
- name: Configure CMake
run: |
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DMAYA_VERSION=${{matrix.maya}} -DMAYA_DEVKIT_ROOT="/usr/autodesk/devkitBase" ..
- name: Build
run: cmake --build ./build --config ${{env.BUILD_TYPE}}
- name: Artifacts
uses: actions/upload-artifact@v3
with:
name: linux-${{matrix.maya}}
path: build/cmdc.so
generate-stubs:
needs: [maya-linux]
runs-on: ubuntu-latest
container: scottenglert/maya-test:2022
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Download artifacts
uses: actions/download-artifact@v3
with:
name: linux-2022.3
path: modules
- name: Build stubs
run: |
mayapy -m pip install --user pybind11-stubgen && \
export PYTHONPATH=$(pwd)/modules
mayapy ./scripts/generate_stubs.py cmdc.pyi
- name: Artifacts
uses: actions/upload-artifact@v3
with:
name: stubs
path: |
cmdc.pyi
test:
needs: [maya-linux]
runs-on: ubuntu-latest
container: ${{matrix.image}}
strategy:
fail-fast: false
matrix:
include:
- maya: "2018.7" # For distribution
image: "mottosso/maya:2018.7" # For docker
pip: "2.7/get-pip.py"
- maya: "2019.3"
image: "mottosso/maya:2019"
pip: "2.7/get-pip.py"
- maya: "2020.4"
image: "mottosso/maya:2020"
pip: "2.7/get-pip.py"
- maya: "2022.3"
image: "mottosso/maya:2022"
pip: "get-pip.py"
- maya: "2023"
image: "scottenglert/maya-test:2023"
pip: "get-pip.py"
- maya: "2024"
image: "scottenglert/maya-test:2024"
pip: "get-pip.py"
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Download artifacts
uses: actions/download-artifact@v3
with:
name: linux-${{matrix.maya}}
path: modules
# We'll lock each version to one that works with both Python 2.7 and 3.7
- name: Setup Test Environment
run: |
wget https://bootstrap.pypa.io/pip/${{matrix.pip}}
mayapy get-pip.py --user
mayapy -m pip install --user \
nose==1.3.7 \
nose-exclude==0.5.0 \
coverage==5.5 \
flaky==3.7.0 \
six==1.16.0 \
sphinx==1.8.5 \
sphinxcontrib-napoleon==0.7
# Since 2019, this sucker throws an unnecessary
# warning if not declared.
# The MAYA_NO_STANDALONE_ATEXIT is needed to return a non 0 return code for test failure
# this seems to be addressed with bug fix MAYA-122975 (Maya 2024)
- name: Environment
run: |
mkdir -p /var/tmp/runtime-root
export XDG_RUNTIME_DIR=/var/tmp/runtime-root
export MAYA_DISABLE_ADP=1
export MAYA_NO_STANDALONE_ATEXIT=1
- name: Tests
run: |
pwd
ls
mayapy --version
export PYTHONPATH=$(pwd)/modules:${PYTHONPATH}
mayapy -m nose -xv --exe ./tests
#
# Shipping
#
# _________
# |\ _ _ _ _\
# | \________\
# | | |
# | | |
# \|________|
#
#
upload_release:
name: Upload release
needs: [maya-win, maya-linux, maya-macos-11, maya-macos-12, generate-stubs, test]
runs-on: ubuntu-latest
# Only run on e.g. v0.1.0
if: startsWith(github.ref, 'refs/tags/v')
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Download artifacts
uses: actions/download-artifact@v3
# Omitting name: means "download all artifacts"
# Destination directory structure:
# ~/modules
# /cmdc-0.1.0
# windows-2018.7/cmdc.pyd
# windows-2019.3/cmdc.pyd
# windows-2020.4/cmdc.pyd
# windows-2022.3/cmdc.pyd
# windows-2023/cmdc.pyd
# linux-2018.7/cmdc.so
# linux-2019.3/cmdc.so
# linux-2020.4/cmdc.so
# linux-2022.3/cmdc.so
# linux-2023/cmdc.so
# macos-2018.7/cmdc.so
# macos-2019.3/cmdc.so
# macos-2020.4/cmdc.so
# macos-2022.3/cmdc.so
# macos-2023/cmdc.so
# stubs/cmdc.pyi
# /cmdc.mod
with:
path: modules/cmdc-0.1.0
- name: Create distribution
run: |
cp ./cmdc.mod modules/
zip -r cmdc-0.1.0.zip modules/
- name: Upload distribution
uses: "marvinpinto/action-automatic-releases@latest"
with:
repo_token: "${{ secrets.GITHUB_TOKEN }}"
prerelease: false
files: |
cmdc-*.zip