Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 51 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
name: Bug report
description: Storefront에서 발견한 문제를 알려주세요
labels: ["bug"]
body:
- type: textarea
id: summary
attributes:
label: 무슨 일이 일어났나요?
description: 재현 단계와 기대한 동작을 알려주세요.
placeholder: |
1. 앱을 열고 `.sqlite` 파일을 선택했더니…
2. 기대: …
3. 실제: …
validations:
required: true

- type: input
id: macos
attributes:
label: macOS 버전
placeholder: "macOS 26.0 / Tahoe"
validations:
required: true

- type: input
id: storefront-version
attributes:
label: Storefront 버전
description: 메뉴바 Storefront → About Storefront 또는 DMG 파일명에서 확인
placeholder: v0.1.0
validations:
required: true

- type: dropdown
id: db-type
attributes:
label: 대상 DB 종류
options:
- SQLite (일반)
- SwiftData 스토어 (.store)
- iOS 시뮬레이터 앱 DB
- 기타
validations:
required: true

- type: textarea
id: logs
attributes:
label: Console 로그 또는 스크린샷
description: 에러 메시지나 스크린샷이 있으면 붙여주세요.
render: shell
49 changes: 49 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
name: Build & Test

on:
push:
branches: [master, main]
paths-ignore:
- "Docs/**"
- "README.md"
- "LICENSE"
pull_request:
branches: [master, main]

concurrency:
group: build-${{ github.ref }}
cancel-in-progress: true

jobs:
build-test:
name: xcodebuild test
runs-on: macos-26
timeout-minutes: 25

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Select Xcode
run: sudo xcode-select -s /Applications/Xcode.app

- name: Show versions
run: |
xcodebuild -version
swift --version
sw_vers

- name: Install tools
run: brew install xcodegen

- name: Generate Xcode project
run: xcodegen generate

- name: Resolve Swift Package Manager deps
run: xcodebuild -resolvePackageDependencies -project Storefront.xcodeproj

- name: Run tests
run: make test

- name: Debug build
run: make build
85 changes: 85 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
name: Release

on:
push:
tags:
- "v*"
workflow_dispatch:
inputs:
tag:
description: "태그 이름 (예: v0.1.0)"
required: true

permissions:
contents: write

jobs:
release:
name: Build DMG & publish release
runs-on: macos-26
timeout-minutes: 45

steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Select Xcode
run: sudo xcode-select -s /Applications/Xcode.app

- name: Install tools
run: brew install xcodegen create-dmg

- name: Generate Xcode project
run: xcodegen generate

- name: Resolve SPM deps
run: xcodebuild -resolvePackageDependencies -project Storefront.xcodeproj

- name: Run tests (gate)
run: make test

- name: Build DMG
run: make dmg

- name: Locate DMG
id: locate
run: |
DMG=$(ls build/Storefront-*.dmg | head -n 1)
echo "dmg=$DMG" >> "$GITHUB_OUTPUT"
echo "tag=${GITHUB_REF_NAME:-${{ github.event.inputs.tag }}}" >> "$GITHUB_OUTPUT"
echo "Built: $DMG"
ls -lh "$DMG"

- name: Compute SHA256
id: shasum
run: |
cd build
shasum -a 256 "$(basename "${{ steps.locate.outputs.dmg }}")" | tee SHA256SUMS.txt
echo "file=build/SHA256SUMS.txt" >> "$GITHUB_OUTPUT"

- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ steps.locate.outputs.tag }}
name: Storefront ${{ steps.locate.outputs.tag }}
draft: false
prerelease: ${{ contains(steps.locate.outputs.tag, '-') }}
generate_release_notes: true
body: |
## 설치

1. `Storefront-*.dmg` 다운로드 → 더블클릭 → `Applications/`로 드래그
2. **첫 실행 시 Gatekeeper 우회**:
- Finder → `Storefront.app` 우클릭 → 열기 → 열기
- 또는: `xattr -cr /Applications/Storefront.app`

**Storefront는 서명되지 않은 오픈소스 빌드**입니다. Apple Developer 프로그램을 사용하지 않으므로 첫 실행 시 보안 경고가 표시됩니다.

## 검증

SHA-256 해시는 첨부된 `SHA256SUMS.txt`를 참조하세요.
files: |
${{ steps.locate.outputs.dmg }}
${{ steps.shasum.outputs.file }}
18 changes: 17 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,30 @@ playground.xcworkspace
# Packages/
# Package.pins
# Package.resolved
# *.xcodeproj

# Generated by xcodegen — regenerate locally with `xcodegen generate`
*.xcodeproj
#
# Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata
# hence it is not needed unless you have added a package configuration file to your project
# .swiftpm

.build/

# Project-local build output (Makefile uses -derivedDataPath build)
build/
DerivedData/

# Generated by xcodegen — commit project.yml, open .xcodeproj directly
# .xcodeproj/xcuserdata is always ignored via 'xcuserdata/' rule above

# macOS
.DS_Store

# Claude Code / OMC session state
.omc/
.claude/

# CocoaPods
#
# We recommend against adding the Pods directory to your .gitignore. However
Expand Down
Loading
Loading