iPhone
Swift 팀원 및 원격 빌드를 위한 cocoapods 프레임워크 캐싱
zombie45
2020. 11. 18. 03:05
팀은 없지만 잦은 빌드로 인해 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를 통해서 쓸데없는 라이브러리 컴파일 시간이 사라진걸 볼 수 있었습니다.
이제 메인 프로젝트만 잘 관리하고 부분라이브러리화 하면 더 빨라지겠네요.
반응형