Skip to content

[Build] 개발 환경 및 모듈형 프로젝트 인프라 구성 - #2

Merged
0-jerry merged 31 commits into
developfrom
feature/workspace-setting
Aug 10, 2026
Merged

[Build] 개발 환경 및 모듈형 프로젝트 인프라 구성#2
0-jerry merged 31 commits into
developfrom
feature/workspace-setting

Conversation

@0-jerry

@0-jerry 0-jerry commented Aug 9, 2026

Copy link
Copy Markdown
Collaborator

작업자 작성 영역

변경 유형

  • 기능 추가
  • 버그 수정
  • 리팩터링
  • 테스트
  • UI·디자인
  • 빌드·의존성·프로젝트 설정
  • 문서
  • 기타: CI 및 Git 훅

변경 요약

  • 기존 단일 Xcode 프로젝트를 Tuist 기반 멀티 프로젝트 구조로 전환하고 App, Composition, Core, Data, Domain, Feature, UI 계층을 구성했습니다.
  • 저장소 경로 정책, Git 훅, Swift 포맷, 프로젝트 빌드, 셸 정적·회귀 검증 도구를 tools/ 아래에 구성했습니다.
  • GitHub 협업 규칙과 CI, Spec Kit, 프로젝트 스크립트 작성 스킬, 아키텍처 및 초기화 문서를 추가했습니다.
  • Makefile을 통해 Tuist 프로젝트 생성과 Git 훅 설치를 일관되게 실행할 수 있도록 했습니다.

관련 이슈

N/A: 관련 이슈 없음

영향 및 고려사항

  • 프로젝트 생성 및 빌드 진입점이 저장소 루트의 기존 Xcode 프로젝트에서 sources/ 기반 Tuist workspace로 변경됩니다.
  • 신규 checkout은 make init 또는 Tuist 설치·생성과 Git 훅 설치 절차가 필요합니다.
  • CI와 로컬 pre-commit이 동일한 포맷·빌드·테스트 경계를 사용하도록 구성됩니다.
  • 모듈 의존 방향과 Composition Root가 문서화된 계층 규칙의 영향을 받습니다.

테스트 변경

  • App 테스트 타깃과 공유 scheme을 추가하고 컴파일 검증 테스트를 구성했습니다.
  • Git 훅, 프로젝트 빌드, Swift 포맷, 저장소 경로, 셸 검증기에 대한 회귀 테스트를 추가했습니다.

검증 결과

검증 유형 환경 실행 명령 또는 절차 결과 및 근거
셸 정적·회귀 검증 macOS, ShellCheck 0.11.0, shfmt 3.13.1 ./tools/script-verification/bin/run.sh 성공: 정적 검사와 검증기 회귀 테스트 5종 통과, 스크립트 검증 완료
프로젝트 빌드 iOS Simulator ./tools/githooks/project-build/bin/run.sh build 성공: 8개 scheme 시도, 8개 성공, 0개 실패
테스트 컴파일 iOS Simulator ./tools/githooks/project-build/bin/run.sh compile 성공: GitIt scheme 1개 성공
테스트 실행 iOS Simulator ./tools/githooks/project-build/bin/run.sh test 실패: GitIt test runner가 부트스트랩 준비 중 조기 종료하여 TEST EXECUTE FAILED

미검증 항목

  • Simulator 테스트 실행은 test runner의 Early unexpected exit, operation never finished bootstrapping 오류로 완료하지 못했습니다.
  • GitHub Actions 결과는 PR 생성 후 확인이 필요합니다.

위험, 후속 작업 및 롤백

  • Simulator test runner 조기 종료 원인을 후속 확인해야 합니다. CI에서도 재현되는지 먼저 확인하고, 로컬 Simulator 상태 또는 테스트 런타임 문제를 분리합니다.
  • Feature 링크 단계에서 일부 Swift macro 관련 search path 경고가 출력되지만 빌드는 성공했습니다. CI 결과와 함께 후속 정리 여부를 판단합니다.
  • 롤백이 필요하면 이 PR의 커밋 범위를 revert하여 기존 Xcode 프로젝트 구조로 되돌릴 수 있습니다.

작업 범위 및 확인 필요 사항

  • develop...feature/workspace-setting 기준 21개 커밋, 150개 파일의 프로젝트 구조·개발 도구·CI·문서 변경입니다.
  • 리뷰어는 Tuist 모듈 의존 방향, Git 훅 활성화 정책, CI 빌드·테스트 흐름, 신규 checkout 초기화 절차를 중점 확인해 주세요.

0-jerry and others added 21 commits July 28, 2026 00:12
단일 Xcode 프로젝트를 Tuist 워크스페이스 기반 모듈 구조로 전환한다.

Core와 UI의 세부 타겟 및 외부 패키지 의존성을 명시하고, 비어 있는 모듈에 Placeholder를 추가해 생성 프로젝트에서 소스 그룹을 유지한다.
소스 루트가 저장소 루트로 이동하면서 무효가 된 source/ 접두 규칙을 루트
기준으로 재정의한다. Tuist 3.x 경로인 Tuist/Dependencies/는 더 이상 쓰지
않으므로 제거한다.
이후 커밋에서 DI 계층 재편 diff가 경로 이동에 묻히지 않도록, 이동만 담은
커밋으로 분리한다.

xcconfig 2개는 이동하지 않고 삭제로 기록된다. 새 경로가 .gitignore에서
제외 대상이기 때문이다(Δ8, 커밋 1). 디스크의 파일은 그대로 남고
추적만 끊긴다.
Utility·Auth·Cache·HTTPClient 모듈을 폐지하고 Core/Utility로 흡수한다.
DI 계층(DIInterface/DILive)을 신설하고 Features를 Feature로 단수화해
App이 DI와 Feature만 참조하도록 의존 방향을 정리한다.

Data/{Resources,Sources}는 App 템플릿을 복사한 잔재라 제거한다.
Projects/Config/{debug,release}.xcconfig를 저장소에 추적 대상으로
올린다. gitignore의 *.xcconfig 규칙은 이 커밋에서만 잠시 해제한다.
Projects/Config/*.xcconfig를 저장소에 빈 상태로 커밋한 뒤,
로컬에서 채워 넣는 실제 값이 실수로 커밋되지 않도록
*.xcconfig를 다시 gitignore에 추가한다.
CODEOWNERS, 커밋 컨벤션, PR 템플릿과 GitHub Actions CI 워크플로를
도입한다. CI 준비 단계는 실제 xcconfig 경로인 Projects/Config를
사용한다.
Swift-Style을 Tools/swift-style 서브모듈로 추가하고, 서브모듈
스크립트가 자기 자신 기준으로 cd하는 탓에 상대경로를 못 찾는 문제를
절대경로 wrapper(.githooks/swift-format/bin/run.sh)로 우회한다.
pre-commit의 swift-format 단계는 이 wrapper를 호출하도록 바꾸고
활성화하며, CI도 동일한 wrapper와 서브모듈 경로를 쓰도록 갱신한다.
specify init으로 Spec-Kit 스캐폴딩(스크립트, 템플릿, 통합 매니페스트,
speckit-* 스킬)을 도입한다.

프로젝트 헌법에 작업 범위 격리(sources/** vs 나머지)와 Spec-Kit 범위
원칙을 정의하고, 비준일과 개정·버전·준수 절차를 명시한다.
.githooks의 커밋 훅과 빌드 검증 스크립트를 tools/githooks로 옮기고,
저장소 경로를 중앙에서 조회하는 tools/repository-paths와 셸 스크립트
정적 검사·회귀 테스트를 수행하는 tools/script-verification을 새로
도입한다.

각 훅 스크립트는 하드코딩된 경로 대신 repository-paths.sh로 실행
경로를 조회하도록 바꾸고, Swift-Style 서브모듈 경로도 Tools/swift-style
에서 tools/swift-style로 맞춘다. CI 워크플로와 커밋 컨벤션 문서는 이
경로 체계에 맞게 갱신한다.
.gitignore의 중복된 Swift/Xcode 규칙을 하나로 합치고 macOS, VSCode,
Tuist, Python, Ruby 등 항목별로 정리한다. tools/script-verification이
받는 .build/ 산출물을 계속 무시하도록 규칙을 유지한다.

tools/githooks 스크립트의 셸 들여쓰기 규칙(tab, POSIX)을 EditorConfig로
명시한다.
tools/githooks와 tools/script-verification 등 저장소가 소유한 POSIX
sh 스크립트를 작성·리팩터링할 때 따를 계층 구조, 의존 방향, 경로
안전성, rollback, 진단 규칙을 write-project-scripts 스킬로 정의한다.

tools/script-verification/bin/run.sh가 이 스킬의 참조 문서를
체크리스트 검증 대상으로 사용한다.
sources/, tools/githooks, tools/repository-paths, tools/script-verification,
.specify, .agents 도입 이후의 저장소 구조와 사용법을 안내한다.

Tuist 프로젝트 생성, pre-commit Swift 포매팅, Git 훅 설치, 저장소
공용 경로 조회, 셸 스크립트 공용 검증 실행 방법을 각 절로 분리해서
기술한다.
Tuist 설치·생성과 Git 훅 설치를 make init/tuist/hooks로 묶어 신규
클론 시 수동 명령 나열 없이 초기화할 수 있게 한다. tuist 실행 후에는
sources/GitIt.xcworkspace를 가리키는 심볼릭 링크를 저장소 루트에 만들어
Xcode를 루트에서 바로 열 수 있게 하되, 실제 파일은 옮기지 않아 Projects·
Tuist 상대경로 참조와 GIT_IT_WORKSPACE_PATH 기반 빌드 스크립트는
그대로 동작한다.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@0-jerry
0-jerry marked this pull request as ready for review August 9, 2026 21:42
@0-jerry 0-jerry closed this Aug 9, 2026
@0-jerry 0-jerry reopened this Aug 9, 2026
@0-jerry
0-jerry merged commit d8b547a into develop Aug 10, 2026
2 checks passed
@0-jerry
0-jerry deleted the feature/workspace-setting branch August 10, 2026 04:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant