From fdbbf5f1359d5336217f35e9355923313bd9a32b Mon Sep 17 00:00:00 2001 From: sentientstardust Date: Tue, 12 May 2026 02:22:30 +0100 Subject: [PATCH] Update Github workflows --- .github/workflows/build_all.yml | 68 +++++++++----------------------- .github/workflows/build_orca.yml | 35 +++++++++++++++- 2 files changed, 52 insertions(+), 51 deletions(-) diff --git a/.github/workflows/build_all.yml b/.github/workflows/build_all.yml index ee325b7ef77..adbc72abb2c 100644 --- a/.github/workflows/build_all.yml +++ b/.github/workflows/build_all.yml @@ -1,39 +1,7 @@ name: Build all on: - push: - branches: - - main - - release/* - paths: - - 'deps/**' - - 'src/**' - - '**/CMakeLists.txt' - - 'version.inc' - - 'localization/**' - - 'resources/**' - - ".github/workflows/build_*.yml" - - 'scripts/flatpak/**' - - pull_request: - branches: - - main - - release/* - paths: - - 'deps/**' - - 'deps_src/**' - - 'src/**' - - '**/CMakeLists.txt' - - 'version.inc' - - ".github/workflows/build_*.yml" - - 'build_linux.sh' - - 'build_release_vs2022.bat' - - 'build_release_macos.sh' - - 'scripts/flatpak/**' - - - schedule: - - cron: '0 17 * * *' # run once a day at 1 AM Singapore time (UTC+8) + create: workflow_dispatch: # allows for manual dispatch inputs: @@ -41,52 +9,54 @@ on: description: 'Only build dependencies (bypasses caching)' type: boolean default: false + build_linux: + description: 'Build Linux and Flatpak artifacts' + type: boolean + default: false + build_macos_x86_64: + description: 'Build macOS x86_64 and universal artifacts' + type: boolean + default: false concurrency: group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true - jobs: build_linux: strategy: fail-fast: false - # Don't run scheduled builds on forks: - if: ${{ !cancelled() && (github.event_name != 'schedule' || github.repository == 'OrcaSlicer/OrcaSlicer') }} + if: ${{ !cancelled() && (github.event_name != 'create' || (github.event.ref_type == 'branch' && startsWith(github.event.ref, 'release/'))) && ((inputs.build_linux || false) || vars.BUILD_LINUX == 'true') }} uses: ./.github/workflows/build_check_cache.yml with: os: ${{ vars.SELF_HOSTED && 'orca-lnx-server' || 'ubuntu-24.04' }} build-deps-only: ${{ inputs.build-deps-only || false }} secrets: inherit build_windows: - # Don't run scheduled builds on forks: - if: ${{ !cancelled() && (github.event_name != 'schedule' || github.repository == 'OrcaSlicer/OrcaSlicer') }} + if: ${{ !cancelled() && (github.event_name != 'create' || (github.event.ref_type == 'branch' && startsWith(github.event.ref, 'release/'))) }} uses: ./.github/workflows/build_check_cache.yml with: os: ${{ vars.SELF_HOSTED && 'orca-win-server' || 'windows-latest' }} build-deps-only: ${{ inputs.build-deps-only || false }} - force-build: ${{ github.event_name == 'schedule' }} + force-build: false secrets: inherit build_macos_arch: strategy: fail-fast: false matrix: - arch: - - arm64 - - x86_64 - # Don't run scheduled builds on forks: - if: ${{ !cancelled() && (github.event_name != 'schedule' || github.repository == 'OrcaSlicer/OrcaSlicer') }} + arch: ${{ fromJSON(((inputs.build_macos_x86_64 || false) || vars.BUILD_MACOS_X86_64 == 'true') && '["arm64","x86_64"]' || '["arm64"]') }} + if: ${{ !cancelled() && (github.event_name != 'create' || (github.event.ref_type == 'branch' && startsWith(github.event.ref, 'release/'))) }} uses: ./.github/workflows/build_check_cache.yml with: os: ${{ vars.SELF_HOSTED && 'orca-macos-arm64' || 'macos-14' }} arch: ${{ matrix.arch }} build-deps-only: ${{ inputs.build-deps-only || false }} - force-build: ${{ github.event_name == 'schedule' }} + force-build: false secrets: inherit build_macos_universal: name: Build macOS Universal needs: build_macos_arch - if: ${{ !cancelled() && needs.build_macos_arch.result == 'success' && !inputs.build-deps-only && (github.event_name != 'schedule' || github.repository == 'OrcaSlicer/OrcaSlicer') }} + if: ${{ !cancelled() && (github.event_name != 'create' || (github.event.ref_type == 'branch' && startsWith(github.event.ref, 'release/'))) && ((inputs.build_macos_x86_64 || false) || vars.BUILD_MACOS_X86_64 == 'true') && needs.build_macos_arch.result == 'success' && !inputs.build-deps-only }} uses: ./.github/workflows/build_orca.yml with: os: ${{ vars.SELF_HOSTED && 'orca-macos-arm64' || 'macos-14' }} @@ -97,7 +67,7 @@ jobs: name: Unit Tests runs-on: ${{ vars.SELF_HOSTED && 'orca-lnx-server' || 'ubuntu-24.04' }} needs: build_linux - if: ${{ !cancelled() && success() }} + if: ${{ !cancelled() && (github.event_name != 'create' || (github.event.ref_type == 'branch' && startsWith(github.event.ref, 'release/'))) && ((inputs.build_linux || false) || vars.BUILD_LINUX == 'true') && needs.build_linux.result == 'success' }} steps: - name: Checkout uses: actions/checkout@v6 @@ -158,8 +128,7 @@ jobs: runner: ubuntu-24.04 - arch: aarch64 runner: ubuntu-24.04-arm - # Don't run scheduled builds on forks; skip entirely on self-hosted runners - if: ${{ !cancelled() && !vars.SELF_HOSTED && (github.event_name != 'schedule' || github.repository == 'OrcaSlicer/OrcaSlicer') }} + if: ${{ !cancelled() && (github.event_name != 'create' || (github.event.ref_type == 'branch' && startsWith(github.event.ref, 'release/'))) && !vars.SELF_HOSTED && ((inputs.build_linux || false) || vars.BUILD_LINUX == 'true') }} runs-on: ${{ matrix.variant.runner }} env: @@ -233,4 +202,3 @@ jobs: asset_name: OrcaSlicer-Linux-flatpak_nightly_${{ matrix.variant.arch }}.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 - diff --git a/.github/workflows/build_orca.yml b/.github/workflows/build_orca.yml index 7ccb52b0e65..d84fa5d6879 100644 --- a/.github/workflows/build_orca.yml +++ b/.github/workflows/build_orca.yml @@ -130,6 +130,39 @@ jobs: name: OrcaSlicer_Mac_bundle_${{ inputs.arch }}_${{ github.sha }} path: ${{ github.workspace }}/OrcaSlicer_Mac_bundle_${{ inputs.arch }}_${{ github.sha }}.tar.gz + - name: Create macOS arm64 DMG without notary + if: runner.os == 'macOS' && !inputs.macos-combine-only && inputs.arch == 'arm64' + working-directory: ${{ github.workspace }} + run: | + mkdir -p ${{ github.workspace }}/build/${{ inputs.arch }}/OrcaSlicer_dmg + rm -rf ${{ github.workspace }}/build/${{ inputs.arch }}/OrcaSlicer_dmg/* + cp -R ${{ github.workspace }}/build/${{ inputs.arch }}/OrcaSlicer/OrcaSlicer.app ${{ github.workspace }}/build/${{ inputs.arch }}/OrcaSlicer_dmg/ + ln -sfn /Applications ${{ github.workspace }}/build/${{ inputs.arch }}/OrcaSlicer_dmg/Applications + hdiutil create -volname "OrcaSlicer" -srcfolder ${{ github.workspace }}/build/${{ inputs.arch }}/OrcaSlicer_dmg -ov -format UDZO OrcaSlicer_Mac_${{ inputs.arch }}_${{ env.ver }}.dmg + + if [ -f "${{ github.workspace }}/build/${{ inputs.arch }}/OrcaSlicer/OrcaSlicer_profile_validator.app/Contents/MacOS/OrcaSlicer_profile_validator" ]; then + mkdir -p ${{ github.workspace }}/build/${{ inputs.arch }}/OrcaSlicer_profile_validator_dmg + rm -rf ${{ github.workspace }}/build/${{ inputs.arch }}/OrcaSlicer_profile_validator_dmg/* + cp -R ${{ github.workspace }}/build/${{ inputs.arch }}/OrcaSlicer/OrcaSlicer_profile_validator.app ${{ github.workspace }}/build/${{ inputs.arch }}/OrcaSlicer_profile_validator_dmg/ + ln -sfn /Applications ${{ github.workspace }}/build/${{ inputs.arch }}/OrcaSlicer_profile_validator_dmg/Applications + hdiutil create -volname "OrcaSlicer Profile Validator" -srcfolder ${{ github.workspace }}/build/${{ inputs.arch }}/OrcaSlicer_profile_validator_dmg -ov -format UDZO OrcaSlicer_profile_validator_Mac_${{ inputs.arch }}_${{ env.ver }}.dmg + fi + + - name: Upload macOS arm64 DMG + if: runner.os == 'macOS' && !inputs.macos-combine-only && inputs.arch == 'arm64' + uses: actions/upload-artifact@v7 + with: + name: OrcaSlicer_Mac_${{ inputs.arch }}_${{ env.ver }} + path: ${{ github.workspace }}/OrcaSlicer_Mac_${{ inputs.arch }}_${{ env.ver }}.dmg + + - name: Upload OrcaSlicer_profile_validator macOS arm64 DMG + if: runner.os == 'macOS' && !inputs.macos-combine-only && inputs.arch == 'arm64' && !vars.SELF_HOSTED + uses: actions/upload-artifact@v7 + with: + name: OrcaSlicer_profile_validator_Mac_${{ inputs.arch }}_DMG_${{ env.ver }} + path: ${{ github.workspace }}/OrcaSlicer_profile_validator_Mac_${{ inputs.arch }}_${{ env.ver }}.dmg + if-no-files-found: ignore + - name: Download macOS app bundles if: runner.os == 'macOS' && inputs.macos-combine-only uses: actions/download-artifact@v8 @@ -217,7 +250,7 @@ jobs: fi - name: Create DMG without notary - if: github.ref != 'refs/heads/main' && runner.os == 'macOS' && inputs.macos-combine-only + if: ${{ runner.os == 'macOS' && inputs.macos-combine-only && !(github.repository == 'OrcaSlicer/OrcaSlicer' && (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/heads/release/'))) }} working-directory: ${{ github.workspace }} run: | mkdir -p ${{ github.workspace }}/build/universal/OrcaSlicer_dmg