workflow release #283
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: workflow release | |
on: [workflow_dispatch] | |
jobs: | |
build_py_sdist: | |
name: build python sdist | |
runs-on: ubuntu-latest | |
steps: | |
- name: setup python | |
uses: actions/[email protected] | |
with: | |
# Semantic version range syntax or exact version of a Python version | |
python-version: '3.7.x' | |
- name: info | |
run: python --version && cmake --version | |
- name: install dependencies | |
run: python -m pip install --upgrade pip setuptools wheel | |
- name: checkout | |
uses: actions/[email protected] | |
- name: update submodules | |
run: git submodule update --init | |
- name: build python sdist | |
run: python setup.py sdist build --debug | |
- name: check sdist | |
run: | | |
# installs rhino3dm from the source distribution | |
# into a virtualenv and tries to import it | |
# set up directory | |
rm -rf test_install | |
mkdir test_install | |
cd test_install | |
# create virtualenv | |
python -m venv venv | |
. venv/bin/activate | |
pip install wheel | |
# install | |
pip install --verbose ../dist/*.tar.gz | |
# test | |
python -c "import rhino3dm; print(rhino3dm.__version__)" | |
#cd .. | |
#python -m unittest discover tests/python/ | |
- name: list files | |
run: ls -R | |
- name: artifact name | |
id: artifactname | |
run: | | |
cd dist | |
echo "file=$(ls *.tar.gz| head -1)" >> $GITHUB_OUTPUT | |
- name: artifacts | |
uses: actions/[email protected] | |
with: | |
path: dist | |
name: ${{ steps.artifactname.outputs.file }} | |
build_py_manylinux: | |
name: build python ${{ matrix.python-version }} manylinux_2_28 | |
runs-on: ubuntu-latest | |
container: quay.io/pypa/manylinux_2_28_x86_64 #manylinux2014_x86_64 | |
strategy: | |
matrix: | |
python-version: [cp38-cp38, cp39-cp39, cp310-cp310, cp311-cp311, cp312-cp312, cp313-cp313] | |
fail-fast: false | |
steps: | |
- name: info | |
run: /opt/python/${{ matrix.python-version }}/bin/python --version | |
- name: checkout | |
uses: actions/[email protected] #needs to stay this version until we upgrade this os | |
- name: safe directory | |
run: git config --global --add safe.directory /__w/rhino3dm/rhino3dm | |
- name: update submodules | |
run: git submodule update --init | |
- name: install dependencies | |
run: /opt/python/${{ matrix.python-version }}/bin/python -m pip install --upgrade pip setuptools wheel | |
- name: build python manylinux | |
run: /opt/python/${{ matrix.python-version }}/bin/python setup.py bdist_wheel build --debug | |
- name: audit python wheel | |
run: auditwheel repair dist/*.whl | |
- name: list files | |
run: ls -R | |
- name: test python | |
shell: bash | |
run: | | |
find ./dist -type f -name "*.whl" -exec cp '{}' ./tests/python/lib \; | |
/opt/python/${{ matrix.python-version }}/bin/python -m pip install --no-index tests/python/lib/*.whl --force-reinstall | |
cd tests/python | |
/opt/python/${{ matrix.python-version }}/bin/python -m unittest discover . | |
- name: artifact name | |
id: artifactname | |
run: | | |
cd wheelhouse | |
echo "file=$(ls *.whl| head -1)" >> $GITHUB_OUTPUT | |
- name: artifacts | |
uses: actions/[email protected] #needs to stay this version until we upgrade this os | |
with: | |
path: wheelhouse/*.whl | |
name: ${{ steps.artifactname.outputs.file }} | |
build_py_all_bdist: | |
name: build python ${{ matrix.python-version }} ${{ matrix.target }} bdist | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [windows-2019, macos-13, macos-14] | |
python-version: [3.7, 3.8, 3.9, '3.10', '3.11', '3.12', '3.13'] | |
include: | |
- os: windows-2019 | |
target: windows | |
- os: macos-13 | |
target: macos | |
- os: macos-14 | |
target: macos | |
exclude: | |
- os: macos-14 | |
python-version: 3.7 | |
fail-fast: false | |
steps: | |
- name: set up python ${{ matrix.python-version }} | |
uses: actions/[email protected] | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: info | |
run: python --version && cmake --version | |
- name: install dependencies | |
run: python -m pip install --upgrade pip setuptools wheel | |
- name: checkout | |
uses: actions/[email protected] | |
- name: update submodules | |
run: git submodule update --init | |
- name: build python ${{ matrix.python-version }} ${{ matrix.os }} | |
run: python setup.py bdist_wheel | |
- name: code-sign native libraries | |
env: | |
IDENTITY_ID: ${{ secrets.IDENTITY_ID }} | |
MACOS_CERTIFICATE: ${{ secrets.MACOS_CERTIFICATE }} | |
MACOS_CERTIFICATE_PWD: ${{ secrets.MACOS_CERTIFICATE_PWD }} | |
MACOS_KEYCHAIN_TEMP_PWD: ${{ secrets.MACOS_KEYCHAIN_TEMP_PWD }} | |
run: | | |
if [ "$RUNNER_OS" == "macOS" ]; then | |
./script/codesign-native.sh src/build | |
else | |
echo "$RUNNER_OS not supported for code-signing" | |
exit 0 | |
fi | |
shell: bash | |
- name: list files | |
run: ls -R | |
- name: test python bdist | |
shell: bash | |
run: | | |
find ./dist -type f -name "*.whl" -exec cp '{}' ./tests/python/lib \; | |
pip install --no-index tests/python/lib/*.whl --force-reinstall | |
cd tests/python | |
python -m unittest discover . | |
- name: artifact name | |
id: artifactname | |
shell: bash | |
run: | | |
cd dist | |
echo "file=$(ls *.whl| head -1)" >> $GITHUB_OUTPUT | |
- name: artifacts | |
uses: actions/[email protected] | |
with: | |
path: dist | |
name: ${{ steps.artifactname.outputs.file }} | |
build_dotnet_os: | |
name: build dotnet ${{ matrix.target }} | |
runs-on: ${{ matrix.os }} | |
container: | |
image: ${{ matrix.image }} | |
strategy: | |
matrix: | |
os: [ubuntu-latest, macos-14, windows-2022] | |
include: | |
- os: ubuntu-latest | |
target: linux | |
image: mcneel/rhino3dm-dev-amazonlinux2023 | |
artifact-path: src/build/linux/librhino3dm_native.so | |
- os: windows-2022 | |
target: windows | |
image: "" | |
artifact-path: src\build\windows\*\Release\librhino3dm_native.dll | |
- os: macos-14 | |
target: macos | |
image: "" | |
artifact-path: src/build/macos/Release/librhino3dm_native.dylib | |
fail-fast: false | |
steps: | |
#- name: setup dotnet | |
# if: ${{ matrix.target == 'macos'}} | |
# uses: actions/[email protected] | |
# with: | |
# dotnet-version: '7.0.x' | |
- name: setup cmake | |
if: ${{ matrix.target != 'linux' }} | |
uses: jwlawson/[email protected] | |
with: | |
cmake-version: '3.25.0' | |
- name: checkout | |
uses: actions/[email protected] | |
- name: safe directory | |
run: git config --global --add safe.directory /__w/rhino3dm/rhino3dm | |
- name: update submodules | |
run: ls && git submodule update --init | |
- name: bootstrap dotnet ${{ matrix.target }} | |
run: python3 script/bootstrap.py -p ${{ matrix.target }} | |
- name: setup dotnet ${{ matrix.target }} | |
run: python3 script/setup.py -p ${{ matrix.target }} -v -l | |
- name: build dotnet ${{ matrix.target }} | |
run: python3 script/build.py -p ${{ matrix.target }} -v -l | |
- name: list | |
run: "ls -R src/build/${{ matrix.target }}" | |
- name: code-sign native libraries | |
if: ${{ matrix.target == 'macos' }} | |
env: | |
IDENTITY_ID: ${{ secrets.IDENTITY_ID }} | |
MACOS_CERTIFICATE: ${{ secrets.MACOS_CERTIFICATE }} | |
MACOS_CERTIFICATE_PWD: ${{ secrets.MACOS_CERTIFICATE_PWD }} | |
MACOS_KEYCHAIN_TEMP_PWD: ${{ secrets.MACOS_KEYCHAIN_TEMP_PWD }} | |
shell: bash | |
run: ./script/codesign-native.sh src/build/macos/Release | |
- name: notarize native library | |
if: ${{ matrix.target == 'macos' }} | |
env: | |
APPLE_ID: ${{ secrets.APPLE_ID }} | |
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} | |
MACDEV_PW: ${{ secrets.MACDEV_PW }} | |
shell: bash | |
run: ./script/notarize-native.sh src/build/macos/Release/librhino3dm_native.dylib | |
- name: artifacts | |
uses: actions/[email protected] | |
with: | |
path: ${{ matrix.artifact-path }} | |
name: rhino3dm.net ${{ matrix.target }} | |
build_dotnet_arm64: | |
name: build dotnet arm 64 | |
runs-on: ubuntu-latest | |
steps: | |
- name: checkout | |
uses: actions/[email protected] | |
- name: safe directory | |
run: git config --global --add safe.directory /__w/rhino3dm/rhino3dm | |
- name: update submodules | |
run: ls && git submodule update --init | |
- name: setup QEMU | |
uses: docker/setup-qemu-action@v3 | |
with: | |
platforms: arm64 | |
- name: build rhino3dm native lib | |
uses: addnab/docker-run-action@v3 | |
with: | |
image: mcneel/rhino3dm-dev-arm64 | |
options: -v ${{ github.workspace }}:/src | |
run: | | |
uname -a | |
cd src | |
echo 'info' | |
python3 --version && cmake --version && dotnet --version && git --version | |
echo 'bootstrap' | |
python3 script/bootstrap.py -p linux | |
echo 'setup' | |
python3 script/setup.py -p linux -v -l | |
echo 'build' | |
python3 script/build.py -p linux -v -l | |
ldd src/build/linux/librhino3dm_native.so | |
- name: artifacts | |
uses: actions/[email protected] | |
with: | |
path: | | |
src/build/linux/librhino3dm_native.so | |
name: rhino3dm.net linux arm64 | |
retention-days: ${{ env.RETENTION_DAYS }} | |
pack_dotnet: | |
name: pack dotnet | |
needs: [build_dotnet_os, build_dotnet_arm64] | |
runs-on: windows-2022 | |
steps: | |
- name: set up python | |
uses: actions/[email protected] | |
with: | |
python-version: 3.7.x | |
- name: setup cmake | |
uses: jwlawson/[email protected] | |
with: | |
cmake-version: '3.21.1' | |
- name: checkout | |
uses: actions/[email protected] | |
- name: update submodules | |
run: ls && git submodule update --init | |
- name: bootstrap dotnet | |
run: python script/bootstrap.py -p windows | |
- name: setup dotnet | |
run: python script/setup.py -p windows -v | |
- name: build dotnet | |
run: dotnet build src/dotnet/Rhino3dm.csproj | |
- name: download rhino3dm.net linux | |
uses: actions/[email protected] | |
with: | |
name: rhino3dm.net linux | |
path: src/build/linux/Release/ | |
- name: download rhino3dm.net linux arm64 | |
uses: actions/[email protected] | |
with: | |
name: rhino3dm.net linux arm64 | |
path: src/build/linux/arm64/Release/ | |
- name: download rhino3dm.net macos | |
uses: actions/[email protected] | |
with: | |
name: rhino3dm.net macos | |
path: src/build/macos/Release/ | |
- name: download rhino3dm.net windows | |
uses: actions/[email protected] | |
with: | |
name: rhino3dm.net windows | |
path: src/build/windows/ | |
- name: list | |
run: "ls -R src/build/" | |
- name: pack dotnet | |
run: dotnet pack src/dotnet/Rhino3dm.csproj | |
- name: artifacts nupkg | |
uses: actions/[email protected] | |
with: | |
path: src/dotnet/bin/Release/Rhino3dm.*.nupkg #${{ matrix.artifact-path }} | |
name: rhino3dm.net nupkg | |
build_js: | |
name: build rhino3dm.js | |
runs-on: ubuntu-latest | |
container: | |
image: emscripten/emsdk:3.1.30 | |
steps: | |
- name: info | |
run: python3 --version && emcc --version && cmake --version | |
- name: checkout | |
uses: actions/[email protected] | |
- name: safe dir | |
run: git config --system --add safe.directory /__w/rhino3dm/rhino3dm | |
- name: update submodules | |
run: git submodule update --init | |
- name: bootstrap | |
run: python3 script/bootstrap.py -p js | |
- name: setup js module | |
run: python3 script/setup.py -p js -o -v -m | |
- name: build js | |
run: python3 script/build.py -p js -o -v | |
- name: copy files | |
shell: bash | |
run: | | |
mkdir src/build/javascript/artifacts | |
mv src/build/javascript/rhino3dm.js src/build/javascript/artifacts/rhino3dm.module.js | |
cp package.json src/build/javascript/artifacts | |
cp docs/javascript/RHINO3DM.JS.md src/build/javascript/artifacts/README.md | |
cp src/js/rhino3dm.d.ts src/build/javascript/artifacts/rhino3dm.d.ts | |
- name: setup js | |
run: python3 script/setup.py -p js -o -v | |
- name: build js | |
run: python3 script/build.py -p js -o -v | |
- name: copy files | |
shell: bash | |
run: | | |
mv src/build/javascript/rhino3dm.js src/build/javascript/artifacts | |
mv src/build/javascript/artifacts_js/rhino3dm.wasm src/build/javascript/artifacts | |
npm install -g uglify-js | |
cd src/build/javascript/artifacts | |
uglifyjs rhino3dm.module.js --compress -o rhino3dm.module.min.js | |
uglifyjs rhino3dm.js --compress -o rhino3dm.min.js | |
- name: artifacts | |
uses: actions/[email protected] | |
with: | |
path: src/build/javascript/artifacts | |
name: rhino3dm.js | |
retention-days: ${{ env.RETENTION_DAYS }} | |
# TESTS | |
test_javascript: | |
name: test javascript | |
runs-on: ubuntu-latest | |
needs: [build_js] | |
steps: | |
- name: info | |
run: python3 --version && cmake --version && node --version | |
- name: checkout | |
uses: actions/[email protected] | |
- name: download artifact | |
uses: actions/[email protected] | |
with: | |
name: rhino3dm.js | |
path: tests/javascript/lib | |
- name: test javascript | |
run: | | |
ls tests/javascript/lib | |
cd tests/javascript | |
npm i | |
npm test | |
test_dotnet: | |
name: test dotnet | |
runs-on: ubuntu-latest | |
needs: [pack_dotnet] | |
steps: | |
- name: checkout | |
uses: actions/[email protected] | |
- name: download rhino3dm.net nuget | |
uses: actions/[email protected] | |
with: | |
name: rhino3dm.net nupkg | |
path: tests/dotnet/lib | |
- name: test dotnet | |
run: | | |
NUGET_FILE="$(find tests/dotnet/lib -type f -name "*.nupkg")" | |
FILENAME=$(basename ${NUGET_FILE}) | |
NAME=${FILENAME%.*} | |
VERSION=${NAME:9} | |
dotnet nuget add source $(pwd)/tests/dotnet/lib | |
cd tests/dotnet | |
dotnet add package Rhino3dm -v ${VERSION} | |
dotnet build | |
dotnet test | |
# pack_py: | |
# name: pack python | |
# needs: [build_py_manylinux2014, build_py_sdist, build_py_all_bdist] | |
# runs-on: ubuntu-latest | |
# steps: | |
# - name: download python artifacts dist | |
# uses: elonh/download-artifact-regexp@master | |
# with: | |
# pattern: ^.*\.(whl|tar.gz)$ #.*whl(:|$).* | |
# path: dist | |
# - name: Display structure of downloaded files | |
# run: ls -R | |
# #- name: unzip files | |
# # run: | | |
# # mkdir output | |
# # find dist -type f -print0 | xargs -0 mv -t output | |
# # cd output | |
# # ls | |
# - name: artifacts | |
# uses: actions/[email protected] | |
# with: | |
# path: dist | |
# name: rhino3dm.py all wheels | |
# build_dotnet_ios: | |
# name: build dotnet ios | |
# runs-on: macos-11 | |
# steps: | |
# - name: setup cmake | |
# uses: jwlawson/[email protected] | |
# with: | |
# cmake-version: '3.21.1' | |
# - name: setup xcode | |
# uses: maxim-lobanov/setup-xcode@v1 | |
# with: | |
# xcode-version: '12.5' | |
# - name: info | |
# run: python3 --version && cmake --version | |
# - name: checkout | |
# uses: actions/checkout@v2 | |
# - name: update submodules | |
# run: git submodule update --init | |
# #- name: setup-xamarin | |
# # uses: maxim-lobanov/setup-xamarin@v1 | |
# # with: | |
# # mono-version: '6.12' | |
# # xamarin-ios-version: '14.14.2.5' | |
# - name: bootstrap | |
# run: python3 script/bootstrap.py -p ios | |
# - name: setup | |
# run: python3 script/setup.py -p ios -v | |
# - name: build dotnet ios | |
# run: python3 script/build.py -p ios -v | |
# - name: pack dotnet ios | |
# run: nuget pack src/dotnet/Rhino3dm.iOS.nuspec | |
# - name: artifacts nupkg | |
# uses: actions/upload-artifact@v2 | |
# with: | |
# path: Rhino3dm.iOS.*.nupkg #src/build/ios/dotnet/Rhino3dm.iOS.dll | |
# name: rhino3dm.net ios nupkg | |
# - name: artifacts | |
# uses: actions/upload-artifact@v2 | |
# with: | |
# path: src/build/ios/dotnet/Rhino3dm.iOS.dll | |
# name: rhino3dm.net ios | |
# build_dotnet_android: | |
# name: build dotnet android | |
# runs-on: macos-11 | |
# steps: | |
# - name: set up python | |
# uses: actions/[email protected] | |
# with: | |
# python-version: 3.7.1 | |
# - name: setup cmake | |
# uses: jwlawson/[email protected] | |
# with: | |
# cmake-version: '3.21.1' | |
# - name: setup xcode | |
# uses: maxim-lobanov/setup-xcode@v1 | |
# with: | |
# xcode-version: '12.5' | |
# - name: setup-xamarin | |
# uses: maxim-lobanov/setup-xamarin@v1 | |
# with: | |
# mono-version: '6.12' # specify version in '<major>.<minor>' format | |
# xamarin-android-version: '11.3.0.4' # specify full version; it is not recomended option because your pipeline can be broken suddenly in future | |
# - name: setup android ndk | |
# uses: maxim-lobanov/setup-android-tools@v1 | |
# with: | |
# packages: ndk;21.0.6113669 | |
# cache: true | |
# - name: info | |
# run: python3 --version && cmake --version | |
# - name: checkout | |
# uses: actions/checkout@v2 | |
# - name: update submodules | |
# run: git submodule update --init | |
# - name: bootstrap | |
# run: python3 script/bootstrap.py -p android | |
# - name: setup | |
# run: python3 script/setup.py -p android -v | |
# - name: build dotnet android | |
# run: python3 script/build.py -p android -v | |
# - name: pack dotnet android | |
# run: nuget pack src/dotnet/Rhino3dm.Android.nuspec | |
# - name: artifacts nupkg | |
# uses: actions/upload-artifact@v2 | |
# with: | |
# path: Rhino3dm.Android.*.nupkg #src/build/android/dotnet/Rhino3dm.Android.dll | |
# name: rhino3dm.net android nupkg | |
# - name: artifacts | |
# uses: actions/upload-artifact@v2 | |
# with: | |
# path: src/build/android/dotnet/Rhino3dm.Android.dll | |
# name: rhino3dm.net android |