name: Build all on: push: branches: - main - release/* - feature/auto-update # TODO: Remove after auto-update testing is complete 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) workflow_dispatch: # allows for manual dispatch inputs: build-deps-only: description: 'Only build dependencies (bypasses caching)' 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: # name: Build Linux # strategy: # fail-fast: false # # Don't run scheduled builds on forks: # if: ${{ !cancelled() && (github.event_name != 'schedule' || github.repository == 'OrcaSlicer/OrcaSlicer') }} # uses: ./.github/workflows/build_check_cache.yml # with: # os: ubuntu-24.04 # build-deps-only: ${{ inputs.build-deps-only || false }} # secrets: inherit build_all: name: Build macOS (testing auto-update) strategy: fail-fast: false matrix: include: # TODO: Re-enable Windows after auto-update testing is complete # - os: windows-latest - os: macos-14 arch: arm64 # Don't run scheduled builds on forks: if: ${{ !cancelled() && (github.event_name != 'schedule' || github.repository == 'OrcaSlicer/OrcaSlicer') }} uses: ./.github/workflows/build_check_cache.yml with: os: ${{ matrix.os }} arch: ${{ matrix.arch }} build-deps-only: ${{ inputs.build-deps-only || false }} force-build: ${{ github.event_name == 'schedule' }} secrets: inherit # unit_tests: # name: Unit Tests # runs-on: ubuntu-24.04 # needs: build_linux # if: ${{ !cancelled() && success() }} # steps: # - name: Checkout # uses: actions/checkout@v6 # with: # sparse-checkout: | # .github # scripts # tests # - name: Apt-Install Dependencies # uses: ./.github/actions/apt-install-deps # - name: Restore Test Artifact # uses: actions/download-artifact@v7 # with: # name: ${{ github.sha }}-tests # - uses: lukka/get-cmake@latest # with: # cmakeVersion: "~3.28.0" # use most recent 3.28.x version # - name: Unpackage and Run Unit Tests # timeout-minutes: 20 # run: | # tar -xvf build_tests.tar # scripts/run_unit_tests.sh # - name: Upload Test Logs # uses: actions/upload-artifact@v6 # if: ${{ failure() }} # with: # name: unit-test-logs # path: build/tests/**/*.log # - name: Publish Test Results # if: always() # uses: EnricoMi/publish-unit-test-result-action@v2 # with: # files: "ctest_results.xml" # flatpak: # name: "Flatpak" # 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 # - /opt/hostedtoolcache:/opt/hostedtoolcache1 # strategy: # fail-fast: false # matrix: # variant: # - arch: x86_64 # runner: ubuntu-24.04 # - arch: aarch64 # runner: ubuntu-24.04-arm # # Don't run scheduled builds on forks: # if: ${{ !cancelled() && (github.event_name != 'schedule' || github.repository == 'OrcaSlicer/OrcaSlicer') }} # 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/*" /opt/hostedtoolcache1/* # - uses: actions/checkout@v6 # - name: Get the version and date # run: | # ver_pure=$(grep 'set(SoftFever_VERSION' version.inc | cut -d '"' -f2) # if [[ "${{ github.event_name }}" == "pull_request" ]]; then # ver="PR-${{ github.event.number }}" # git_commit_hash="${{ github.event.pull_request.head.sha }}" # else # ver=V$ver_pure # git_commit_hash="" # fi # echo "ver=$ver" >> $GITHUB_ENV # echo "ver_pure=$ver_pure" >> $GITHUB_ENV # echo "date=$(date +'%Y%m%d')" >> $GITHUB_ENV # echo "git_commit_hash=$git_commit_hash" >> $GITHUB_ENV # shell: bash # - uses: flatpak/flatpak-github-actions/flatpak-builder@master # with: # bundle: OrcaSlicer-Linux-flatpak_${{ env.ver }}_${{ matrix.variant.arch }}.flatpak # manifest-path: scripts/flatpak/io.github.softfever.OrcaSlicer.yml # cache: true # arch: ${{ matrix.variant.arch }} # upload-artifact: false # - name: Upload artifacts Flatpak # uses: actions/upload-artifact@v6 # with: # name: OrcaSlicer-Linux-flatpak_${{ env.ver }}_${{ matrix.variant.arch }}.flatpak # path: '/__w/OrcaSlicer/OrcaSlicer/OrcaSlicer-Linux-flatpak_${{ env.ver }}_${{ matrix.variant.arch }}.flatpak' # - name: Deploy Flatpak to nightly release # if: github.repository == 'OrcaSlicer/OrcaSlicer' && github.ref == 'refs/heads/main' # uses: WebFreak001/deploy-nightly@v3.2.0 # with: # upload_url: https://uploads.github.com/repos/OrcaSlicer/OrcaSlicer/releases/137995723/assets{?name,label} # release_id: 137995723 # asset_path: /__w/OrcaSlicer/OrcaSlicer/OrcaSlicer-Linux-flatpak_${{ env.ver }}_${{ matrix.variant.arch }}.flatpak # 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