Skip to content

Commit

Permalink
Merge branch 'master' into QD
Browse files Browse the repository at this point in the history
  • Loading branch information
HYzd766 authored Jul 29, 2024
2 parents 7cb83de + d59cb73 commit da2fcda
Show file tree
Hide file tree
Showing 200 changed files with 29,361 additions and 21,566 deletions.
56 changes: 56 additions & 0 deletions .github/workflows/build_all.yml
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
280 changes: 280 additions & 0 deletions .github/workflows/build_bambu.yml
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
60 changes: 60 additions & 0 deletions .github/workflows/build_check_cache.yml
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
Loading

0 comments on commit da2fcda

Please sign in to comment.