Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Rome - An S3 Cache for Carthage

Rome - An S3 Cache for Carthage

Rome is a command line tool that augments Carthage and helps with sharing pre-built iOS frameworks inside a team

Tommaso Piazza

October 11, 2016
Tweet

More Decks by Tommaso Piazza

Other Decks in Programming

Transcript

  1. Rome An S3 Cache for Carthage Tommaso Piazza - @tmpz

    h"ps:/ /github.com/blender/Rome - Swi:.Berlin 10/10/2016 - @tmpz
  2. The Problem • A lot of frameworks h"ps:/ /github.com/blender/Rome -

    Swi:.Berlin 10/10/2016 - @tmpz
  3. Like this much github "Alamofire/Alamofire" "3.4.1" github "JohnEstropia/GCDKit" "1.2.5" github

    "Haneke/HanekeSwift" "v0.10.1" github "bitstadium/HockeySDK-iOS" "3.8.6" github "kishikawakatsumi/KeychainAccess" "v2.3.6" github "Marxon13/M13Checkbox" "2.1.2" github "ResearchKit/ResearchKit" "1.3.1" github "SnapKit/SnapKit" "0.21.1" github "typelift/Swiftz" "v0.5.0" git "http://stash.feingoldtech.com/scm/cppdsp/feingoldtech-cpp-vadsegmentor" "c73d1894fad0172fe4f39e778ae443f6acce1e2e" github "JohnEstropia/CoreStore" "1.6.10" github "typelift/Tyro" "v0.0.8" git "http://stash.feingoldtech.com/scm/iossdk/feingoldtech-ios-core.git" "v0.6.0" git "http://stash.feingoldtech.com/scm/iossdk/feingoldtech-ios-auth.git" "v3.4.0" git "http://stash.feingoldtech.com/scm/iossdk/feingoldtech-ios-realage.git" "v0.0.7" git "http://stash.feingoldtech.com/scm/iossdk/feingoldtech-ios-voice.git" "v0.0.1" git "http://stash.feingoldtech.com/scm/iossdk/feingoldtech-ios-lig.git" "c07adf219c21976b1c2fc307e93979f52a2fee7b" git "http://stash.feingoldtech.com/scm/iossdk/feingoldtech-ios-geonames.git" "v0.0.1" git "http://stash.feingoldtech.com/scm/iossdk/feingoldtech-ios-search.git" "v0.0.1" h"ps:/ /github.com/blender/Rome - Swi:.Berlin 10/10/2016 - @tmpz
  4. More Problems • Frameworks versions change very frequently (every build)

    • Long build =mes (~45m) h"ps:/ /github.com/blender/Rome - Swi:.Berlin 10/10/2016 - @tmpz
  5. The obvious solu,on • Cache • Producer / Consumer flow

    h"ps:/ /github.com/blender/Rome - Swi:.Berlin 10/10/2016 - @tmpz
  6. Exis%ng solu%ons • Download/Upload en.re build folder • Cache key

    computed from en.re folder • Changing one library invalidates the cache h"ps:/ /github.com/blender/Rome - Swi:.Berlin 10/10/2016 - @tmpz
  7. Rome • Cache just what you need • Per framework

    cache keys from Cartfile.resolved • Check cache for presence of keys • Ignore some frameworks • Download what you need h"ps:/ /github.com/blender/Rome - Swi:.Berlin 10/10/2016 - @tmpz
  8. Romefile [Cache] # Mandatory Section S3-Bucket = feingoldtech-development-ios [RepositoryMap] #

    Optional section HanekeSwift = Haneke HockeySDK-iOS = HockeySDK feingoldtech-cpp-vadsegmentor = VadSegmentor, SegmentorUtils # Multiple targets support feingoldtech-ios-core = FGCore feingoldtech-ios-auth = FGAuth feingoldtech-ios-realage = FGRealAge feingoldtech-ios-voice = FGVoice feingoldtech-ios-lig = FGLiG feingoldtech-ios-geonames = FGGeoNames feingoldtech-ios-search = FGSearch [IgnoreMap] # # Optional section GDCWebServer = GDCWebServer h"ps:/ /github.com/blender/Rome - Swi:.Berlin 10/10/2016 - @tmpz
  9. Rome Commands • rome upload [Framework1, Framework2 ...] • rome

    download [Framework1, Framework2 ...] • rome list [--missing | --present] h"ps:/ /github.com/blender/Rome - Swi:.Berlin 10/10/2016 - @tmpz
  10. Workflow example • Download available frameworks • Build only what

    is missing • Upload what was built rome download && rome list --missing | xargs -n1 carthage build --platform iOS && rome upload h"ps:/ /github.com/blender/Rome - Swi:.Berlin 10/10/2016 - @tmpz
  11. Thanks! h"ps:/ /github.com/blender/Rome h"ps:/ /github.com/blender/Rome - Swi:.Berlin 10/10/2016 - @tmpz