Archive v0.1.0 — 사진/영상 라이브러리 관리 프로그램
Tauri v2 + SolidJS + SQLite + ffmpeg 사이드카로 구현한 크로스플랫폼 사진·영상 관리 앱. 로컬/NAS(SFTP·WebDAV·FTP) 소스, 가상 그리드, 인앱 재생, 태그/이동/삭제/undo, 중복 탐지, 포터블 배포. - archive-db: SQLite 스키마·마이그레이션·단일 writer 스레드 + FTS5 trigram - archive-vfs: VFS 4백엔드(local/sftp/ftp/webdav) + 자격증명(키체인/볼트) - archive-indexer: 스캔·해시·썸네일·중복탐지·태그·파일작업·유지보수 - archive-media: localhost HTTP 미디어 서버(Range) + ffmpeg 스트림 잡 - 프론트: 3-pane UI, justified 가상 그리드, 라이트박스, 중복 검토 패널 Rust 테스트 49개 통과. CI: win x64/arm64 포터블 zip + macOS universal dmg. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,111 @@
|
||||
name: CI
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
pull_request:
|
||||
branches: [main]
|
||||
|
||||
env:
|
||||
CARGO_TERM_COLOR: always
|
||||
|
||||
jobs:
|
||||
# ── Windows x64: 테스트 + 포터블 zip ───────────────────────
|
||||
windows-x64:
|
||||
runs-on: windows-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 22
|
||||
cache: npm
|
||||
- uses: dtolnay/rust-toolchain@stable
|
||||
- uses: Swatinem/rust-cache@v2
|
||||
with:
|
||||
workspaces: src-tauri
|
||||
- run: npm ci
|
||||
- name: ffmpeg 사이드카 (x64)
|
||||
run: pwsh scripts/fetch-ffmpeg.ps1 -Target win64
|
||||
- name: 코어 크레이트 테스트 (ffmpeg/네트워크 통합 포함)
|
||||
working-directory: src-tauri
|
||||
run: cargo test --workspace
|
||||
- name: Tauri 빌드 (x64)
|
||||
run: npm run tauri build -- --no-bundle
|
||||
- name: 포터블 zip 패키징
|
||||
run: pwsh scripts/package-portable.ps1 -Target x64
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: archive-windows-x64-portable
|
||||
path: dist-portable/*.zip
|
||||
|
||||
# ── Windows ARM64: 크로스컴파일 (스파이크 ① 상시 검증) ──────
|
||||
windows-arm64-cross:
|
||||
runs-on: windows-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 22
|
||||
cache: npm
|
||||
- uses: dtolnay/rust-toolchain@stable
|
||||
with:
|
||||
targets: aarch64-pc-windows-msvc
|
||||
- uses: Swatinem/rust-cache@v2
|
||||
with:
|
||||
workspaces: src-tauri
|
||||
key: arm64-cross
|
||||
- run: npm ci
|
||||
- name: ffmpeg 사이드카 (ARM64)
|
||||
run: pwsh scripts/fetch-ffmpeg.ps1 -Target winarm64
|
||||
- name: Tauri 빌드 (ARM64 크로스)
|
||||
run: npm run tauri build -- --target aarch64-pc-windows-msvc --no-bundle
|
||||
- name: 포터블 zip 패키징 (ARM64)
|
||||
run: pwsh scripts/package-portable.ps1 -Target arm64
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: archive-windows-arm64-portable
|
||||
path: dist-portable/*.zip
|
||||
|
||||
# ── Windows ARM64 네이티브 러너: 실제 ARM64에서 테스트 실행 ──
|
||||
windows-arm64-native:
|
||||
runs-on: windows-11-arm
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: dtolnay/rust-toolchain@stable
|
||||
- uses: Swatinem/rust-cache@v2
|
||||
with:
|
||||
workspaces: src-tauri
|
||||
key: arm64-native
|
||||
- name: 코어 크레이트 테스트 (ARM64 네이티브)
|
||||
working-directory: src-tauri
|
||||
run: cargo test --workspace
|
||||
|
||||
# ── macOS: Intel + Apple Silicon ────────────────────────────
|
||||
macos:
|
||||
runs-on: macos-14
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 22
|
||||
cache: npm
|
||||
- uses: dtolnay/rust-toolchain@stable
|
||||
with:
|
||||
targets: aarch64-apple-darwin, x86_64-apple-darwin
|
||||
- uses: Swatinem/rust-cache@v2
|
||||
with:
|
||||
workspaces: src-tauri
|
||||
- run: npm ci
|
||||
- name: ffmpeg 사이드카 (universal — lipo)
|
||||
run: pwsh scripts/fetch-ffmpeg-macos.ps1
|
||||
- name: 코어 크레이트 테스트 (헤드리스)
|
||||
working-directory: src-tauri
|
||||
run: cargo test --workspace
|
||||
# 배포 빌드 시 서명/공증: APPLE_CERTIFICATE 등 시크릿이 있으면 tauri-action이 처리.
|
||||
# 미서명 빌드는 Gatekeeper에서 우클릭-열기 필요 (README 안내).
|
||||
- name: Tauri 빌드 (universal .app + dmg)
|
||||
run: npm run tauri build -- --target universal-apple-darwin
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: archive-macos-universal
|
||||
path: src-tauri/target/universal-apple-darwin/release/bundle/dmg/*.dmg
|
||||
Reference in New Issue
Block a user