Accurev/Perforce on the same configuration

Hi,

We have recently migrated to teamcity but we now have an issue with using multiple VCS on teamcity configurations.

Our project is setup so that the code is stored in AccuRev while the assets are stored on Perforce. Currently we use teamcity just to run code builds/tests using a customised version of the accurev plugin that allows client side checkout. We now need to also perform asset checkouts from Perforce but in a slightly customised fashion. What we would need is for the Perforce plugin to only trigger builds but to not perform the checkout. This is because the logic behind the checkout is slightly more complex and is currently managed by a python script.

In teamcity the option to select whether/where to do the checkout is configuration-based and cannot be specified for each VCS so i can't tell the Accurev plugin to checkout on the client side and tell the Perforce plugin to skip the checkout.

The solution that seems most obvious is to customize the perforce plugin so that it never performs checkout. However I was not able to find the source for it here http://confluence.jetbrains.net/display/TW/TeamCity+Plugins. Is it available somewhere else? Is it available a all? Can someone see a better solution to our problem?

Thank you,
Simone

3 comments

Simone,

There is no ability to specify checkout mode per VCS root: please vote for TW-14796 on that.

Perforce VCS support is not open-source, so there is no access to the source code.

I'd consider a workaround approach of adding a "fake" build configuration with the Perforce VCS root and "do not checkout" mode and nothing in the build script. Then, either add a finished build (formerly dependency build) trigger to run your build upon the fake one runs, or add snapshot dependency between the builds and use "Trigger on changes in snapshot dependencies" in the VCS trigger of your main configuration (I assume your are on TeamCity 5.1+).
Not an elegant one and requires one "extra" build configuraiton, but should trigger the build on changes.

0

Hi Yegor,

Thanks for you answers. Yes we currently are on Teamcity 5.1 and will moving to 6 shortly. We had thought of a solution similar to the one you described but the problem is we have a dozen of configurations that need this mechanism and it would not be practical to add a second configuration for each one.

Since most of the logic in triggering (and syncing) from Perforce was implemented in Python scripts in our pre-Teamcity implementation the solution we are going for is to write a small Teamcity trigger that runs a python script to decide whether to run the build or not. We are probably going to do more work on it in the future but for now this seems a quick and flexible solution.

Thank you,
Simone Kulczycki

0

Simone,

You can probably conthider Jyton to wrap the python scripts into TeamCity plugin (just a thought, so far I do not know any tries like that).

Please let us know when you will implement the approach - you can also condier making this open-source plugin so that other TeamCity users can benfit from it.
0

Please sign in to leave a comment.