[Build] 개발 환경 및 모듈형 프로젝트 인프라 구성 - #2
Merged
Merged
Conversation
단일 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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
작업자 작성 영역
변경 유형
변경 요약
tools/아래에 구성했습니다.Makefile을 통해 Tuist 프로젝트 생성과 Git 훅 설치를 일관되게 실행할 수 있도록 했습니다.관련 이슈
N/A: 관련 이슈 없음
영향 및 고려사항
sources/기반 Tuist workspace로 변경됩니다.make init또는 Tuist 설치·생성과 Git 훅 설치 절차가 필요합니다.테스트 변경
검증 결과
./tools/script-verification/bin/run.sh스크립트 검증 완료./tools/githooks/project-build/bin/run.sh build./tools/githooks/project-build/bin/run.sh compile./tools/githooks/project-build/bin/run.sh testTEST EXECUTE FAILED미검증 항목
Early unexpected exit, operation never finished bootstrapping오류로 완료하지 못했습니다.위험, 후속 작업 및 롤백
작업 범위 및 확인 필요 사항
develop...feature/workspace-setting기준 21개 커밋, 150개 파일의 프로젝트 구조·개발 도구·CI·문서 변경입니다.