Here is our setup:
Deploy to a smoke test machine
Run integration tests
Run coded ui tests
I’m good as far as the deployment. However the integration tests and ui tests are slightly different. They need to be run on the smoke test machine. Is there a document to cover this ? Maybe this is a Teamcity question… I see I can kick off Teamcity jobs via the an Octopus process, but then I need a teamcity build agent on my smoke machine and my build then becomes two jobs. Part 1 as far as the deployment and part 2 that does the tests.
I feel this must be a common enough scenario, so I’m either approaching it the wrong way or I’m missing some document to follow.
Just so I fully understand your requirements, let me know if my understanding is wrong. Your desired flow is as follows
- Unit Test
- Deploy to ST
- Run Integration ON ST machine
- Run Coded UI ON ST machine
If this is the case then I think you are on the right track as far as TamCity configuration is concerned. Since you want the last two tests to run on a separate machine from the other steps, then you will need to run a build agent that TC can trigger jobs on. As you alluded to, I would break this up into two jobs in the Project so that you can properly monitor its progress and retry where necessary.
- Build, Unit Test, Package & Deploy. (Using Octopus Deploy TC plugin you can ensure that the job waits until the deployment has succeeded)
- Integration Test, Coded UI Test (targeted to the build agent in the ST environment)
Unless you can run the second part on the same build agent as the first part, then you will indeed need a second build agent.
I hope this helps confirm your suspicions about how the process needs to be configured and you can continue to improve your CI process!
Let me know if you have any further questions around this approach or if it looks like I’ve missed the mark of what you were trying to achieve.