Restructuring for faster build times #188
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: 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" | |
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: | |
runs-on: macos-10.15 | |
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: '10.3' | |
- 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" | |
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" | |
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. | |
- 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, 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 |