mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-05-14 00:52:04 +00:00
* Actually build tests on Linux and allow RelWithDebInfo
They weren't being built.
Also cleaned up --config flags which enables RelWithDebInfo on Linux,
now that Ninja Multi-Config is used, it's quite trivial.
* Remove obsolete Slic3r Perl tests
The directory doesn't exist, they're already gone.
* Add GH job for running unit tests
* Move unit test execution to script and upload test results
* Don't run scheduled builds on forks
* Only deploy from SoftFever/OrcaSlicer
Will stop failures on forks
* Use artifact instead of cache
* Tweak archive and checkout paths
Keep getting error:
```
/home/runner/work/_temp/902d0a0a-6d23-4fe0-a643-8b5cc4efd25b.sh: line 1: scripts/run_unit_tests.sh: Permission denied
```
That seems to be because I didn't use actions/checkout, the working
directory is never setup correctly? So using checkout to get scripts
directory. Unsure if archive will preserve the `build/tests/` prefix;
will find out soon.
* Use tar to package directory and write results to correct directory
Tar preserves filenames and directory structure
* Use tar -xvf not -xzf
Muscle memory failed me
* Add testing wiki page
* Save test logs on failure and choose correct directory for junit
* Consolidate apt install steps, use for unit tests too, disable non-Linux builds
Temporarily disable non-Linux builds to save time while developing
this.
Cache the apt packages to save some time searching apt and downloading
them again (though I realize this is also downloading, but hopefully
by something closer and faster).
Remove all the redundant packages listed in the workflow and debian
distribution lists.
* Remove apt install steps from workflow
`./build-linux.sh -u` is supposed to install all needed packages, so
it should build without needing anything besides that. If I'm wrong
this commit will be dropped.
* Need composite action checked out locally
* Re-enable non-Linux builds now that it's working
* Skip a deploy and a notarize in forks
They only succeed in the main repo.
* Fix multi-build for non-Release builds: share CONFIG
* Correct build errors in unit tests
Indeterminate method signatures resolved. Updated script to build all
the tests.
* Fix -g vs -e for RelWithDebInfo
* Change CONFIG->BUILD_CONFIG
Missed one in prior commits
* Reduce wasteful redundant build artifact copies
1. Don't copy the artifacts and leave them; make a hard link first;
only make a copy only while creating AppImage.
2. Don't tar up the `package` directory; nothing uses this tar AFAICT
* Fix directory name
* Change jigsaw auth test URLs to httpbin.org
No idea why the basic auth doesn't work, but it doesn't work for
`curl` CLI either. This does.
* Remove force-build
It got reverted at
e3f049829b
for unknown reasons.
* Add timeout for unit tests in GitHub Actions workflow (#11146)
---------
Co-authored-by: SoftFever <softfeverever@gmail.com>
182 lines
6.1 KiB
YAML
182 lines
6.1 KiB
YAML
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/**'
|
|
- '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: github.event_name != 'schedule' || github.repository == 'SoftFever/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 Non-Linux
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- os: windows-latest
|
|
- os: macos-14
|
|
arch: arm64
|
|
# Don't run scheduled builds on forks:
|
|
if: github.event_name != 'schedule' || github.repository == 'SoftFever/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: ${{ success() }}
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v5
|
|
with:
|
|
sparse-checkout: |
|
|
.github
|
|
scripts
|
|
- name: Apt-Install Dependencies
|
|
uses: ./.github/actions/apt-install-deps
|
|
- name: Restore Test Artifact
|
|
uses: actions/download-artifact@v4
|
|
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@v4
|
|
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-47
|
|
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:
|
|
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: github.event_name != 'schedule' || github.repository == 'SoftFever/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/*"
|
|
- uses: actions/checkout@v5
|
|
- 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: flathub-infra/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@v4
|
|
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 == 'SoftFever/OrcaSlicer' && github.ref == 'refs/heads/main'
|
|
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: /__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
|