* Update build_orca.yml
Preventing nested zipping of the portable Windows build. 😊
* Update build_orca.yml
* uncommented lines 180-184
311 lines
14 KiB
YAML
311 lines
14 KiB
YAML
on:
|
|
workflow_call:
|
|
inputs:
|
|
cache-key:
|
|
required: true
|
|
type: string
|
|
cache-path:
|
|
required: true
|
|
type: string
|
|
os:
|
|
required: true
|
|
type: string
|
|
arch:
|
|
required: false
|
|
type: string
|
|
|
|
jobs:
|
|
build_orca:
|
|
name: Build OrcaSlicer
|
|
runs-on: ${{ inputs.os }}
|
|
env:
|
|
date:
|
|
ver:
|
|
ver_pure:
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
with:
|
|
lfs: 'true'
|
|
|
|
- name: load cached deps
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: ${{ inputs.cache-path }}
|
|
key: ${{ inputs.cache-key }}
|
|
fail-on-cache-miss: true
|
|
|
|
- uses: lukka/get-cmake@latest
|
|
with:
|
|
cmakeVersion: "~3.28.0" # use most recent 3.28.x version
|
|
|
|
- name: Get the version and date on Ubuntu and macOS
|
|
if: inputs.os != 'windows-latest'
|
|
run: |
|
|
ver_pure=$(grep 'set(SoftFever_VERSION' version.inc | cut -d '"' -f2)
|
|
if [[ "${{ github.event_name }}" == "pull_request" ]]; then
|
|
ver="PR-${{ github.event.number }}"
|
|
else
|
|
ver=V$ver_pure
|
|
fi
|
|
echo "ver=$ver" >> $GITHUB_ENV
|
|
echo "ver_pure=$ver_pure" >> $GITHUB_ENV
|
|
echo "date=$(date +'%Y%m%d')" >> $GITHUB_ENV
|
|
shell: bash
|
|
|
|
- name: Get the version and date on Windows
|
|
if: inputs.os == 'windows-latest'
|
|
run: |
|
|
$date = Get-Date -Format 'yyyyMMdd'
|
|
$ref = "${{ github.ref }}"
|
|
$eventName = "${{ github.event_name }}"
|
|
$prNumber = "${{ github.event.number }}"
|
|
|
|
if ($eventName -eq 'pull_request') {
|
|
$ver = "PR" + $prNumber
|
|
} else {
|
|
$versionContent = Get-Content version.inc -Raw
|
|
if ($versionContent -match 'set\(SoftFever_VERSION "(.*?)"\)') {
|
|
$ver = $matches[1]
|
|
}
|
|
$ver = "V$ver"
|
|
}
|
|
|
|
echo "ver=$ver" | Out-File -Append -FilePath $env:GITHUB_ENV -Encoding utf8
|
|
echo "date=$date" | Out-File -Append -FilePath $env:GITHUB_ENV -Encoding utf8
|
|
echo "date: ${{ env.date }} version: ${{ env.ver }}"
|
|
shell: pwsh
|
|
|
|
# Mac
|
|
- name: Install tools mac
|
|
if: inputs.os == 'macos-14'
|
|
run: |
|
|
brew install ninja libtool
|
|
brew list
|
|
mkdir -p ${{ github.workspace }}/deps/build_${{inputs.arch}}
|
|
mkdir -p ${{ github.workspace }}/deps/build_${{inputs.arch}}/OrcaSlicer_dep_${{inputs.arch}}
|
|
|
|
- name: Free disk space
|
|
if: inputs.os == 'macos-14'
|
|
run: |
|
|
df -hI /dev/disk3s1s1
|
|
sudo find /Applications -maxdepth 1 -type d -name "Xcode_*.app" ! -name "Xcode_15.4.app" -exec rm -rf {} +
|
|
sudo rm -rf ~/Library/Developer/CoreSimulator/Caches/*
|
|
df -hI /dev/disk3s1s1
|
|
|
|
- name: Build slicer mac
|
|
if: inputs.os == 'macos-14'
|
|
working-directory: ${{ github.workspace }}
|
|
run: |
|
|
./build_release_macos.sh -s -n -x -a ${{inputs.arch}} -t 10.15 -1
|
|
|
|
# Thanks to RaySajuuk, it's working now
|
|
- name: Sign app and notary
|
|
if: (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/heads/release/')) && inputs.os == 'macos-14'
|
|
working-directory: ${{ github.workspace }}
|
|
env:
|
|
BUILD_CERTIFICATE_BASE64: ${{ secrets.BUILD_CERTIFICATE_BASE64 }}
|
|
P12_PASSWORD: ${{ secrets.P12_PASSWORD }}
|
|
KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }}
|
|
CERTIFICATE_ID: ${{ secrets.MACOS_CERTIFICATE_ID }}
|
|
run: |
|
|
CERTIFICATE_PATH=$RUNNER_TEMP/build_certificate.p12
|
|
KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db
|
|
echo -n "$BUILD_CERTIFICATE_BASE64" | base64 --decode --output $CERTIFICATE_PATH
|
|
security create-keychain -p $KEYCHAIN_PASSWORD $KEYCHAIN_PATH
|
|
security set-keychain-settings -lut 21600 $KEYCHAIN_PATH
|
|
security unlock-keychain -p $KEYCHAIN_PASSWORD $KEYCHAIN_PATH
|
|
security import $CERTIFICATE_PATH -P $P12_PASSWORD -A -t cert -f pkcs12 -k $KEYCHAIN_PATH
|
|
security list-keychain -d user -s $KEYCHAIN_PATH
|
|
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k $P12_PASSWORD $KEYCHAIN_PATH
|
|
codesign --deep --force --verbose --options runtime --timestamp --entitlements ${{ github.workspace }}/scripts/disable_validation.entitlements --sign "$CERTIFICATE_ID" ${{ github.workspace }}/build_${{inputs.arch}}/OrcaSlicer/OrcaSlicer.app
|
|
ln -s /Applications ${{ github.workspace }}/build_${{inputs.arch}}/OrcaSlicer/Applications
|
|
hdiutil create -volname "OrcaSlicer" -srcfolder ${{ github.workspace }}/build_${{inputs.arch}}/OrcaSlicer -ov -format UDZO OrcaSlicer_Mac_${{inputs.arch}}_${{ env.ver }}.dmg
|
|
codesign --deep --force --verbose --options runtime --timestamp --entitlements ${{ github.workspace }}/scripts/disable_validation.entitlements --sign "$CERTIFICATE_ID" OrcaSlicer_Mac_${{inputs.arch}}_${{ env.ver }}.dmg
|
|
xcrun notarytool store-credentials "notarytool-profile" --apple-id "${{ secrets.APPLE_DEV_ACCOUNT }}" --team-id "${{ secrets.TEAM_ID }}" --password "${{ secrets.APP_PWD }}"
|
|
xcrun notarytool submit "OrcaSlicer_Mac_${{inputs.arch}}_${{ env.ver }}.dmg" --keychain-profile "notarytool-profile" --wait
|
|
xcrun stapler staple OrcaSlicer_Mac_${{inputs.arch}}_${{ env.ver }}.dmg
|
|
|
|
- name: Create DMG without notary
|
|
if: github.ref != 'refs/heads/main' && inputs.os == 'macos-14'
|
|
working-directory: ${{ github.workspace }}
|
|
run: |
|
|
ln -s /Applications ${{ github.workspace }}/build_${{inputs.arch}}/OrcaSlicer/Applications
|
|
hdiutil create -volname "OrcaSlicer" -srcfolder ${{ github.workspace }}/build_${{inputs.arch}}/OrcaSlicer -ov -format UDZO OrcaSlicer_Mac_${{inputs.arch}}_${{ env.ver }}.dmg
|
|
|
|
- name: Upload artifacts mac
|
|
if: inputs.os == 'macos-14'
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: OrcaSlicer_Mac_${{inputs.arch}}_${{ env.ver }}
|
|
path: ${{ github.workspace }}/OrcaSlicer_Mac_${{inputs.arch}}_${{ env.ver }}.dmg
|
|
|
|
- name: Deploy Mac release
|
|
if: github.ref == 'refs/heads/main' && inputs.os == 'macos-14'
|
|
uses: WebFreak001/deploy-nightly@v3.2.0
|
|
with:
|
|
upload_url: https://uploads.github.com/repos/SoftFever/OrcaSlicer/releases/137995723/assets{?name,label}
|
|
release_id: 137995723
|
|
asset_path: ${{ github.workspace }}/OrcaSlicer_Mac_${{inputs.arch}}_${{ env.ver }}.dmg
|
|
asset_name: OrcaSlicer_Mac_${{inputs.arch}}_${{ env.ver }}.dmg
|
|
asset_content_type: application/octet-stream
|
|
max_releases: 1 # optional, if there are more releases than this matching the asset_name, the oldest ones are going to be deleted
|
|
|
|
# Windows
|
|
- name: setup MSVC
|
|
if: inputs.os == 'windows-latest'
|
|
uses: microsoft/setup-msbuild@v2
|
|
|
|
- name: Install nsis
|
|
if: inputs.os == 'windows-latest'
|
|
run: |
|
|
dir "C:/Program Files (x86)/Windows Kits/10/Include"
|
|
choco install nsis
|
|
|
|
- name: Build slicer Win
|
|
if: inputs.os == 'windows-latest'
|
|
working-directory: ${{ github.workspace }}
|
|
env:
|
|
WindowsSdkDir: 'C:\Program Files (x86)\Windows Kits\10\'
|
|
WindowsSDKVersion: '10.0.22000.0\'
|
|
run: .\build_release_vs2022.bat slicer
|
|
|
|
- name: Create installer Win
|
|
if: inputs.os == 'windows-latest'
|
|
working-directory: ${{ github.workspace }}/build
|
|
run: |
|
|
cpack -G NSIS
|
|
|
|
- name: Pack app
|
|
if: inputs.os == 'windows-latest'
|
|
working-directory: ${{ github.workspace }}/build
|
|
shell: cmd
|
|
run: '"C:/Program Files/7-Zip/7z.exe" a -tzip OrcaSlicer_Windows_${{ env.ver }}_portable.zip ${{ github.workspace }}/build/OrcaSlicer'
|
|
|
|
- name: Pack PDB
|
|
if: inputs.os == 'windows-latest'
|
|
working-directory: ${{ github.workspace }}/build/src/Release
|
|
shell: cmd
|
|
run: '"C:/Program Files/7-Zip/7z.exe" a -m0=lzma2 -mx9 Debug_PDB_${{ env.ver }}_for_developers_only.7z *.pdb'
|
|
|
|
- name: Upload artifacts Win zip
|
|
if: inputs.os == 'windows-latest'
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: OrcaSlicer_Windows_${{ env.ver }}_portable
|
|
path: ${{ github.workspace }}/build/OrcaSlicer
|
|
|
|
- name: Upload artifacts Win installer
|
|
if: inputs.os == 'windows-latest'
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: OrcaSlicer_Windows_${{ env.ver }}
|
|
path: ${{ github.workspace }}/build/OrcaSlicer*.exe
|
|
|
|
- name: Upload artifacts Win PDB
|
|
if: inputs.os == 'windows-latest'
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: PDB
|
|
path: ${{ github.workspace }}/build/src/Release/Debug_PDB_${{ env.ver }}_for_developers_only.7z
|
|
|
|
- name: Deploy Windows release portable
|
|
if: github.ref == 'refs/heads/main' && inputs.os == 'windows-latest'
|
|
uses: WebFreak001/deploy-nightly@v3.2.0
|
|
with:
|
|
upload_url: https://uploads.github.com/repos/SoftFever/OrcaSlicer/releases/137995723/assets{?name,label}
|
|
release_id: 137995723
|
|
asset_path: ${{ github.workspace }}/build/OrcaSlicer_Windows_${{ env.ver }}_portable.zip
|
|
asset_name: OrcaSlicer_Windows_${{ env.ver }}_portable.zip
|
|
asset_content_type: application/x-zip-compressed
|
|
max_releases: 1
|
|
|
|
- name: Deploy Windows release installer
|
|
if: github.ref == 'refs/heads/main' && inputs.os == 'windows-latest'
|
|
uses: WebFreak001/deploy-nightly@v3.2.0
|
|
with:
|
|
upload_url: https://uploads.github.com/repos/SoftFever/OrcaSlicer/releases/137995723/assets{?name,label}
|
|
release_id: 137995723
|
|
asset_path: ${{ github.workspace }}/build/OrcaSlicer_Windows_Installer_${{ env.ver }}.exe
|
|
asset_name: OrcaSlicer_Windows_Installer_${{ env.ver }}.exe
|
|
asset_content_type: application/x-msdownload
|
|
max_releases: 1
|
|
|
|
# Ubuntu
|
|
- name: Install dependencies
|
|
if: inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04'
|
|
env:
|
|
apt-cmd: ${{ (inputs.os == 'ubuntu-20.04' && 'apt-fast') || (inputs.os == 'ubuntu-24.04' && 'sudo apt-get') || '' }}
|
|
webkit-ver: ${{ (inputs.os == 'ubuntu-20.04' && '4.0') || (inputs.os == 'ubuntu-24.04' && '4.1') || '' }}
|
|
libfuse2-pkg: ${{ (inputs.os == 'ubuntu-20.04' && 'libfuse2') || (inputs.os == 'ubuntu-24.04' && 'libfuse2t64') || '' }}
|
|
run: |
|
|
${{ env.apt-cmd }} update
|
|
${{ env.apt-cmd }} install -y autoconf build-essential cmake curl eglexternalplatform-dev \
|
|
extra-cmake-modules file git libcairo2-dev libcurl4-openssl-dev libdbus-1-dev libglew-dev libglu1-mesa-dev \
|
|
libglu1-mesa-dev libgstreamer1.0-dev libgstreamerd-3-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev \
|
|
libgtk-3-dev libgtk-3-dev libmspack-dev libosmesa6-dev libsecret-1-dev libsoup2.4-dev libssl-dev libudev-dev libwayland-dev \
|
|
libwebkit2gtk-${{ env.webkit-ver }}-dev libxkbcommon-dev locales locales-all m4 pkgconf sudo wayland-protocols wget ${{ env.libfuse2-pkg }}
|
|
|
|
- name: Install dependencies from BuildLinux.sh
|
|
if: inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04'
|
|
shell: bash
|
|
run: sudo ./BuildLinux.sh -ur
|
|
|
|
- name: Fix permissions
|
|
if: inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04'
|
|
shell: bash
|
|
run: sudo chown $USER -R ./
|
|
|
|
- name: Build slicer
|
|
if: inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04'
|
|
shell: bash
|
|
env:
|
|
ubuntu-ver-str: ${{ (inputs.os == 'ubuntu-24.04' && '_Ubuntu2404') || '' }}
|
|
run: |
|
|
./BuildLinux.sh -isr
|
|
mv -n ./build/OrcaSlicer_Linux_V${{ env.ver_pure }}.AppImage ./build/OrcaSlicer_Linux_AppImage${{ env.ubuntu-ver-str }}_${{ env.ver }}.AppImage
|
|
chmod +x ./build/OrcaSlicer_Linux_AppImage${{ env.ubuntu-ver-str }}_${{ env.ver }}.AppImage
|
|
|
|
- name: Build orca_custom_preset_tests
|
|
if: github.ref == 'refs/heads/main' && inputs.os == 'ubuntu-20.04'
|
|
working-directory: ${{ github.workspace }}/build/src
|
|
shell: bash
|
|
run: |
|
|
./OrcaSlicer_profile_validator -p ${{ github.workspace }}/resources/profiles -g 1
|
|
cd ${{ github.workspace }}/resources/profiles
|
|
zip -r orca_custom_preset_tests.zip user/
|
|
|
|
- name: Upload artifacts Ubuntu
|
|
if: ${{ ! env.ACT && inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04' }}
|
|
env:
|
|
ubuntu-ver: ${{ (inputs.os == 'ubuntu-20.04' && '2004') || (inputs.os == 'ubuntu-24.04' && '2404') || '' }}
|
|
ubuntu-ver-str: ${{ (inputs.os == 'ubuntu-24.04' && '_Ubuntu2404') || '' }}
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: OrcaSlicer_Linux_ubuntu_${{ env.ubuntu-ver }}_${{ env.ver }}
|
|
path: './build/OrcaSlicer_Linux_AppImage${{ env.ubuntu-ver-str }}_${{ env.ver }}.AppImage'
|
|
|
|
- name: Deploy Ubuntu release
|
|
if: ${{ ! env.ACT && github.ref == 'refs/heads/main' && (inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04') }}
|
|
env:
|
|
ubuntu-ver-str: ${{ (inputs.os == 'ubuntu-24.04' && '_Ubuntu2404') || '' }}
|
|
uses: WebFreak001/deploy-nightly@v3.2.0
|
|
with:
|
|
upload_url: https://uploads.github.com/repos/SoftFever/OrcaSlicer/releases/137995723/assets{?name,label}
|
|
release_id: 137995723
|
|
asset_path: ./build/OrcaSlicer_Linux_AppImage${{ env.ubuntu-ver-str }}_${{ env.ver }}.AppImage
|
|
asset_name: OrcaSlicer_Linux_AppImage${{ env.ubuntu-ver-str }}_${{ env.ver }}.AppImage
|
|
asset_content_type: application/octet-stream
|
|
max_releases: 1 # optional, if there are more releases than this matching the asset_name, the oldest ones are going to be deleted
|
|
|
|
- name: Deploy orca_custom_preset_tests
|
|
if: ${{ ! env.ACT && github.ref == 'refs/heads/main' && inputs.os == 'ubuntu-20.04' }}
|
|
uses: WebFreak001/deploy-nightly@v3.2.0
|
|
with:
|
|
upload_url: https://uploads.github.com/repos/SoftFever/OrcaSlicer/releases/137995723/assets{?name,label}
|
|
release_id: 137995723
|
|
asset_path: ${{ github.workspace }}/resources/profiles/orca_custom_preset_tests.zip
|
|
asset_name: orca_custom_preset_tests.zip
|
|
asset_content_type: application/octet-stream
|
|
max_releases: 1
|