NUnit 3.2 Support / Deploying from TeamCity

rowinginmotion's Avatar

rowinginmotion

01 Jun, 2016 09:31 AM

We migrated our NUnit suite to 3.2 recently and it appears to me Gallio/AppHarbor can't run those. I know it must be a huge pain for you to maintain the build system, so I was wondering whether there's an easy way to deploy our binary assets from TeamCity to AppHarbor (e.g. can you point me to a script/step?).

We run TeamCity anyway for internal CI anyway, so it would make sense for us to maybe integrate AppHarbor on another level instead of pushing source. Using mercurial/git to push binaries feels a bit wrong to me, but maybe that's just me. What would you recommend?

  1. Support Staff 1 Posted by rune on 02 Jun, 2016 06:04 AM

    rune's Avatar

    Hi,

    I think there are a few customers that have made a custom integration with TeamCity using an intermediate app for integrating AppHarbor's build API and TeamCity web hooks. I don't have code or a script for this, but will try and see if I can find the customers who are doing this and ask if they're willing to share it.

    In any case I think it's a good idea to provide more integration points for third-party and on-premise CI setups. It'd likely also be fairly straightforward as AppHarbor supports prebuilt applications -- if no solution file is found in a source tarball AppHarbor will attempt to deploy the app as-is assuming that the root directory contains a web application (so the web.config should be in this root directory of the artifact archive).

    As far as I can tell these are the steps that are required to integrate AppHarbor with TeamCity:

    1. Deploy an application that responds to a TeamCity Webhook notification (there are a few plugins for that here) and notifies AppHarbor about the build to deploy using the Build API.
    2. Make sure that AppHarbor can fetch the build artifact (for instance by allowing access remotely from the intermediate app, or from AppHarbor's build servers).
    3. Configure TeamCity to invoke the intermediate application's upon a successful build.

    TeamCity already allows you to download a tarball artifact using a REST API.

    Another approach would be to include an AppHarbor.sln file in your repository that doesn't reference the test projects. TeamCity could then push your repository to the AppHarbor repository after a successful build and test execution, which would in turn cause AppHarbor to build and deploy the app (without the excluded tests). The advantage of this solution would be that it doesn't require a publicly accessible service for the tarball, and AppHarbor can produce the build artifact. The later may be an advantage if there are differences between your TC environment and AppHarbor's build/application servers and make sure that an app with unmet dependencies won't be deployed.

    I'll look into whether some code/script already exists for accomplishing this, and how/when we can support such an integration "natively" -- just wanted to share my thoughts on this in case it's useful or you have any feedback!

    Best,
    Rune

Discussions are closed to public comments.
If you need help with AppHarbor please start a new discussion.

Keyboard shortcuts

Generic

? Show this help
ESC Blurs the current field

Comment Form

r Focus the comment reply box
^ + ↩ Submit the comment

You can use Command ⌘ instead of Control ^ on Mac