mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-07-30 14:22:07 +00:00
build pipeline
This commit is contained in:
421
.github/workflows/build_all.yml
vendored
421
.github/workflows/build_all.yml
vendored
@@ -1,162 +1,259 @@
|
|||||||
name: Build all
|
name: Build all
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
- 2.2.0
|
- 2.2.0
|
||||||
- release/*
|
- release/*
|
||||||
paths:
|
paths:
|
||||||
- 'deps/**'
|
- 'deps/**'
|
||||||
- 'src/**'
|
- 'src/**'
|
||||||
- '**/CMakeLists.txt'
|
- '**/CMakeLists.txt'
|
||||||
- 'version.inc'
|
- 'version.inc'
|
||||||
- 'localization/**'
|
- 'localization/**'
|
||||||
- 'resources/**'
|
- 'resources/**'
|
||||||
- ".github/workflows/build_*.yml"
|
- ".github/workflows/build_*.yml"
|
||||||
- 'scripts/flatpak/**'
|
- 'scripts/flatpak/**'
|
||||||
|
|
||||||
pull_request:
|
pull_request:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
- 2.2.0
|
- 2.2.0
|
||||||
- release/*
|
- release/*
|
||||||
paths:
|
paths:
|
||||||
- 'deps/**'
|
- 'deps/**'
|
||||||
- 'src/**'
|
- 'src/**'
|
||||||
- '**/CMakeLists.txt'
|
- '**/CMakeLists.txt'
|
||||||
- 'version.inc'
|
- 'version.inc'
|
||||||
- ".github/workflows/build_*.yml"
|
- ".github/workflows/build_*.yml"
|
||||||
- 'build_linux.sh'
|
- 'build_linux.sh'
|
||||||
- 'build_release_vs2022.bat'
|
- 'build_release_vs2022.bat'
|
||||||
- 'build_release_macos.sh'
|
- 'build_release_macos.sh'
|
||||||
- 'scripts/flatpak/**'
|
- 'scripts/flatpak/**'
|
||||||
|
|
||||||
schedule:
|
schedule:
|
||||||
- cron: '35 7 * * *' # run once a day near midnight US Pacific time
|
- cron: '35 7 * * *' # run once a day near midnight US Pacific time
|
||||||
|
|
||||||
workflow_dispatch: # allows for manual dispatch
|
workflow_dispatch: # allows for manual dispatch
|
||||||
inputs:
|
inputs:
|
||||||
build-deps-only:
|
build-deps-only:
|
||||||
description: 'Only build dependencies (bypasses caching)'
|
description: 'Only build dependencies (bypasses caching)'
|
||||||
type: boolean
|
type: boolean
|
||||||
default: false
|
default: false
|
||||||
|
|
||||||
concurrency:
|
concurrency:
|
||||||
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
|
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
|
||||||
cancel-in-progress: true
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build_all:
|
build_all:
|
||||||
name: Build All
|
name: Build All
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
# Deprecate 20.04appimage
|
# Deprecate 20.04appimage
|
||||||
# - os: ubuntu-20.04
|
# - os: ubuntu-20.04
|
||||||
- os: ubuntu-24.04
|
- os: ubuntu-24.04
|
||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
- os: macos-14
|
- os: macos-14
|
||||||
arch: arm64
|
arch: arm64
|
||||||
uses: ./.github/workflows/build_check_cache.yml
|
uses: ./.github/workflows/build_check_cache.yml
|
||||||
with:
|
with:
|
||||||
os: ${{ matrix.os }}
|
os: ${{ matrix.os }}
|
||||||
arch: ${{ matrix.arch }}
|
arch: ${{ matrix.arch }}
|
||||||
build-deps-only: ${{ inputs.build-deps-only || false }}
|
build-deps-only: ${{ inputs.build-deps-only || false }}
|
||||||
force-build: ${{ github.event_name == 'schedule' }}
|
force-build: ${{ github.event_name == 'schedule' }}
|
||||||
secrets: inherit
|
secrets: inherit
|
||||||
flatpak:
|
|
||||||
name: "Flatpak"
|
publish_release:
|
||||||
concurrency:
|
name: Publish Release
|
||||||
group: flatpak-${{ matrix.variant.arch }}-${{ github.event.pull_request.number || github.ref }}
|
needs: [build_all]
|
||||||
cancel-in-progress: false
|
if: ${{ !cancelled() && needs.build_all.result == 'success' && github.event_name != 'pull_request' && github.repository != 'Snapmaker/OrcaSlicer' && inputs.build-deps-only != true }}
|
||||||
container:
|
runs-on: ubuntu-latest
|
||||||
image: ghcr.io/flathub-infra/flatpak-github-actions:gnome-48
|
permissions:
|
||||||
options: --privileged
|
actions: read
|
||||||
volumes:
|
contents: write
|
||||||
- /usr/local/lib/android:/usr/local/lib/android
|
steps:
|
||||||
- /usr/share/dotnet:/usr/share/dotnet
|
- uses: actions/checkout@v5
|
||||||
- /opt/ghc:/opt/ghc1
|
|
||||||
- /usr/local/share/boost:/usr/local/share/boost1
|
- uses: actions/download-artifact@v4
|
||||||
strategy:
|
with:
|
||||||
matrix:
|
path: release-assets
|
||||||
variant:
|
|
||||||
- arch: x86_64
|
- name: Compute release metadata
|
||||||
runner: ubuntu-24.04
|
id: release_meta
|
||||||
- arch: aarch64
|
shell: bash
|
||||||
runner: ubuntu-24.04-arm
|
run: |
|
||||||
runs-on: ${{ matrix.variant.runner }}
|
ref_name="${GITHUB_REF_NAME}"
|
||||||
env:
|
safe_ref=$(printf '%s' "$ref_name" | tr '/ ' '--' | tr -cd '[:alnum:]._-' )
|
||||||
date:
|
version=$(grep 'set(Snapmaker_VERSION' version.inc | cut -d '"' -f2)
|
||||||
ver:
|
tag="v${version}"
|
||||||
ver_pure:
|
title="Snapmaker Orca Full Spectrum v${version}"
|
||||||
steps:
|
|
||||||
- name: "Remove unneeded stuff to free disk space"
|
# Look for a release notes file matching the version
|
||||||
run:
|
notes_file="RELEASE_NOTES_v${version}.md"
|
||||||
rm -rf /usr/local/lib/android/* /usr/share/dotnet/* /opt/ghc1/* "/usr/local/share/boost1/*"
|
if [ -f "$notes_file" ]; then
|
||||||
- uses: actions/checkout@v5
|
notes_content=$(cat "$notes_file")
|
||||||
- name: Get the version and date
|
else
|
||||||
run: |
|
notes_content="Automated build for ${GITHUB_REPOSITORY}.
|
||||||
ver_pure=$(grep 'set(Snapmaker_VERSION' version.inc | cut -d '"' -f2)
|
|
||||||
if [[ "${{ github.event_name }}" == "pull_request" ]]; then
|
- Ref: ${GITHUB_REF_NAME}
|
||||||
ver="PR-${{ github.event.number }}"
|
- Commit: ${GITHUB_SHA}
|
||||||
else
|
- Version: V${version}
|
||||||
ver=V$ver_pure
|
|
||||||
fi
|
macOS artifacts published from this fork are unsigned and not notarized."
|
||||||
echo "ver=$ver" >> $GITHUB_ENV
|
fi
|
||||||
echo "ver_pure=$ver_pure" >> $GITHUB_ENV
|
|
||||||
echo "date=$(date +'%Y%m%d')" >> $GITHUB_ENV
|
{
|
||||||
shell: bash
|
echo "tag=$tag"
|
||||||
- uses: flathub-infra/flatpak-github-actions/flatpak-builder@master
|
echo "title=$title"
|
||||||
with:
|
echo "version=V$version"
|
||||||
bundle: Snapmaker_Orca-Linux-flatpak_${{ env.ver }}_${{ matrix.variant.arch }}.flatpak
|
echo "notes<<NOTES_EOF"
|
||||||
manifest-path: scripts/flatpak/io.github.Snapmaker.Snapmaker_Orca.yml
|
echo "$notes_content"
|
||||||
cache: true
|
echo "NOTES_EOF"
|
||||||
arch: ${{ matrix.variant.arch }}
|
} >> "$GITHUB_OUTPUT"
|
||||||
upload-artifact: false
|
|
||||||
- name: Find Flatpak bundle file
|
- name: Collect release files
|
||||||
id: find_bundle
|
id: collect_files
|
||||||
working-directory: ${{ github.workspace }}
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
BUNDLE_NAME="Snapmaker_Orca-Linux-flatpak_${{ env.ver }}_${{ matrix.variant.arch }}.flatpak"
|
mkdir -p release-upload
|
||||||
# Try multiple possible locations
|
find release-assets -type f \
|
||||||
if [ -f "$BUNDLE_NAME" ]; then
|
\( -name '*.dmg' -o -name '*.AppImage' -o -name '*.exe' -o -name '*.zip' -o -name '*.flatpak' -o -name 'Snapmaker_Orca_profile_validator' \) \
|
||||||
BUNDLE_PATH="$(pwd)/$BUNDLE_NAME"
|
-print -exec cp -f {} release-upload/ \;
|
||||||
elif [ -f "/__w/Snapmaker_Orca/Snapmaker_Orca/$BUNDLE_NAME" ]; then
|
count=$(find release-upload -maxdepth 1 -type f | wc -l | tr -d ' ')
|
||||||
BUNDLE_PATH="/__w/Snapmaker_Orca/Snapmaker_Orca/$BUNDLE_NAME"
|
echo "count=$count" >> "$GITHUB_OUTPUT"
|
||||||
else
|
if [ "$count" -eq 0 ]; then
|
||||||
# Search in current directory and subdirectories
|
echo "::error::No release files were collected from workflow artifacts"
|
||||||
FOUND=$(find . -name "$BUNDLE_NAME" -type f | head -1)
|
exit 1
|
||||||
if [ -z "$FOUND" ]; then
|
fi
|
||||||
echo "Error: Could not find $BUNDLE_NAME"
|
find release-upload -maxdepth 1 -type f -printf 'asset=%f\n'
|
||||||
echo "Searching for any .flatpak files:"
|
|
||||||
find . -name "*.flatpak" -type f || true
|
- name: Create or update release
|
||||||
exit 1
|
if: steps.collect_files.outputs.count != '0'
|
||||||
fi
|
env:
|
||||||
# Convert relative path to absolute
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
BUNDLE_PATH="$(cd "$(dirname "$FOUND")" && pwd)/$(basename "$FOUND")"
|
shell: bash
|
||||||
fi
|
run: |
|
||||||
echo "path=$BUNDLE_PATH" >> $GITHUB_OUTPUT
|
tag="${{ steps.release_meta.outputs.tag }}"
|
||||||
echo "Found bundle at: $BUNDLE_PATH"
|
title="${{ steps.release_meta.outputs.title }}"
|
||||||
ls -lh "$BUNDLE_PATH" || true
|
notes_file="$RUNNER_TEMP/release-notes.md"
|
||||||
shell: bash
|
printf '%s\n' "${{ steps.release_meta.outputs.notes }}" > "$notes_file"
|
||||||
|
|
||||||
- name: Upload artifacts Flatpak
|
if gh release view "$tag" >/dev/null 2>&1; then
|
||||||
uses: actions/upload-artifact@v4
|
gh release edit "$tag" \
|
||||||
with:
|
--title "$title" \
|
||||||
name: Snapmaker_Orca-Linux-flatpak_${{ env.ver }}_${{ matrix.variant.arch }}.flatpak
|
--notes-file "$notes_file" \
|
||||||
path: ${{ steps.find_bundle.outputs.path }}
|
--prerelease
|
||||||
if-no-files-found: error
|
else
|
||||||
|
gh release create "$tag" \
|
||||||
- name: Deploy Flatpak to nightly release
|
--title "$title" \
|
||||||
if: ${{github.ref == 'refs/heads/main' || github.ref == 'refs/heads/2.2.3'}}
|
--notes-file "$notes_file" \
|
||||||
uses: WebFreak001/deploy-nightly@v3.2.0
|
--target "$GITHUB_SHA" \
|
||||||
with:
|
--prerelease
|
||||||
upload_url: https://uploads.github.com/repos/Snapmaker/OrcaSlicer/releases/169912305/assets{?name,label}
|
fi
|
||||||
release_id: 169912305
|
|
||||||
asset_path: ${{ steps.find_bundle.outputs.path }}
|
while IFS= read -r asset_name; do
|
||||||
asset_name: Snapmaker_Orca-Linux-flatpak_${{ env.ver }}_${{ matrix.variant.arch }}_Beta.flatpak
|
gh release delete-asset "$tag" "$asset_name" --yes
|
||||||
asset_content_type: application/octet-stream
|
done < <(gh release view "$tag" --json assets --jq '.assets[].name')
|
||||||
max_releases: 1 # optional, if there are more releases than this matching the asset_name, the oldest ones are going to be deleted
|
|
||||||
|
mapfile -t upload_files < <(find release-upload -maxdepth 1 -type f | sort)
|
||||||
|
gh release upload "$tag" "${upload_files[@]}" --clobber
|
||||||
|
|
||||||
|
flatpak:
|
||||||
|
name: "Flatpak"
|
||||||
|
if: ${{ github.repository == 'Snapmaker/OrcaSlicer' }}
|
||||||
|
concurrency:
|
||||||
|
group: flatpak-${{ matrix.variant.arch }}-${{ github.event.pull_request.number || github.ref }}
|
||||||
|
cancel-in-progress: false
|
||||||
|
container:
|
||||||
|
image: ghcr.io/flathub-infra/flatpak-github-actions:gnome-48
|
||||||
|
options: --privileged
|
||||||
|
volumes:
|
||||||
|
- /usr/local/lib/android:/usr/local/lib/android
|
||||||
|
- /usr/share/dotnet:/usr/share/dotnet
|
||||||
|
- /opt/ghc:/opt/ghc1
|
||||||
|
- /usr/local/share/boost:/usr/local/share/boost1
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
variant:
|
||||||
|
- arch: x86_64
|
||||||
|
runner: ubuntu-24.04
|
||||||
|
- arch: aarch64
|
||||||
|
runner: ubuntu-24.04-arm
|
||||||
|
runs-on: ${{ matrix.variant.runner }}
|
||||||
|
env:
|
||||||
|
date:
|
||||||
|
ver:
|
||||||
|
ver_pure:
|
||||||
|
steps:
|
||||||
|
- name: "Remove unneeded stuff to free disk space"
|
||||||
|
run:
|
||||||
|
rm -rf /usr/local/lib/android/* /usr/share/dotnet/* /opt/ghc1/* "/usr/local/share/boost1/*"
|
||||||
|
- uses: actions/checkout@v5
|
||||||
|
- name: Get the version and date
|
||||||
|
run: |
|
||||||
|
ver_pure=$(grep 'set(Snapmaker_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
|
||||||
|
- uses: flathub-infra/flatpak-github-actions/flatpak-builder@master
|
||||||
|
with:
|
||||||
|
bundle: Snapmaker_Orca-Linux-flatpak_${{ env.ver }}_${{ matrix.variant.arch }}.flatpak
|
||||||
|
manifest-path: scripts/flatpak/io.github.Snapmaker.Snapmaker_Orca.yml
|
||||||
|
cache: true
|
||||||
|
arch: ${{ matrix.variant.arch }}
|
||||||
|
upload-artifact: false
|
||||||
|
- name: Find Flatpak bundle file
|
||||||
|
id: find_bundle
|
||||||
|
working-directory: ${{ github.workspace }}
|
||||||
|
run: |
|
||||||
|
BUNDLE_NAME="Snapmaker_Orca-Linux-flatpak_${{ env.ver }}_${{ matrix.variant.arch }}.flatpak"
|
||||||
|
# Try multiple possible locations
|
||||||
|
if [ -f "$BUNDLE_NAME" ]; then
|
||||||
|
BUNDLE_PATH="$(pwd)/$BUNDLE_NAME"
|
||||||
|
elif [ -f "/__w/Snapmaker_Orca/Snapmaker_Orca/$BUNDLE_NAME" ]; then
|
||||||
|
BUNDLE_PATH="/__w/Snapmaker_Orca/Snapmaker_Orca/$BUNDLE_NAME"
|
||||||
|
else
|
||||||
|
# Search in current directory and subdirectories
|
||||||
|
FOUND=$(find . -name "$BUNDLE_NAME" -type f | head -1)
|
||||||
|
if [ -z "$FOUND" ]; then
|
||||||
|
echo "Error: Could not find $BUNDLE_NAME"
|
||||||
|
echo "Searching for any .flatpak files:"
|
||||||
|
find . -name "*.flatpak" -type f || true
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
# Convert relative path to absolute
|
||||||
|
BUNDLE_PATH="$(cd "$(dirname "$FOUND")" && pwd)/$(basename "$FOUND")"
|
||||||
|
fi
|
||||||
|
echo "path=$BUNDLE_PATH" >> $GITHUB_OUTPUT
|
||||||
|
echo "Found bundle at: $BUNDLE_PATH"
|
||||||
|
ls -lh "$BUNDLE_PATH" || true
|
||||||
|
shell: bash
|
||||||
|
|
||||||
|
- name: Upload artifacts Flatpak
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: Snapmaker_Orca-Linux-flatpak_${{ env.ver }}_${{ matrix.variant.arch }}.flatpak
|
||||||
|
path: ${{ steps.find_bundle.outputs.path }}
|
||||||
|
if-no-files-found: error
|
||||||
|
|
||||||
|
- name: Deploy Flatpak to nightly release
|
||||||
|
if: ${{github.ref == 'refs/heads/main' || github.ref == 'refs/heads/2.2.3'}}
|
||||||
|
uses: WebFreak001/deploy-nightly@v3.2.0
|
||||||
|
with:
|
||||||
|
upload_url: https://uploads.github.com/repos/Snapmaker/OrcaSlicer/releases/169912305/assets{?name,label}
|
||||||
|
release_id: 169912305
|
||||||
|
asset_path: ${{ steps.find_bundle.outputs.path }}
|
||||||
|
asset_name: Snapmaker_Orca-Linux-flatpak_${{ env.ver }}_${{ matrix.variant.arch }}_Beta.flatpak
|
||||||
|
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
|
||||||
|
|||||||
4
.github/workflows/build_deps.yml
vendored
4
.github/workflows/build_deps.yml
vendored
@@ -154,11 +154,11 @@ jobs:
|
|||||||
upload_symbols:
|
upload_symbols:
|
||||||
name: Upload Debug Symbols to Sentry
|
name: Upload Debug Symbols to Sentry
|
||||||
needs: [build_orca]
|
needs: [build_orca]
|
||||||
if: ${{ !cancelled() && needs.build_orca.result == 'success' }}
|
if: ${{ !cancelled() && needs.build_orca.result == 'success' && github.repository == 'Snapmaker/OrcaSlicer' }}
|
||||||
uses: ./.github/workflows/sentry_cli.yml
|
uses: ./.github/workflows/sentry_cli.yml
|
||||||
with:
|
with:
|
||||||
os: ${{ inputs.os }}
|
os: ${{ inputs.os }}
|
||||||
pdb-artifact-name: PDB
|
pdb-artifact-name: PDB
|
||||||
dsym-artifact-name: ${{ inputs.os == 'macos-14' && format('dSYM_Mac_{0}', needs.build_orca.outputs.release) || '' }}
|
dsym-artifact-name: ${{ inputs.os == 'macos-14' && format('dSYM_Mac_{0}', needs.build_orca.outputs.release) || '' }}
|
||||||
release: ${{ needs.build_orca.outputs.release || github.sha }}
|
release: ${{ needs.build_orca.outputs.release || github.sha }}
|
||||||
secrets: inherit
|
secrets: inherit
|
||||||
|
|||||||
48
.github/workflows/build_orca.yml
vendored
48
.github/workflows/build_orca.yml
vendored
@@ -122,7 +122,7 @@ jobs:
|
|||||||
|
|
||||||
# Thanks to RaySajuuk, it's working now
|
# Thanks to RaySajuuk, it's working now
|
||||||
- name: Sign app and notary
|
- name: Sign app and notary
|
||||||
if: (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/heads/release/') || github.ref == 'refs/heads/2.2.3') && inputs.os == 'macos-14'
|
if: ${{ github.repository == 'Snapmaker/OrcaSlicer' && (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/heads/release/') || github.ref == 'refs/heads/2.2.3') && inputs.os == 'macos-14' }}
|
||||||
working-directory: ${{ github.workspace }}
|
working-directory: ${{ github.workspace }}
|
||||||
env:
|
env:
|
||||||
BUILD_CERTIFICATE_BASE64: ${{ secrets.BUILD_CERTIFICATE_BASE64 }}
|
BUILD_CERTIFICATE_BASE64: ${{ secrets.BUILD_CERTIFICATE_BASE64 }}
|
||||||
@@ -175,7 +175,7 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Create DMG without notary
|
- name: Create DMG without notary
|
||||||
if: github.ref != 'refs/heads/main' && inputs.os == 'macos-14' && github.ref != 'refs/heads/2.2.3'
|
if: ${{ inputs.os == 'macos-14' && (github.repository != 'Snapmaker/OrcaSlicer' || (github.ref != 'refs/heads/main' && !startsWith(github.ref, 'refs/heads/release/') && github.ref != 'refs/heads/2.2.3')) }}
|
||||||
working-directory: ${{ github.workspace }}
|
working-directory: ${{ github.workspace }}
|
||||||
run: |
|
run: |
|
||||||
mkdir -p ${{ github.workspace }}/build/universal/Snapmaker_Orca_dmg
|
mkdir -p ${{ github.workspace }}/build/universal/Snapmaker_Orca_dmg
|
||||||
@@ -217,7 +217,7 @@ jobs:
|
|||||||
if-no-files-found: warn
|
if-no-files-found: warn
|
||||||
|
|
||||||
- name: Deploy Mac release
|
- name: Deploy Mac release
|
||||||
if: (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/2.2.3') && inputs.os == 'macos-14'
|
if: ${{ github.repository == 'Snapmaker/OrcaSlicer' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/2.2.3') && inputs.os == 'macos-14' }}
|
||||||
uses: WebFreak001/deploy-nightly@v3.2.0
|
uses: WebFreak001/deploy-nightly@v3.2.0
|
||||||
with:
|
with:
|
||||||
upload_url: https://uploads.github.com/repos/Snapmaker/OrcaSlicer/releases/169912305/assets{?name,label}
|
upload_url: https://uploads.github.com/repos/Snapmaker/OrcaSlicer/releases/169912305/assets{?name,label}
|
||||||
@@ -228,7 +228,7 @@ jobs:
|
|||||||
max_releases: 1 # optional, if there are more releases than this matching the asset_name, the oldest ones are going to be deleted
|
max_releases: 1 # optional, if there are more releases than this matching the asset_name, the oldest ones are going to be deleted
|
||||||
|
|
||||||
- name: Check if profile validator DMG exists
|
- name: Check if profile validator DMG exists
|
||||||
if: (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/2.2.3') && inputs.os == 'macos-14'
|
if: ${{ github.repository == 'Snapmaker/OrcaSlicer' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/2.2.3') && inputs.os == 'macos-14' }}
|
||||||
id: check_dmg
|
id: check_dmg
|
||||||
working-directory: ${{ github.workspace }}
|
working-directory: ${{ github.workspace }}
|
||||||
run: |
|
run: |
|
||||||
@@ -242,7 +242,7 @@ jobs:
|
|||||||
shell: bash
|
shell: bash
|
||||||
|
|
||||||
- name: Deploy Mac Snapmaker_Orca_profile_validator DMG release
|
- name: Deploy Mac Snapmaker_Orca_profile_validator DMG release
|
||||||
if: (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/2.2.3') && inputs.os == 'macos-14' && steps.check_dmg.outputs.exists == 'true'
|
if: ${{ github.repository == 'Snapmaker/OrcaSlicer' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/2.2.3') && inputs.os == 'macos-14' && steps.check_dmg.outputs.exists == 'true' }}
|
||||||
uses: WebFreak001/deploy-nightly@v3.2.0
|
uses: WebFreak001/deploy-nightly@v3.2.0
|
||||||
with:
|
with:
|
||||||
upload_url: https://uploads.github.com/repos/Snapmaker/OrcaSlicer/releases/169912305/assets{?name,label}
|
upload_url: https://uploads.github.com/repos/Snapmaker/OrcaSlicer/releases/169912305/assets{?name,label}
|
||||||
@@ -294,7 +294,7 @@ jobs:
|
|||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: Snapmaker_Orca_Windows_${{ env.ver }}_portable
|
name: Snapmaker_Orca_Windows_${{ env.ver }}_portable
|
||||||
path: ${{ github.workspace }}/build/Snapmaker_Orca
|
path: ${{ github.workspace }}/build/Snapmaker_Orca_Windows_${{ env.ver }}_portable.zip
|
||||||
|
|
||||||
- name: Upload artifacts Win installer
|
- name: Upload artifacts Win installer
|
||||||
if: inputs.os == 'windows-latest'
|
if: inputs.os == 'windows-latest'
|
||||||
@@ -318,7 +318,7 @@ jobs:
|
|||||||
path: ${{ github.workspace }}/build/src/Release/Snapmaker_Orca_profile_validator.exe
|
path: ${{ github.workspace }}/build/src/Release/Snapmaker_Orca_profile_validator.exe
|
||||||
|
|
||||||
- name: Deploy Windows release portable
|
- name: Deploy Windows release portable
|
||||||
if: (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/2.2.3') && inputs.os == 'windows-latest'
|
if: ${{ github.repository == 'Snapmaker/OrcaSlicer' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/2.2.3') && inputs.os == 'windows-latest' }}
|
||||||
uses: WebFreak001/deploy-nightly@v3.2.0
|
uses: WebFreak001/deploy-nightly@v3.2.0
|
||||||
with:
|
with:
|
||||||
upload_url: https://uploads.github.com/repos/Snapmaker/OrcaSlicer/releases/169912305/assets{?name,label}
|
upload_url: https://uploads.github.com/repos/Snapmaker/OrcaSlicer/releases/169912305/assets{?name,label}
|
||||||
@@ -329,7 +329,7 @@ jobs:
|
|||||||
max_releases: 1
|
max_releases: 1
|
||||||
|
|
||||||
- name: Deploy Windows release installer
|
- name: Deploy Windows release installer
|
||||||
if: (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/2.2.3') && inputs.os == 'windows-latest'
|
if: ${{ github.repository == 'Snapmaker/OrcaSlicer' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/2.2.3') && inputs.os == 'windows-latest' }}
|
||||||
uses: WebFreak001/deploy-nightly@v3.2.0
|
uses: WebFreak001/deploy-nightly@v3.2.0
|
||||||
with:
|
with:
|
||||||
upload_url: https://uploads.github.com/repos/Snapmaker/OrcaSlicer/releases/169912305/assets{?name,label}
|
upload_url: https://uploads.github.com/repos/Snapmaker/OrcaSlicer/releases/169912305/assets{?name,label}
|
||||||
@@ -340,7 +340,7 @@ jobs:
|
|||||||
max_releases: 1
|
max_releases: 1
|
||||||
|
|
||||||
- name: Deploy Windows Snapmaker_Orca_profile_validator release
|
- name: Deploy Windows Snapmaker_Orca_profile_validator release
|
||||||
if: (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/2.2.3') && inputs.os == 'windows-latest'
|
if: ${{ github.repository == 'Snapmaker/OrcaSlicer' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/2.2.3') && inputs.os == 'windows-latest' }}
|
||||||
uses: WebFreak001/deploy-nightly@v3.2.0
|
uses: WebFreak001/deploy-nightly@v3.2.0
|
||||||
with:
|
with:
|
||||||
upload_url: https://uploads.github.com/repos/Snapmaker/OrcaSlicer/releases/169912305/assets{?name,label}
|
upload_url: https://uploads.github.com/repos/Snapmaker/OrcaSlicer/releases/169912305/assets{?name,label}
|
||||||
@@ -386,13 +386,31 @@ jobs:
|
|||||||
chmod +x ./build/Snapmaker_Orca_Linux_AppImage${{ env.ubuntu-ver-str }}_${{ env.ver }}.AppImage
|
chmod +x ./build/Snapmaker_Orca_Linux_AppImage${{ env.ubuntu-ver-str }}_${{ env.ver }}.AppImage
|
||||||
|
|
||||||
- name: Build orca_custom_preset_tests
|
- name: Build orca_custom_preset_tests
|
||||||
if: (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/2.2.1') && inputs.os == 'ubuntu-24.04'
|
id: custom_preset_tests
|
||||||
|
if: ${{ github.repository == 'Snapmaker/OrcaSlicer' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/2.2.1') && inputs.os == 'ubuntu-24.04' }}
|
||||||
working-directory: ${{ github.workspace }}/build/src/Release
|
working-directory: ${{ github.workspace }}/build/src/Release
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
./Snapmaker_Orca_profile_validator -p ${{ github.workspace }}/resources/profiles -g 1
|
archive="${{ github.workspace }}/resources/profiles/orca_custom_preset_tests.zip"
|
||||||
|
rm -f "$archive"
|
||||||
|
if [ ! -x ./Snapmaker_Orca_profile_validator ]; then
|
||||||
|
echo "::warning::Snapmaker_Orca_profile_validator is missing; skipping custom preset archive generation"
|
||||||
|
echo "created=false" >> "$GITHUB_OUTPUT"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
if ! ./Snapmaker_Orca_profile_validator -p ${{ github.workspace }}/resources/profiles -g 1; then
|
||||||
|
echo "::warning::Failed to generate custom preset fixtures; skipping archive generation"
|
||||||
|
echo "created=false" >> "$GITHUB_OUTPUT"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
cd ${{ github.workspace }}/resources/profiles
|
cd ${{ github.workspace }}/resources/profiles
|
||||||
|
if [ ! -d user ]; then
|
||||||
|
echo "::warning::No generated user presets were found; skipping archive generation"
|
||||||
|
echo "created=false" >> "$GITHUB_OUTPUT"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
zip -r orca_custom_preset_tests.zip user/
|
zip -r orca_custom_preset_tests.zip user/
|
||||||
|
echo "created=true" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
- name: Upload artifacts Ubuntu
|
- name: Upload artifacts Ubuntu
|
||||||
if: ${{ ! env.ACT && inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04' }}
|
if: ${{ ! env.ACT && inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04' }}
|
||||||
@@ -414,7 +432,7 @@ jobs:
|
|||||||
path: './build/src/Release/Snapmaker_Orca_profile_validator'
|
path: './build/src/Release/Snapmaker_Orca_profile_validator'
|
||||||
|
|
||||||
- name: Deploy Ubuntu release
|
- name: Deploy Ubuntu release
|
||||||
if: ${{ ! env.ACT && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/2.2.3') && (inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04') }}
|
if: ${{ ! env.ACT && github.repository == 'Snapmaker/OrcaSlicer' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/2.2.3') && (inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04') }}
|
||||||
env:
|
env:
|
||||||
ubuntu-ver-str: ${{ (inputs.os == 'ubuntu-24.04' && '_Ubuntu2404') || '' }}
|
ubuntu-ver-str: ${{ (inputs.os == 'ubuntu-24.04' && '_Ubuntu2404') || '' }}
|
||||||
uses: WebFreak001/deploy-nightly@v3.2.0
|
uses: WebFreak001/deploy-nightly@v3.2.0
|
||||||
@@ -426,7 +444,7 @@ jobs:
|
|||||||
asset_content_type: application/octet-stream
|
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
|
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 Ubuntu release
|
- name: Deploy Ubuntu release
|
||||||
if: ${{ ! env.ACT && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/2.2.3') && inputs.os == 'ubuntu-24.04' }}
|
if: ${{ ! env.ACT && github.repository == 'Snapmaker/OrcaSlicer' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/2.2.3') && inputs.os == 'ubuntu-24.04' }}
|
||||||
uses: rickstaa/action-create-tag@v1
|
uses: rickstaa/action-create-tag@v1
|
||||||
with:
|
with:
|
||||||
tag: "nightly-builds"
|
tag: "nightly-builds"
|
||||||
@@ -435,7 +453,7 @@ jobs:
|
|||||||
message: "nightly-builds"
|
message: "nightly-builds"
|
||||||
|
|
||||||
- name: Deploy Ubuntu Snapmaker_Orca_profile_validator release
|
- name: Deploy Ubuntu Snapmaker_Orca_profile_validator release
|
||||||
if: ${{ ! env.ACT && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/2.2.3') && (inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04') }}
|
if: ${{ ! env.ACT && github.repository == 'Snapmaker/OrcaSlicer' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/2.2.3') && (inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04') }}
|
||||||
env:
|
env:
|
||||||
ubuntu-ver-str: ${{ (inputs.os == 'ubuntu-24.04' && '_Ubuntu2404') || '' }}
|
ubuntu-ver-str: ${{ (inputs.os == 'ubuntu-24.04' && '_Ubuntu2404') || '' }}
|
||||||
uses: WebFreak001/deploy-nightly@v3.2.0
|
uses: WebFreak001/deploy-nightly@v3.2.0
|
||||||
@@ -448,7 +466,7 @@ jobs:
|
|||||||
max_releases: 1
|
max_releases: 1
|
||||||
|
|
||||||
- name: Deploy orca_custom_preset_tests
|
- name: Deploy orca_custom_preset_tests
|
||||||
if: ${{ ! env.ACT && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/2.2.1') && inputs.os == 'ubuntu-24.04' }}
|
if: ${{ ! env.ACT && github.repository == 'Snapmaker/OrcaSlicer' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/2.2.1') && inputs.os == 'ubuntu-24.04' && steps.custom_preset_tests.outputs.created == 'true' }}
|
||||||
uses: WebFreak001/deploy-nightly@v3.2.0
|
uses: WebFreak001/deploy-nightly@v3.2.0
|
||||||
with:
|
with:
|
||||||
upload_url: https://uploads.github.com/repos/Snapmaker/OrcaSlicer/releases/169912305/assets{?name,label}
|
upload_url: https://uploads.github.com/repos/Snapmaker/OrcaSlicer/releases/169912305/assets{?name,label}
|
||||||
|
|||||||
2
.github/workflows/check_profiles.yml
vendored
2
.github/workflows/check_profiles.yml
vendored
@@ -44,7 +44,7 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
curl -LJO https://github.com/SoftFever/OrcaSlicer/releases/download/nightly-builds/orca_custom_preset_tests.zip
|
curl -LJO https://github.com/SoftFever/OrcaSlicer/releases/download/nightly-builds/orca_custom_preset_tests.zip
|
||||||
unzip ./orca_custom_preset_tests.zip -d ${{ github.workspace }}/resources/profiles
|
unzip ./orca_custom_preset_tests.zip -d ${{ github.workspace }}/resources/profiles
|
||||||
./Snapmaker_Orca_profile_validator -p ${{ github.workspace }}/resources/profiles -l 2
|
./OrcaSlicer_profile_validator -p ${{ github.workspace }}/resources/profiles -l 2
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
48
RELEASE_NOTES_v0.9.3.md
Normal file
48
RELEASE_NOTES_v0.9.3.md
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
# Snapmaker Orca Full Spectrum v0.9.3 (Pre-release)
|
||||||
|
|
||||||
|
Mixed-filament reliability, Local-Z dithering fixes, and fork-safe CI/CD.
|
||||||
|
Based on Snapmaker Orca v2.2.4.
|
||||||
|
|
||||||
|
## Highlights
|
||||||
|
|
||||||
|
### Local-Z Dithering Fixes
|
||||||
|
- Fixed prime tower degradation during Local-Z dithering by directly switching extruders instead of replaying full tool change templates.
|
||||||
|
- Improved starting component logic for alternating layers so height adjustments are computed from the correct pass sequence.
|
||||||
|
- Updated tooltip to clearly explain variable layer height blending with concrete examples (e.g. a 66/33 blend at 0.12 mm prints as 0.08 mm + 0.04 mm layers).
|
||||||
|
|
||||||
|
### Stable Mixed Filament Identity
|
||||||
|
- Introduced `stable_id` for mixed filament entries, giving each entry a persistent identity that survives additions, deletions, and reordering.
|
||||||
|
- Custom GCode tool changes now reference filament IDs instead of extruder IDs, preventing misrouted tool changes when mixed filaments are modified.
|
||||||
|
- Stable ID allocation and normalization ensures consistent behavior across project save/load cycles.
|
||||||
|
|
||||||
|
### Mixed Filament 3MF and GUI Improvements
|
||||||
|
- Added functions to compute physical filament count and maximum supported filament ID from project configuration.
|
||||||
|
- GUI now displays total filament counts including mixed filaments in object list and object table.
|
||||||
|
- Streamlined color assignment and naming for both physical and mixed filaments during initialization.
|
||||||
|
- Canvas colors now refresh immediately when mixed filaments are modified.
|
||||||
|
|
||||||
|
### ObjColorPanel Filament Mapping
|
||||||
|
- Fixed filament ID assignment during color updates by introducing a mapping mechanism for appended filament IDs.
|
||||||
|
- Improved filament ID resolution in approximate-match and default-strategy code paths.
|
||||||
|
|
||||||
|
### Network Discovery Stability
|
||||||
|
- Hardened UdpSocket (mDNS/Bonjour) with a socket quarantine mechanism that centralizes error handling for setup, send, and receive operations.
|
||||||
|
- Added a `cancel` method and `m_socket_usable` flag to prevent operations on broken sockets, fixing crashes on systems where mDNS discovery fails.
|
||||||
|
|
||||||
|
## Bug Fixes
|
||||||
|
- Fixed `MixedFilamentConfigPanel` summary handling to avoid empty-string edge cases in preview data.
|
||||||
|
- Fixed `instance_shift` type to `Vec3d` for correct object pasting behavior in the Selection class.
|
||||||
|
- Replaced `wxEmptyString` with `wxString()` across Plater to prevent subtle initialization issues.
|
||||||
|
|
||||||
|
## Tests
|
||||||
|
- Added unit tests for custom GCode tool change handling with mixed filament configurations.
|
||||||
|
- Added unit tests for stable ID remapping in mixed filament scenarios.
|
||||||
|
|
||||||
|
## Important Notes
|
||||||
|
- Experimental build with limited testing.
|
||||||
|
- macOS builds from this fork are unsigned and not notarized. macOS Gatekeeper may warn or block the app; use right-click > Open or allow it in System Settings > Privacy & Security.
|
||||||
|
- Use at your own risk.
|
||||||
|
|
||||||
|
## Credits
|
||||||
|
- FilamentMixer color blending integration is powered by FilamentMixer by [justinh-rahb](https://github.com/justinh-rahb).
|
||||||
|
- Library: [https://github.com/justinh-rahb/filament-mixer](https://github.com/justinh-rahb/filament-mixer)
|
||||||
@@ -10,7 +10,7 @@ endif()
|
|||||||
if(NOT DEFINED BBL_INTERNAL_TESTING)
|
if(NOT DEFINED BBL_INTERNAL_TESTING)
|
||||||
set(BBL_INTERNAL_TESTING "0")
|
set(BBL_INTERNAL_TESTING "0")
|
||||||
endif()
|
endif()
|
||||||
set(Snapmaker_VERSION "2.2.4")
|
set(Snapmaker_VERSION "0.9.3")
|
||||||
set(MIN_FIRM_VER "1.0.0")
|
set(MIN_FIRM_VER "1.0.0")
|
||||||
string(REGEX MATCH "^([0-9]+)\\.([0-9]+)\\.([0-9]+)"
|
string(REGEX MATCH "^([0-9]+)\\.([0-9]+)\\.([0-9]+)"
|
||||||
Snapmaker_VERSION_MATCH ${Snapmaker_VERSION})
|
Snapmaker_VERSION_MATCH ${Snapmaker_VERSION})
|
||||||
|
|||||||
Reference in New Issue
Block a user