Merge pull request #33 from scottenglert/master #194
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" | |
- 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}} | |
MOUNTDIR=$(hdiutil mount devkit.dmg | awk 'END {$1=$2=""; print $0}') | |
cp -r $MOUNTDIR . | |
- 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 |