| OLD | NEW | 
|---|
|  | (Empty) | 
| 1 # |  | 
| 2 # 20150327 pavel@salsitasoft.com |  | 
| 3 # |  | 
| 4 |  | 
| 5 machine: |  | 
| 6   xcode: |  | 
| 7     version: "9.0" |  | 
| 8   pre: |  | 
| 9      - brew install node || brew upgrade node |  | 
| 10      - brew install jq # Replace Ruby JSON.parse |  | 
| 11 # I wanted to be a nice guy and specify node dependency The Right Way (TM) |  | 
| 12 # with machine:node section. But it requires nvm which is NOT automagically inst
    alled |  | 
| 13 # because the target is not autodetected to be a node project. And it is impossi
    ble to |  | 
| 14 # mimick because while installing nvm _is_ possible, it is not possible to |  | 
| 15 # "add this and that to .bashrc". The Circle's shell config is a custom .circler
    c, the |  | 
| 16 # name and implementation of which is private to CCI and can change at any time. |  | 
| 17 # Modifying (appending to) it would be very fragile. |  | 
| 18 #    - brew install nvm |  | 
| 19 #    - mkdir ${HOME}/.nvm |  | 
| 20 #    - source $(brew --prefix nvm)/nvm.sh |  | 
| 21 #  node: |  | 
| 22 #    version: v0.10.31 |  | 
| 23   environment: |  | 
| 24 # WARNING WARNING WARNING |  | 
| 25 # The custom environment variables must not depend on each other |  | 
| 26 # because the resulting export statements will be flushed to .circlerc |  | 
| 27 # in an arbitrary order, not the order seen here !!! |  | 
| 28 # The only safe dependency is Circle-predefined vars because those |  | 
| 29 # are flushed ahead of the custom vars |  | 
| 30     XCODE_WORKSPACE: "AdblockBrowser.xcworkspace" |  | 
| 31     XCODE_SCHEME: "AdblockBrowser" |  | 
| 32     APP_VERSION: $(/usr/local/bin/jq -r .version $HOME/$CIRCLE_PROJECT_REPONAME/
    package.json) |  | 
| 33     CORE_REPONAME: kitt-core |  | 
| 34 #   ^^^ environment section is running in /Users/distiller |  | 
| 35 # so a directory change to the checked out repo is needed. |  | 
| 36 # Can't do "cd" or "pushd" because it's refused at time of xctool invocation res
    olving |  | 
| 37     IOS_VERSION: "11.0" |  | 
| 38     IOS_SIMULATOR_VERSION: "11.0.1" |  | 
| 39 #   ^^^ update as the time goes |  | 
| 40 checkout: |  | 
| 41   post: |  | 
| 42     - git submodule update --init |  | 
| 43     # the main repo which initiated this build was already checked out |  | 
| 44     - $HOME/$CIRCLE_PROJECT_REPONAME/deploy/checkout-core.sh $CORE_REPONAME $CIR
    CLE_BRANCH |  | 
| 45     - ../$CORE_REPONAME/deploy/build-jsapi.sh .. fromci |  | 
| 46 |  | 
| 47 dependencies: |  | 
| 48 # WARNING: This section FORCES a path relative to $HOME/$CIRCLE_PROJECT_REPONAME
     !!! |  | 
| 49 # Always prepended by it, no matter whether the path already starts |  | 
| 50 # with $HOME or another form of fs root reference |  | 
| 51   pre: |  | 
| 52     - xcodebuild -showsdks # just to log what CCI supports |  | 
| 53 # ^^^ as CCI support said, dependencies:pre is the earliest phase where xcode-se
    lect was |  | 
| 54 # already run, so correct SDKs should be displayed |  | 
| 55     - xcrun instruments -w "iPhone SE ($IOS_SIMULATOR_VERSION)" || true |  | 
| 56 #   ^^^ Circle recommended magic: preboot the simulator runtime |  | 
| 57     - xcrun simctl list # debug occassional "unavailable simulator" |  | 
| 58     - deploy/carthage-bootstrap.sh |  | 
| 59 # Do not specify "override" section to allow CCI inference which speeds up Pods 
    fetching |  | 
| 60 # https://discuss.circleci.com/t/downloading-cocoapods-specs-from-s3-instead-of-
    git/7856 |  | 
| 61 # Override did contain brew install node |  | 
| 62 # but since 20160909 CircleCI says "Error: node-6.4.0 already installed" |  | 
| 63   cache_directories: |  | 
| 64     - "Carthage" |  | 
| 65     - "Crashlytics" |  | 
| 66     - "../kitt-core/node_modules" # Caching facility can't interpret variables |  | 
| 67 |  | 
| 68 test: |  | 
| 69   override: |  | 
| 70     # The colon at the end means "this command as a key has a value of these set
    tings". |  | 
| 71     # The identation is critical! It's not idented not only to the dash but to t
    he command too. |  | 
| 72     - $HOME/$CIRCLE_PROJECT_REPONAME/deploy/build.sh iphonesimulator $IOS_VERSIO
    N $IOS_SIMULATOR_VERSION : |  | 
| 73         timeout: 1200 |  | 
| 74     # - $HOME/$CIRCLE_PROJECT_REPONAME/e2e_tests.sh |  | 
| 75 deployment: |  | 
| 76   any: |  | 
| 77     branch: /.*/ |  | 
| 78     commands: |  | 
| 79       # Upload to Hockey is inside build.sh. Can't think of a better way which w
    ould not involve |  | 
| 80       # saving the artifact filenames to temporary file or something. Circle run
    s each command in |  | 
| 81       # its own new shell instance so env vars can't be shared. |  | 
| 82       - chruby system && $HOME/$CIRCLE_PROJECT_REPONAME/deploy/build.sh iphoneos
     $IOS_VERSION : |  | 
| 83           timeout: 1200 |  | 
| 84       # The command chaining is silly, but as stated above, "chruby system" live
    s only in |  | 
| 85       # scope of each new shell, so it must be set just before the build script.
     Putting it |  | 
| 86       # inside script would be wrong, as it is Circle specific hack, not Xcode i
    nvocation issue |  | 
| OLD | NEW | 
|---|