iOS Device CI upload

Important: Waldo only supports Simulator builds by default. Real devices are available as part of our BUSINESS plan only. If you would like to upgrade, feel free to reach out to us.

Important: In order to integrate with Waldo, you need to upload a development or ad-hoc 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, build a new IPA for your app. If you use gym (aka build_ios_app) to build
your IPA, waldo will automatically find and upload the generated IPA.

gym(export_method: 'ad-hoc')                            # or 'development'

waldo(upload_token: '0123456789abcdef0123456789abcdef',
      dsym_path: lane_context[SharedValues::DSYM_OUTPUT_PATH])

Note: You must specify the Waldo upload token. The dsym_path
parameter is optional but we highly recommend supplying it.

If you do not use gym to build your IPA, you will need to explicitly
specify the IPA path to waldo:

waldo(upload_token: '0123456789abcdef0123456789abcdef',
      ipa_path: '/path/to/YourApp.ipa',
      dsym_path: '/path/to/YourApp.app.dSYM.zip')

App Center

Waldo integration with App Center requires you only to add a couple of custom build steps.

Add the following to appcenter-post-clone.sh:

WALDO_CLI_BIN=/usr/local/bin
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

Add the following to appcenter-post-build.sh:

WALDO_CLI_BIN=/usr/local/bin

export WALDO_UPLOAD_TOKEN=0123456789abcdef0123456789abcdef

BUILD_PATH=${APPCENTER_OUTPUT_DIRECTORY}/YourApp.ipa
SYMBOLS_PATH=${AGENT_BUILDDIRECTORY}/output/build/archive/YourApp.xcarchive

${WALDO_CLI_BIN}/waldo "$BUILD_PATH" "$SYMBOLS_PATH"

Note: The SYMBOLS_PATH parameter is optional but we highly recommend
supplying it.

Bitrise

Waldo integration with Bitrise requires you only to add a Waldo Upload step to your workflow.

First, create a new IPA for your app. When you use the Xcode Archive & Export for iOS step to build your IPA, output variables are generated that you can then use as input to the Waldo Upload step to find and upload the generated IPA.

workflows:
  primary:
    steps:
    #...
    - xcode-archive:
        inputs:
        - export_method: ad-hoc                 # or development
        - compile_bitcode: 'no'
        - upload_bitcode: 'no'
    - waldo-upload:
        inputs:
        - build_path: $BITRISE_IPA_PATH
        - upload_token: $WALDO_UPLOAD_TOKEN     # from your secrets
        - symbols_path: $BITRISE_DSYM_PATH
    #...

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 symbols_path 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 .ipa and associated .dSYM)
      #...

      - run:
        name: Upload build to Waldo
        command: .circleci/waldo "$WALDO_BUILD_PATH" "$WALDO_SYMBOLS_PATH"
        environment:
          WALDO_UPLOAD_TOKEN: 0123456789abcdef0123456789abcdef
          WALDO_BUILD_PATH: /path/to/YourApp.ipa
          WALDO_SYMBOLS_PATH: /path/to/YourApp.app.dSYM.zip

Note: The WALDO_SYMBOLS_PATH parameter 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 .ipa and associated .dSYM)
      #...

      - name: Upload build to Waldo
        env:
          WALDO_BUILD_PATH: /path/to/YourApp.ipa
          WALDO_CLI_BIN: /usr/local/bin
          WALDO_SYMBOLS_PATH: /path/to/YourApp.app.dSYM.zip
          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" "$WALDO_SYMBOLS_PATH"

Note: The WALDO_SYMBOLS_PATH parameter is optional but we highly
recommend supplying it.

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 IPA with:
  #...
  #...     - xcodebuild [...] -archivePath /path/to/YourApp.xcarchive [...] archive
  #...     - xcodebuild -exportArchive [...] -archivePath /path/to/YourApp.xcarchive -exportPath /path/to/export [...]
  #...
  - BUILD_PATH=/path/to/export/YourApp-release.ipa
  - SYMBOLS_PATH=/path/to/YourApp.xcarchive
  - ${WALDO_CLI_BIN}/waldo "$BUILD_PATH" "$SYMBOLS_PATH"

Note: The SYMBOLS_PATH parameter 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 .ipa and associated .dSYM)
#...

export WALDO_UPLOAD_TOKEN=0123456789abcdef0123456789abcdef

BUILD_PATH=/path/to/YourApp.ipa
SYMBOLS_PATH=/path/to/YourApp.app.dSYM.zip

${WALDO_CLI_BIN}/waldo "$BUILD_PATH" "$SYMBOLS_PATH"

Note: The SYMBOLS_PATH parameter is optional but we highly recommend
supplying it.