Xcode 안 열고 CLI와 LLM으로 Mac/iOS 앱 빌드부터 배포까지 자동화하는 워크플로우
- Xcode.app은 설치는 필요하지만 실행할 필요는 없음, xcodebuild, notarytool, stapler, devicectl이 모두 Xcode 내부에 있는 커맨드라인 도구로 셸에서 바로 동작함
- XcodeGen으로 project.yml 파일을 만들어두면 매 빌드마다 .xcodeproj 폴더를 자동 재생성해서, git에는 YAML 파일만 커밋하고 .xcodeproj는 무시할 수 있음
- scripts/release.sh 스크립트 하나로 archive, Developer ID 서명, notarize, staple, /Applications 설치까지 전체 체인을 한 번에 처리함
- 최초 1회는 GUI나 대화형 터미널로 Apple ID 로그인, Developer ID Application 인증서 생성, notarytool의 앱 전용 비밀번호 저장이 필요하고 이후부터는 완전히 무인 빌드가 가능함
- 서명은 로그인 키체인에 저장된 인증서와 개인키를 xcodebuild가 자동으로 찾아 쓰는 방식이라 저장소에 시크릿을 넣을 필요가 없음
Hacker News opinions
나 6개월 동안 Claude Code로 거의 이 방식 그대로 쓰고 있음. Xcode 열었던 건 시뮬레이터 업데이트나 Apple Watch 타겟 추가할 때 정도였는데, Opus 4.6부터는 Claude가 그런 것도 알아서 처리하더라.
이 글 자체가 좀 웃긴게, Claude한테 시켜서 만든 블로그 글을 Claude Code한테 다시 참고하라고 링크 걸어놓은 거잖아. Claude가 Claude보고 Claude 쓰라고 하는 순환 구조임.
이거 몇 년 전부터 다 알려진 방법이고 문서화도 잘 돼있던 건데 굳이 새삼스럽게 쓸 필요가.
저건 예전부터 알려진 워크플로우인데, 이번엔 'AI로' 했다는 게 다른 점인가 봄 (비꼬는 거임).
fastlane이 이미 이 문제 해결해주는 도구인데, LLM 시대 되면서 다들 커뮤니티 도구 대신 각자 스크립트 짜는 경향이 걱정됨.
꼭 그렇지도 않음. bespoke 스크립트는 프로젝트에 딱 맞게 돌아가고 불필요한 의존성 안 늘어남. LLM 덕분에 그 계산이 바뀐 거지.
Xcode command line tools 전용 설치 프로그램이 있긴 한데, notarytool이나 stapler처럼 진짜 필요한 도구들은 빠져있음. metal 컴파일러도 없고, 저게 왜 있는지 모르겠음.
제 오픈소스 프로젝트 Axiom도 이런 워크플로우 도와주는 툴인데, xclog, xcprof, xcsym, xcui 같은 LLM 전용 도구들 포함하고 있음.
Apple, Android 둘 다 이 방식으로 파이프라인 짜서 Mac Studio랑 Linux 박스에 작업 분산시킴. GitHub Actions 가동률이 요즘 별로라 러너를 옮겼음.
Claude Code한테 이 작업 시키는 건 결국 Anthropic한테 시크릿, 환경변수, 인증서, 소스코드 다 넘기는 거임.
좋은 샌드박스 있으면 그런 걱정 안 해도 됨.
앱을 CLI로 빌드 가능하게 만드는 거, 개인 Mac에서 쓸 땐 필요 없지만 CI 자동화할 땐 진짜 유용함. GitHub Actions로 빌드 되면 Claude도 똑같이 할 수 있음.
맥OS 앱은 시뮬레이터 필요 없고, iOS 앱은 Claude Code가 시뮬레이터 직접 띄우는 것도 봤음. 테스트랑 배포는 다른 얘기고, 앱스토어 없이도 연결된 실기기에서 바로 돌릴 수 있음.
Xcode 안 켜고 앱스토어에 슬롭 더 올리는 거 아님? Xcode 켜기 귀찮으면 사람이 리뷰해야 하는 앱 제출도 귀찮아해야 하는 거 아닌가.
Linux에서만 iOS 앱 빌드하고 테스트해봤는데 xtool이라는 툴로 진짜 쉽게 됨. TestFlight나 App Store 업로드 없이 USB로 아이폰에 바로 설치 가능함.