kopia lustrzana https://github.com/vilemduha/blendercam
89 wiersze
3.1 KiB
YAML
89 wiersze
3.1 KiB
YAML
name: Run tests on push / PR
|
|
on:
|
|
push:
|
|
pull_request:
|
|
jobs:
|
|
build_and_test:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: ['ubuntu-latest','windows-latest']
|
|
blender_version: ['4.2.1']
|
|
# include:
|
|
# - os: 'macos-latest'
|
|
# blender_version: '4.2.1'
|
|
runs-on: ${{matrix.os}}
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4.1.1
|
|
# - name: Install bash 4(macOS)
|
|
# if: runner.os == 'macOS'
|
|
# run: brew install bash
|
|
# - name: Install blender (macOS)
|
|
# if: runner.os == 'macOS'
|
|
# run: brew install --cask blender
|
|
- name: Cache blender
|
|
id: cache-blender
|
|
if: runner.os != 'macOS'
|
|
uses: actions/cache/restore@v4
|
|
with:
|
|
path: blender
|
|
key: ${{ matrix.os }}-${{ matrix.blender_version}}-blender
|
|
- name: Download blender
|
|
id: download
|
|
if: steps.cache-blender.outputs.cache-hit != 'true' && runner.os != 'macOS'
|
|
shell: bash
|
|
run: |
|
|
declare -A os_suffixes
|
|
os_suffixes["ubuntu-latest"]="linux-x64.tar.xz"
|
|
os_suffixes["macos-latest"]="macos-x64.dmg"
|
|
os_suffixes["windows-latest"]="windows-x64.zip"
|
|
export OS_SUFFIX=${os_suffixes["${{matrix.os}}"]}
|
|
IFS='.' read -ra BLENDER_SPLIT <<< "${{matrix.blender_version}}"
|
|
export BLENDER_MAJOR=${BLENDER_SPLIT[0]}.${BLENDER_SPLIT[1]}
|
|
export BLENDER_MINOR=${BLENDER_SPLIT[2]}
|
|
export BLENDER_ARCHIVE="blender-${BLENDER_MAJOR}.${BLENDER_MINOR}-${OS_SUFFIX}"
|
|
echo Major version: $BLENDER_MAJOR
|
|
echo Minor version: $BLENDER_MINOR
|
|
echo Archive name: $BLENDER_ARCHIVE
|
|
curl -O -L https://download.blender.org/release/Blender${BLENDER_MAJOR}/${BLENDER_ARCHIVE}
|
|
echo "BLENDER_ARCHIVE=${BLENDER_ARCHIVE}" >> "$GITHUB_OUTPUT"
|
|
- name: Extract blender
|
|
if: steps.cache-blender.outputs.cache-hit != 'true' && runner.os != 'macOS'
|
|
run: |
|
|
import shutil
|
|
import os
|
|
os.makedirs("blender",exist_ok=True)
|
|
shutil.unpack_archive("${{ steps.download.outputs.BLENDER_ARCHIVE }}","blender")
|
|
shell: python
|
|
- name: Save blender
|
|
uses: actions/cache/save@v4
|
|
if: steps.cache-blender.outputs.cache-hit != 'true' && runner.os != 'macOS'
|
|
with:
|
|
path: blender
|
|
key: ${{ matrix.os }}-${{ matrix.blender_version}}-blender
|
|
- name: Make addon zip
|
|
uses: thedoctor0/zip-release@0.7.5
|
|
if: always()
|
|
with:
|
|
type: 'zip'
|
|
filename: 'fabexcnc.zip'
|
|
directory: './scripts/addons'
|
|
- name: Run tests
|
|
shell: bash
|
|
run: |
|
|
if [ "${{ runner.os }}" != "macOS" ]; then
|
|
export BLENDER_BIN_PATH=${PWD}/blender/$(ls -AU blender | head -1)
|
|
export PATH=$PATH:${BLENDER_BIN_PATH}
|
|
fi
|
|
export ADDON_PATH=${PWD}/scripts/addons/fabexcnc.zip
|
|
cd scripts/addons/cam/tests
|
|
python install_addon.py ${ADDON_PATH}
|
|
python test_suite.py -vvv
|
|
- uses: actions/upload-artifact@v4
|
|
if: always()
|
|
with:
|
|
name: fabex-${{matrix.os}}-${{matrix.blender_version}}
|
|
path: ./scripts/addons/cam
|
|
|