Sprint 23/24 — Tauri v2 앱 래핑 + salsa 0.16 증분 쿼리 백엔드
All checks were successful
Publish ParaWiki / build-and-deploy (push) Successful in 34s
All checks were successful
Publish ParaWiki / build-and-deploy (push) Successful in 34s
Sprint 23: cimery-app을 Tauri v2 앱으로 전환. - tauri.conf.json, capabilities/default.json, frontend/index.html 추가 - src/commands.rs: 7개 IPC 커맨드 (launch_viewer, 프로젝트 관리, USD/CSV 익스포트) - 뷰어 사이드카: std::process::Command 방식 (PATH + exe-dir 탐색) - release.yml: 3단계 멀티플랫폼 릴리스 워크플로로 교체 Sprint 24: cimery-incremental에 salsa 0.16 백엔드 추가. - salsa_db.rs: BridgeQueryGroup + SalsaIncrementalDb<K> - --features salsa-backend 로 활성화 (기본값: 수동 tracking, WASM 안전) - IR 전 구조체 + Mesh + KernelError에 PartialEq/Eq 추가 - 테스트 20개 전부 통과 (수동 12 + salsa 8) - cargo check --workspace 0 errors/warnings 기타: viewer/dsl 컴파일 경고 제거, wiki 실행 가이드 추가 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
188
cimery/.github/workflows/release.yml
vendored
188
cimery/.github/workflows/release.yml
vendored
@@ -1,12 +1,12 @@
|
||||
# cimery — Release build workflow (ADR-003 A3)
|
||||
# cimery — Release build workflow (Sprint 23: Tauri v2 bundle)
|
||||
# Triggered by pushing a version tag: git tag v0.1.0 && git push --tags
|
||||
#
|
||||
# Builds:
|
||||
# - Windows x64 binary (cimery-viewer.exe)
|
||||
# - macOS arm64 binary (cimery-viewer)
|
||||
# - Linux x64 binary (cimery-viewer)
|
||||
# Produces:
|
||||
# - Windows x64: .msi (WiX) + .exe (NSIS) + cimery-viewer.exe
|
||||
# - macOS arm64: .dmg + .app + cimery-viewer
|
||||
# - Linux x64: .deb + .AppImage + cimery-viewer
|
||||
#
|
||||
# Artifacts are uploaded to the GitHub Release.
|
||||
# Sidecar: cimery-viewer is built first, then bundled alongside cimery-app.
|
||||
# Code signing: placeholder (Azure Trusted Signing — ADR-003 A3).
|
||||
|
||||
name: Release
|
||||
@@ -21,76 +21,196 @@ permissions:
|
||||
|
||||
env:
|
||||
CARGO_TERM_COLOR: always
|
||||
RUST_BACKTRACE: 1
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: build (${{ matrix.target }})
|
||||
# ── 1. Build sidecar viewer for each platform ──────────────────────────────
|
||||
build-viewer:
|
||||
name: viewer (${{ matrix.target }})
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- os: windows-latest
|
||||
target: x86_64-pc-windows-msvc
|
||||
artifact: cimery-viewer.exe
|
||||
archive: cimery-viewer-windows-x64.zip
|
||||
viewer-bin: cimery-viewer.exe
|
||||
- os: macos-latest
|
||||
target: aarch64-apple-darwin
|
||||
artifact: cimery-viewer
|
||||
archive: cimery-viewer-macos-arm64.tar.gz
|
||||
viewer-bin: cimery-viewer
|
||||
- os: ubuntu-latest
|
||||
target: x86_64-unknown-linux-gnu
|
||||
artifact: cimery-viewer
|
||||
archive: cimery-viewer-linux-x64.tar.gz
|
||||
viewer-bin: cimery-viewer
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: dtolnay/rust-toolchain@stable
|
||||
with:
|
||||
targets: ${{ matrix.target }}
|
||||
- uses: Swatinem/rust-cache@v2
|
||||
with:
|
||||
key: viewer-${{ matrix.target }}
|
||||
|
||||
- name: Build release (PureRust — no OCCT for CI)
|
||||
- name: Install Linux system deps
|
||||
if: matrix.os == 'ubuntu-latest'
|
||||
run: |
|
||||
sudo apt-get update -qq
|
||||
sudo apt-get install -y \
|
||||
libwebkit2gtk-4.1-dev \
|
||||
libgtk-3-dev \
|
||||
libayatana-appindicator3-dev \
|
||||
librsvg2-dev \
|
||||
patchelf
|
||||
|
||||
- name: Build cimery-viewer (release)
|
||||
run: cargo build --release -p cimery-viewer --target ${{ matrix.target }}
|
||||
|
||||
- name: Package (Windows)
|
||||
- name: Upload viewer binary
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: viewer-${{ matrix.target }}
|
||||
path: target/${{ matrix.target }}/release/${{ matrix.viewer-bin }}
|
||||
retention-days: 1
|
||||
|
||||
# ── 2. Build Tauri app bundle (includes viewer sidecar) ───────────────────
|
||||
build-tauri:
|
||||
name: tauri-bundle (${{ matrix.target }})
|
||||
needs: build-viewer
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- os: windows-latest
|
||||
target: x86_64-pc-windows-msvc
|
||||
viewer-bin: cimery-viewer.exe
|
||||
tauri-target: x86_64-pc-windows-msvc
|
||||
- os: macos-latest
|
||||
target: aarch64-apple-darwin
|
||||
viewer-bin: cimery-viewer
|
||||
tauri-target: aarch64-apple-darwin
|
||||
- os: ubuntu-latest
|
||||
target: x86_64-unknown-linux-gnu
|
||||
viewer-bin: cimery-viewer
|
||||
tauri-target: x86_64-unknown-linux-gnu
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: dtolnay/rust-toolchain@stable
|
||||
with:
|
||||
targets: ${{ matrix.target }}
|
||||
- uses: Swatinem/rust-cache@v2
|
||||
with:
|
||||
key: tauri-${{ matrix.target }}
|
||||
|
||||
- name: Install Linux system deps
|
||||
if: matrix.os == 'ubuntu-latest'
|
||||
run: |
|
||||
sudo apt-get update -qq
|
||||
sudo apt-get install -y \
|
||||
libwebkit2gtk-4.1-dev \
|
||||
libgtk-3-dev \
|
||||
libayatana-appindicator3-dev \
|
||||
librsvg2-dev \
|
||||
patchelf
|
||||
|
||||
# Download viewer sidecar built in previous job
|
||||
- name: Download viewer sidecar
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: viewer-${{ matrix.target }}
|
||||
path: crates/app/binaries/
|
||||
|
||||
- name: Make viewer executable (Unix)
|
||||
if: matrix.os != 'windows-latest'
|
||||
run: chmod +x crates/app/binaries/${{ matrix.viewer-bin }}
|
||||
|
||||
# Install cargo-tauri CLI
|
||||
- name: Install tauri-cli
|
||||
run: cargo install tauri-cli --version "^2" --locked
|
||||
|
||||
# Build Tauri app bundle
|
||||
- name: Build Tauri bundle
|
||||
working-directory: crates/app
|
||||
run: cargo tauri build --target ${{ matrix.tauri-target }}
|
||||
env:
|
||||
# Code signing (placeholder — fill in secrets for production)
|
||||
# APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }}
|
||||
# APPLE_CERTIFICATE_PWD: ${{ secrets.APPLE_CERTIFICATE_PWD }}
|
||||
# APPLE_SIGNING_IDENTITY: ${{ secrets.APPLE_SIGNING_IDENTITY }}
|
||||
# TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
|
||||
TAURI_SKIP_DEVSERVER_CHECK: "true"
|
||||
|
||||
# Collect bundle artifacts
|
||||
- name: Collect Windows installers
|
||||
if: matrix.os == 'windows-latest'
|
||||
shell: pwsh
|
||||
run: |
|
||||
$bin = "target/${{ matrix.target }}/release/${{ matrix.artifact }}"
|
||||
Compress-Archive -Path $bin -DestinationPath ${{ matrix.archive }}
|
||||
$bundleDir = "target\${{ matrix.target }}\release\bundle"
|
||||
New-Item -ItemType Directory -Force -Path dist
|
||||
# MSI (WiX)
|
||||
Get-ChildItem -Recurse $bundleDir -Filter "*.msi" |
|
||||
Copy-Item -Destination dist\
|
||||
# NSIS exe
|
||||
Get-ChildItem -Recurse $bundleDir -Filter "*-setup.exe" |
|
||||
Copy-Item -Destination dist\
|
||||
|
||||
- name: Package (Unix)
|
||||
if: matrix.os != 'windows-latest'
|
||||
- name: Collect macOS bundles
|
||||
if: matrix.os == 'macos-latest'
|
||||
run: |
|
||||
bin="target/${{ matrix.target }}/release/${{ matrix.artifact }}"
|
||||
tar czf ${{ matrix.archive }} -C "$(dirname $bin)" "$(basename $bin)"
|
||||
bundleDir="target/${{ matrix.target }}/release/bundle"
|
||||
mkdir -p dist
|
||||
find "$bundleDir" -name "*.dmg" -exec cp {} dist/ \;
|
||||
find "$bundleDir" -name "*.app" -type d | while read app; do
|
||||
tar czf "dist/$(basename ${app%.app})-macos-arm64.tar.gz" -C "$(dirname $app)" "$(basename $app)"
|
||||
done
|
||||
|
||||
- name: Upload to Release
|
||||
uses: softprops/action-gh-release@v2
|
||||
- name: Collect Linux bundles
|
||||
if: matrix.os == 'ubuntu-latest'
|
||||
run: |
|
||||
bundleDir="target/${{ matrix.target }}/release/bundle"
|
||||
mkdir -p dist
|
||||
find "$bundleDir" -name "*.deb" -exec cp {} dist/ \;
|
||||
find "$bundleDir" -name "*.AppImage" -exec cp {} dist/ \;
|
||||
|
||||
- name: Upload Tauri bundle artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
files: ${{ matrix.archive }}
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
name: bundle-${{ matrix.target }}
|
||||
path: dist/
|
||||
retention-days: 7
|
||||
|
||||
# ── Nightly channel tag ────────────────────────────────────────────────────
|
||||
# Tag convention: nightly/<date>, beta/v*, stable/v* (ADR-003 A3)
|
||||
create-release-notes:
|
||||
needs: build
|
||||
# ── 3. Create GitHub Release ───────────────────────────────────────────────
|
||||
create-release:
|
||||
name: Create GitHub Release
|
||||
needs: build-tauri
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: Generate changelog since last tag
|
||||
|
||||
- name: Download all bundles
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
pattern: bundle-*
|
||||
merge-multiple: true
|
||||
path: dist/
|
||||
|
||||
- name: Generate changelog
|
||||
run: |
|
||||
PREV=$(git describe --tags --abbrev=0 HEAD^ 2>/dev/null || echo "")
|
||||
if [ -n "$PREV" ]; then
|
||||
git log ${PREV}..HEAD --oneline > RELEASE_NOTES.md
|
||||
git log "${PREV}..HEAD" --oneline > RELEASE_NOTES.md
|
||||
else
|
||||
git log --oneline > RELEASE_NOTES.md
|
||||
fi
|
||||
- name: Update Release Notes
|
||||
echo "" >> RELEASE_NOTES.md
|
||||
echo "---" >> RELEASE_NOTES.md
|
||||
echo "Built with Tauri v2 · Rust · egui+wgpu" >> RELEASE_NOTES.md
|
||||
|
||||
- name: Publish GitHub Release
|
||||
uses: softprops/action-gh-release@v2
|
||||
with:
|
||||
body_path: RELEASE_NOTES.md
|
||||
files: dist/**
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
Reference in New Issue
Block a user