팀은 없지만 잦은 빌드로 인해 Jenkins + bitbucket + fastlane으로 원격 빌드를 구성하고 자주 Release build를 배포하기 위해 빌드 시간의 개선이 필요했습니다.
기존에 빠른 빌드를 위해 Carthage의 framework를 썼지만 Xcode12로 넘어오는주에 급하게 동작을 안해서 Cocoapods로 다시 옮겼습니다.
Cocoapods plugin중에 그랩에서 만든 다음 플러그인을 사용합니다.
github.com/grab/cocoapods-binary-cache
명령어와 아래에서 Podfile만 참고해도 잘작동합니다
github.com/grab/cocoapods-binary-cache/blob/master/PodBinaryCacheExample/Podfile
명령어
- prebuild를 지정한 폴더에 생성함
pod binary prebuild
- prebuild를 깃에다 올림
pod binary push
- prebuild를 깃에서 받기
pod binary fetch (from your team's computer)
- 팟 설치 및 실행
pod install & run project
테스트용 Podfile - Local 프로젝트도 잘됨
# Configure binary cache of libraries
plugin "cocoapods-binary-cache"
config_cocoapods_binary_cache(
cache_repo: {
"default" => {
# "remote" => "git@cache_repo.git",
"local" => "~/.cocoapods-binary-cache/prebuilt-frameworks"
}
},
prebuild_config: "Debug"
)
platform :ios, '9.0'
use_frameworks!
def binary_pod(name, *args)
pod name, args, :binary => true
end
target 'BinaryCache' do
# Comment the next line if you don't want to use dynamic frameworks
binary_pod 'Alamofire', '~> 4.9.0'
# Local library
# pod "ZBTheme", :path => '../zbtheme', :binary => true
end
결론
오픈소스를 많이 사용해서 그런지 빌드 시간을 대폭 개선할 수 있었습니다.
기존에 6~8분 정도 걸렸던 클린 빌드가 2분 13초로 줄어들었고
XCLogParser를 통해서 쓸데없는 라이브러리 컴파일 시간이 사라진걸 볼 수 있었습니다.
이제 메인 프로젝트만 잘 관리하고 부분라이브러리화 하면 더 빨라지겠네요.
반응형
'iPhone' 카테고리의 다른 글
아이폰 시뮬레이터 Gif로 녹화 하기 (0) | 2022.11.01 |
---|---|
Firebase 이벤트 로깅 놓치기 쉬운 유의사항 (0) | 2021.01.13 |
cocoapods-rome does not specify a Swift version and none of the targets (0) | 2020.11.11 |
Swift Lint yml (0) | 2020.07.26 |
AWS Simple Notification Service p12 (0) | 2020.06.10 |