I have a very similar setup in TeamCity, except that I use MSBuild, not NAnt, but I use the same two-step process, and if I explain how I set it up, I hope this will let you know what you need to do.
So, in my setup, Build 1 pulls the code from the source control, compiles it, and runs unit tests. He then publishes all the files necessary for deployment as artifacts.
In assembly 2, there is a snapshot and dependencies of the artifact on assembly 1, which means that it does not pull the code, it just takes artifacts from assembly 1 and deploys them.
In practice, this means that I can run Build 2, and one of two things will happen. If Build 1 is updated, it simply deploys artifacts from the last successful Build 1 build. However, if Build 1 is not updated, TeamCity automatically launches Build 1, and then starts Build 2 immediately after using the artifacts to build from.
Paul hunt
source share