-
Notifications
You must be signed in to change notification settings - Fork 343
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
200 changed files
with
29,361 additions
and
21,566 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
name: Build all | ||
|
||
on: | ||
push: | ||
branches: | ||
- main | ||
paths: | ||
- 'deps/**' | ||
- 'src/**' | ||
- '**/CMakeLists.txt' | ||
- 'version.inc' | ||
- 'bbl/**' | ||
- 'resources/**' | ||
- ".github/workflows/build_*.yml" | ||
|
||
pull_request: | ||
branches: | ||
- master | ||
paths: | ||
- 'deps/**' | ||
- 'src/**' | ||
- '**/CMakeLists.txt' | ||
- 'version.inc' | ||
- ".github/workflows/build_*.yml" | ||
- 'BuildLinux.sh' | ||
- 'build_win.bat' | ||
|
||
workflow_dispatch: # manual dispatch | ||
inputs: | ||
build-deps-only: | ||
description: 'Only build dependencies (bypasses caching)' | ||
type: boolean | ||
default: false | ||
|
||
concurrency: | ||
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | ||
cancel-in-progress: true | ||
|
||
jobs: | ||
build_all: | ||
name: Build All | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
include: | ||
- os: ubuntu-20.04 | ||
- os: ubuntu-24.04 | ||
- os: windows-latest | ||
- os: macos-13 | ||
arch: x86_64 | ||
uses: ./.github/workflows/build_check_cache.yml | ||
with: | ||
os: ${{ matrix.os }} | ||
arch: ${{ matrix.arch }} | ||
build-deps-only: ${{ inputs.build-deps-only || false }} | ||
secrets: inherit |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,280 @@ | ||
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_bambu: | ||
name: Build BambuStudio | ||
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 | ||
|
||
- name: Get the version and date on Ubuntu and macOS | ||
if: inputs.os != 'windows-latest' | ||
run: | | ||
ver_pure=$(grep 'set(SLIC3R_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\(SLIC3R_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: Build slicer mac | ||
if: inputs.os == 'macos-13' | ||
working-directory: ${{ github.workspace }} | ||
run: | | ||
brew install automake texinfo | ||
mkdir -p ${{ github.workspace }}/build_${{inputs.arch}} | ||
cd ${{ github.workspace }}/build_${{inputs.arch}} | ||
cmake .. -DBBL_RELEASE_TO_PUBLIC=1 -DCMAKE_PREFIX_PATH="${{ github.workspace }}/deps/build_${{ inputs.arch }}/BambuStudio_dep_${{ inputs.arch }}/usr/local" -DCMAKE_INSTALL_PREFIX="../install_dir" -DCMAKE_BUILD_TYPE=Release -DCMAKE_MACOSX_RPATH=ON -DCMAKE_INSTALL_RPATH="${{ github.workspace }}/deps/build_${{ inputs.arch }}/BambuStudio_dep_${{ inputs.arch }}/usr/local" -DCMAKE_MACOSX_BUNDLE=on | ||
cmake --build . --target install --config Release -j4 | ||
# 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-13' | ||
# 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-13' | ||
# working-directory: ${{ github.workspace }} | ||
# run: | | ||
# ls ${{ github.workspace }}/install_dir | ||
# brew install create-dmg | ||
# create-dmg --volname "Bambu Studio" --window-pos 200 120 --window-size 600 400 --icon-size 100 --icon "BambuStudio.app" 200 150 --app-drop-link 400 150 BambuStudio_Mac_${{inputs.arch}}_${{ env.ver }}.dmg ${{ github.workspace }}/install_dir/ | ||
|
||
- name: pack mac app | ||
if: github.ref != 'refs/heads/main' && inputs.os == 'macos-13' | ||
working-directory: ${{ github.workspace }} | ||
run: zip -r BambuStudio_Mac_${{inputs.arch}}_${{ env.ver }}.zip ${{ github.workspace }}/install_dir | ||
|
||
- name: Upload artifacts mac | ||
if: inputs.os == 'macos-13' | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: BambuStudio_Mac_${{inputs.arch}}_${{ env.ver }} | ||
path: ${{ github.workspace }}/BambuStudio_Mac_${{inputs.arch}}_${{ env.ver }}.zip | ||
|
||
# - name: Deploy Mac release | ||
# if: github.ref == 'refs/heads/main' && inputs.os == 'macos-13' | ||
# uses: WebFreak001/deploy-nightly@v3.1.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 and pkgconfig | ||
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 }} | ||
run: | | ||
mkdir build | ||
cd build | ||
cmake .. -G "Visual Studio 17 2022" -A X64 -DBBL_RELEASE_TO_PUBLIC=1 -DCMAKE_PREFIX_PATH="${{ github.workspace }}\deps\build\BambuStudio_dep\usr\local" -DCMAKE_INSTALL_PREFIX="../install-dir" -DCMAKE_BUILD_TYPE=Release -DWIN10SDK_PATH="C:/Program Files (x86)/Windows Kits/10/Include/10.0.22000.0" | ||
cmake --build . --target install --config Release -- -m | ||
# - 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 }} | ||
shell: cmd | ||
run: '"C:/Program Files/7-Zip/7z.exe" a -tzip BambuStudio_Windows_${{ env.ver }}_portable.zip ${{ github.workspace }}/install-dir' | ||
|
||
# - 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: BambuStudio_Windows_${{ env.ver }}_portable | ||
path: ${{ github.workspace }}/BambuStudio_Windows_${{ env.ver }}_portable.zip | ||
|
||
# - name: Upload artifacts Win installer | ||
# if: inputs.os == 'windows-latest' | ||
# uses: actions/upload-artifact@v4 | ||
# with: | ||
# name: BambuStudio_Windows_${{ env.ver }} | ||
# path: ${{ github.workspace }}/build/BambuStudio*.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.1.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.1.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 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 | ||
run: | | ||
./BuildLinux.sh -isfr | ||
mv -n ./build/BambuStudio_ubu64.AppImage ./build/Bambu_Studio_${{inputs.os}}_${{ 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') }} | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: BambuStudio_${{inputs.os}}_${{ env.ver }} | ||
path: './build/Bambu_Studio_${{inputs.os}}_${{ env.ver }}.AppImage' | ||
|
||
# - name: Deploy Ubuntu release | ||
# if: ${{ ! env.ACT && github.ref == 'refs/heads/main' && inputs.os == 'ubuntu-20.04' }} | ||
# uses: WebFreak001/deploy-nightly@v3.1.0 | ||
# with: | ||
# upload_url: https://uploads.github.com/repos/SoftFever/OrcaSlicer/releases/137995723/assets{?name,label} | ||
# release_id: 137995723 | ||
# asset_path: ./build/OrcaSlicer_Linux_${{ env.ver }}.AppImage | ||
# asset_name: OrcaSlicer_Linux_${{ 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.1.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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
name: Check Cache | ||
|
||
on: | ||
workflow_call: | ||
inputs: | ||
os: | ||
required: true | ||
type: string | ||
arch: | ||
required: false | ||
type: string | ||
build-deps-only: | ||
required: false | ||
type: boolean | ||
|
||
jobs: | ||
check_cache: # determines if there is a cache and outputs variables used in caching process | ||
name: Check Cache | ||
runs-on: ${{ inputs.os }} | ||
outputs: | ||
cache-key: ${{ steps.set_outputs.outputs.cache-key }} | ||
cache-path: ${{ steps.set_outputs.outputs.cache-path }} | ||
valid-cache: ${{ steps.cache_deps.outputs.cache-hit }} | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
with: | ||
lfs: 'true' | ||
|
||
- name: set outputs | ||
id: set_outputs | ||
env: | ||
underscore-arch: ${{ inputs.os == 'macos-13' && '_' || ''}}${{ inputs.os == 'macos-13' && inputs.arch || '' }} # if is macos, make a string that does "_{arch}", else output nothing | ||
dash-arch: ${{ inputs.os == 'macos-13' && '-' || ''}}${{ inputs.os == 'macos-13' && inputs.arch || '' }} # if is macos, make a string that does "-{arch}", else output nothing | ||
dep-folder-name: ${{ (inputs.os == 'windows-latest' || inputs.os == 'macos-13') && 'BambuStudio_dep' || 'destdir' }} | ||
output-cmd: ${{ inputs.os == 'windows-latest' && '$env:GITHUB_OUTPUT' || '"$GITHUB_OUTPUT"'}} | ||
run: | | ||
echo cache-key=${{ inputs.os }}${{ env.dash-arch }}-cache-bambustudio_deps-build-${{ hashFiles('deps/**') }} >> ${{ env.output-cmd }} | ||
echo cache-path=${{ github.workspace }}/deps/build${{ env.underscore-arch }}/${{ env.dep-folder-name }}${{ env.underscore-arch }} >> ${{ env.output-cmd }} | ||
- name: load cache | ||
id: cache_deps | ||
uses: actions/cache@v4 | ||
with: | ||
path: ${{ steps.set_outputs.outputs.cache-path }} | ||
key: ${{ steps.set_outputs.outputs.cache-key }} | ||
lookup-only: true | ||
|
||
build_deps: # call next step | ||
name: Build Deps | ||
needs: [check_cache] | ||
uses: ./.github/workflows/build_deps.yml | ||
with: | ||
cache-key: ${{ needs.check_cache.outputs.cache-key }} | ||
cache-path: ${{ needs.check_cache.outputs.cache-path }} | ||
valid-cache: ${{ needs.check_cache.outputs.valid-cache == 'true' }} | ||
os: ${{ inputs.os }} | ||
arch: ${{ inputs.arch }} | ||
build-deps-only: ${{ inputs.build-deps-only }} | ||
secrets: inherit |
Oops, something went wrong.