How to execute a build after all tests in different iOS devices have successfully ran?


I'm evaluating TeamCity to be the CI server for my company's iOS project and I'm stuck
with one configuration. Currently I have the following Build Configurations for one project:

  • Project
    • Build (this does a xcodebuild clean build)
    • OCLint (this runs a static code analyzer and is not dependent of the build)
    • Run Tests on Device 1
    • Run Tests on Device 2
    • Run Tests on Device n

All the Run Tests builds have a snapshot dependency on the build and their job is to execute
`xcodebuild test` within one specific device.

What I want to do is to execute a new Build Configuration only if all the Run Tests have
succeed. I could put a Build Trigger link one tests after another but that is not a good
solution since I want to see in which device something is failing or not without depending
on other devices having a successfull test.

So in the end I need something like this:

  1. Build
    • Run Tests on Device 1
    • Run Tests on Devie 2
    • Run Tests on Device n
    • All other devices that we might have and all in parallalel
  2. Archive the Project only if the tests in all devices succeed

Is it possible to do? Could you give me some guindance on how to achieve this?

Comment actions Permalink

So, I manage to setup Snapshot Dependencies between the build configurations
and they show as I expect them to show in the Build Chains page. But the dependent
builds are not been triggered automatically by the first Build. See attached image:

Screen Shot 2014-01-27 at 4.37.51 PM.png

Why they are not automatically triggered?

Comment actions Permalink

Oh! I've found it. I need to Run the last Build Configuration on the dependecy tree so that it can pull its dependencies into the queue. The dependencies are not pushed by the 0. Build build configuration.


Please sign in to leave a comment.