iOS Simulator CI upload

Important: In order to integrate with Waldo, you must upload a simulator build of your app.

Note: along with uploading your app, Waldo CLI also allows you to supply the path of the dSYM(s) > for your app. While this is optional, we highly recommend it. With this additional information we will be able to automatically symbolicate any crash reports that might be generated from your app.

Fastlane

Waldo integration with Fastlane requires you only to add the Waldo plugin to your project:

$ fastlane add_plugin waldo

Next, create a new simulator build for your app.

You can use gym (aka build_ios_app) to build your app provided that you supply several parameters in order to convince Xcode to both build for the simulator and not attempt to generate an IPA:

gym(configuration: 'Release',
    derived_data_path: '/path/to/derivedData',
    skip_package_ipa: true,
    skip_archive: true,
    destination: 'generic/platform=iOS Simulator')

You can then find your app (and associated symbols) relative to the derived data path:

app_path = File.join(derived_data_path,
                     'Build',
                     'Products',
                     'ReleaseSim-iphonesimulator',
                     'YourApp.app')

Regardless of how you create the actual simulator build for your app, the upload itself is very simple:

waldo(upload_token: '0123456789abcdef0123456789abcdef',
      app_path: '/path/to/YourApp.app',
      include_symbols: true)

Note: You must specify both the Waldo upload token and the path of the .app. The include_symbols parameter is optional but we highly recommend supplying it.

App Center

Not supported by the CI.

See here for a usable workaround.

Bitrise

Waldo integration with Bitrise requires you only to add a [Waldo Upload (https://app.bitrise.io/integrations/steps/waldo-upload) step to your workflow.

First, create a new simulator build for your app. When you use the [Xcode build for simulator (https://app.bitrise.io/integrations/steps/xcode-build-for-simulator) step to build your app, output variables are generated that you can then use as input to the Waldo Upload step to find and upload the generated app.

workflows:
  primary:
    steps:
    #...
    - xcode-build-for-simulator:
        inputs:
        - xcodebuild_options: CODE_SIGNING_ALLOWED=YES
    - waldo-upload:
        inputs:
        - build_path: $BITRISE_APP_DIR_PATH
        - upload_token: $WALDO_UPLOAD_TOKEN     # from your secrets
        - find_symbols: 'yes'
    #...

Note 1: The value you supply to the upload_token input should be specified as a “secret” environment variable by going to the Secrets tab in the Bitrise Workflow Editor and assigning your upload token to WALDO_UPLOAD_TOKEN.

Note 2: The find_symbols input is optional but we highly recommend supplying it.

CircleCI

Waldo integration with CircleCI requires you only to add a couple of steps to your configuration:

jobs:
  build:
    steps:
      - run:
        name: Download Waldo CLI
        command: |
          curl -fLs ${WALDO_CLI_URL}/waldo > .circleci/waldo
          chmod +x .circleci/waldo
        environment:
          WALDO_CLI_URL: https://github.com/waldoapp/waldo-cli/releases/download/1.6.6

      #...
      #... (generate .app and associated .dSYM)
      #...

      - run:
        name: Upload build to Waldo
        command: .circleci/waldo "$WALDO_BUILD_PATH" --include-symbols
        environment:
          WALDO_UPLOAD_TOKEN: 0123456789abcdef0123456789abcdef
          WALDO_BUILD_PATH: /path/to/YourApp.app

Note: The --include-symbols option is optional but we highly recommend supplying it.

GitHub Actions

Waldo integration with GitHub Actions requires you only to add an extra step to your workflow:

jobs:
  build:
    steps:
      #...
      #... (generate .app and associated .dSYM)
      #...

      - name: Upload build to Waldo
        env:
          WALDO_BUILD_PATH: /path/to/YourApp.app
          WALDO_CLI_BIN: /usr/local/bin
          WALDO_UPLOAD_TOKEN: 0123456789abcdef0123456789abcdef
        run: |
          if [ ! -e ${WALDO_CLI_BIN}/waldo ]; then
            curl -fLs https://github.com/waldoapp/waldo-cli/releases/download/1.6.6/waldo > ${WALDO_CLI_BIN}/waldo
            chmod +x ${WALDO_CLI_BIN}/waldo
          fi

          ${WALDO_CLI_BIN}/waldo "$WALDO_BUILD_PATH" --include_symbols

Note: The --include-symbols option is optional but we highly recommend supplying it.

Important: If you use the Checkout V2 action in your workflow, you must set fetch-depth: 0. Otherwise, Waldo CLI will not be able to correctly identify the git commit and branch associated with your build.

Travis CI

Waldo integration with Travis CI requires you only to add a few steps to your .travis.yml:

env:
  global:
    - WALDO_CLI_BIN=/usr/local/bin
    - WALDO_CLI_URL=https://github.com/waldoapp/waldo-cli/releases/download/1.6.6
    - WALDO_UPLOAD_TOKEN=0123456789abcdef0123456789abcdef
install:
  - curl -fLs ${WALDO_CLI_URL}/waldo > ${WALDO_CLI_BIN}/waldo
  - chmod +x ${WALDO_CLI_BIN}/waldo
script:
  #...
  #... Build your app for simulator with:
  #...
  #...     - xcodebuild [...] -derivedDataPath "$TRAVIS_BUILD_DIR" [...] build
  #...
  - BUILD_PATH="$TRAVIS_BUILD_DIR"/Build/Products/Release-iphonesimulator/YourApp.app
  - ${WALDO_CLI_BIN}/waldo "$BUILD_PATH" --include-symbols

Note: The --include-symbols option is optional but we highly recommend supplying it.

Custom upload

If you are building outside of CI/CD or in another CI provider, you can also upload your iOS build manually using Waldo CLI.

WALDO_CLI_BIN=/usr/local/bin

if [ ! -e ${WALDO_CLI_BIN}/waldo ]; then
  WALDO_CLI_URL=https://github.com/waldoapp/waldo-cli/releases/download/1.6.6
  curl -fLs ${WALDO_CLI_URL}/waldo > ${WALDO_CLI_BIN}/waldo
  chmod +x ${WALDO_CLI_BIN}/waldo
fi

#...
#... (generate .app and associated .dSYM)
#...

export WALDO_UPLOAD_TOKEN=0123456789abcdef0123456789abcdef

BUILD_PATH=/path/to/YourApp.app

${WALDO_CLI_BIN}/waldo "$BUILD_PATH" --include-symbols

Note: The --include-symbols option is optional but we highly recommend supplying it.