workflow release #260
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 | |
- 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] | |
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: build python manylinux | |
run: /opt/python/${{ matrix.python-version }}/bin/python setup.py bdist_wheel | |
- 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 | |
/opt/python/${{ matrix.python-version }}/bin/python -m unittest discover tests/python/ | |
- 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-12, macos-14] | |
python-version: [3.7, 3.8, 3.9, '3.10', '3.11', '3.12'] | |
include: | |
- os: windows-2019 | |
target: windows | |
- os: macos-12 | |
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 | |
python -m unittest discover tests/python/ | |
- 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-amzn2 | |
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_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 | |
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: | | |
cp package.json src/build/javascript/artifacts_js | |
cp docs/javascript/RHINO3DM.JS.md src/build/javascript/artifacts_js/README.md | |
cp src/js/rhino3dm.release.js src/build/javascript/artifacts_js/rhino3dm.js | |
cp src/js/rhino3dm.release.min.js src/build/javascript/artifacts_js/rhino3dm.min.js | |
cp src/js/rhino3dm.release.module.js src/build/javascript/artifacts_js/rhino3dm.module.js | |
cp src/js/rhino3dm.release.module.min.js src/build/javascript/artifacts_js/rhino3dm.module.min.js | |
cp src/js/rhino3dm.d.ts src/build/javascript/artifacts_js/rhino3dm.d.ts | |
- name: artifacts | |
uses: actions/[email protected] | |
with: | |
path: src/build/javascript/artifacts_js | |
name: rhino3dm.js | |
retention-days: ${{ env.RETENTION_DAYS }} | |
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: ubuntu-latest | |
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: test dotnet | |
run: | | |
dotnet nuget add source $(pwd)/src/dotnet/bin/Release/ | |
cd tests/dotnet/rhino3dm_test | |
dotnet remove package Rhino3dm | |
dotnet nuget locals all --clear | |
dotnet add package Rhino3dm | |
dotnet build | |
dotnet test | |
- name: artifacts nupkg | |
uses: actions/[email protected] | |
with: | |
path: src/dotnet/bin/Release/Rhino3dm.*.nupkg #${{ matrix.artifact-path }} | |
name: rhino3dm.net nupkg | |
# 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 | |
# 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 |