Xcode 없이 Mac/iOS 앱 빌드 및 배포 자동화하기
Xcode 설치는 필수이나, 실제로는 커맨드라인 도구로 헤드리스 빌드 및 배포 자동화 가능
LLM(Claude Code 등) 활용하여 스크립트 작성 및 워크플로우 구축 지원
보안 우려와 함께 LLM 기반 개발 워크플로우의 효율성 증대 가능성 논의
xcodegen, xcodebuild, notarytool 등 CLI 도구를 활용한 전체 파이프라인 구축
헤드리스 빌드 및 배포 파이프라인 구축
본문은 Xcode GUI 없이 커맨드라인 도구만을 사용하여 Mac 및 iOS 앱의 전체 빌드, 서명, notarization, 배포 과정을 자동화하는 방법을 상세히 설명합니다. `xcodebuild`, `notarytool`, `stapler`, `devicectl` 등의 도구를 활용하며, `scripts/release.sh`와 같은 스크립트를 통해 이 모든 과정을 단일 명령으로 실행할 수 있습니다. 이는 개발 워크플로우의 효율성을 극대화하고 반복적인 수작업을 제거하는 데 중점을 둡니다. LLM은 이러한 스크립트 작성 및 문제 해결 과정에서 보조적인 역할을 수행합니다.
LLM 활용과 보안 및 프라이버시 우려
커뮤니티에서는 LLM(특히 Claude Code)을 빌드 및 배포 자동화에 활용하는 것에 대한 보안 및 프라이버시 문제가 제기되었습니다. 사용자의 홈 디렉토리나 SSH 키가 LLM 에이전트에 노출될 수 있다는 우려가 있으며, 이를 방지하기 위해 별도 사용자 계정 사용이나 시스템 레벨의 접근 제어 필요성이 언급되었습니다. 이는 AI 기반 개발 도구 도입 시 고려해야 할 중요한 트레이드오프(Trade-off)로 지적됩니다.
XcodeGen을 통한 프로젝트 관리
Xcode 프로젝트 파일(`.xcodeproj`)은 Git 관리 시 충돌을 유발하기 쉬운데, `xcodegen`은 `project.yml` 파일 기반으로 프로젝트 설정을 관리하고 빌드 시 `.xcodeproj`를 재생성하는 방식으로 이 문제를 해결합니다. 이를 통해 Git 저장소는 YAML 설정 파일만 관리하면 되므로, 프로젝트 파일 관리의 복잡성을 크게 줄일 수 있습니다. 이는 선언적 프로젝트 관리(Declarative Project Management) 패턴의 좋은 예시입니다.
코드 서명(Code Signing) 및 Notarization 심층 분석
개발자 ID 애플리케이션 인증서와 개인 키가 로그인 키체인(Login Keychain)에 저장되며, `xcodebuild`가 이를 자동으로 찾아 서명에 사용합니다. Notarization은 Apple의 악성코드 스캔 후 티켓을 발급받는 별도 과정이며, `notarytool`을 통해 앱별 비밀번호로 인증합니다. 이 과정은 보안 강화 및 Gatekeeper 통과를 위해 필수적이며, LLM은 이 복잡한 과정을 자동화하는 데 도움을 줄 수 있습니다. 데이터 미저장 정책(Zero-Retention Policy)은 이러한 민감 정보가 Git에 노출되지 않도록 하는 데 중요합니다.
대체 도구 및 커뮤니티 경험 공유
댓글에서는 `strudel`, `Axiom`, `Sweetpad CLI` 등 본문과 유사한 아이디어를 가진 대체 CLI 도구들이 소개되었습니다. 또한 Linux 환경에서 iOS 앱을 빌드하고 USB로 설치하는 경험, Expo와 Fastlane을 통한 완전 자동화된 iOS 배포, Swift Package Manager를 활용한 Xcode 의존성 최소화 등 다양한 개발자들의 경험이 공유되었습니다. 이는 개발자 커뮤니티 내에서 유사한 문제에 대한 다양한 해결책이 존재함을 보여줍니다.