There are some limitations to using Bamboo with Perforce. Please read the following information carefully before setting up a build plan to use Perforce. |
1. Running Builds on Multiple Remote Agents/Machines
LimitationYou will not be able to run builds on multiple remote agents and/or multiple remote machines using a Perforce repository, without using one of the workarounds described below. If you try to do so, you will run into problems with change detection that could cause your agents to build incorrect code. This problem does not affect the running of builds on multiple local agents. BackgroundPerforce is a client/server SCM (software configuration management) system that manages your changes/files by storing the change information on its server. However, storing change information on the Perforce server can cause problems when you have clients on multiple agents/machines. If you have downloaded a particular change with a Perforce client, the change will be marked as downloaded by the Perforce server. If you use the same Perforce client on another machine, the Perforce server will incorrectly assume that you have already downloaded that particular change and will not download it. Hence, your agents may not pick up changes correctly and could build incorrect code. WorkaroundsThere a few workarounds available for this issue, if you are using Perforce with Bamboo:
Please see the following JIRA issues for further information, BAM-2843 and BAM-2774. |
2. Using Perforce Overlay and Exclusionary Mappings in Bamboo
LimitationYou will not be able to control how Bamboo detects changes using exclusionary mappings or overlay mappings.
BackgroundBamboo currently uses the depot view, not the client view, when detecting changes. Hence, any exclusionary and overlay mappings will not be available during change detection. For example, if a p4 client uses an overlay mapping like this one; //depot/Prj/... //clientName/depot/Prj/... +//depot/Dep/... //clientName/depot/Prj/Dep/... and the 'Depot' specified in a plan's repository configuration is; //clientName/depot/Prj/... then Bamboo will lookup the corresponding depot view and detect changes by running the following command: p4 changes //depot/Prj/... Consequently, no changes to files in Hence, if you set up your build to trigger when code is updated it will not trigger correctly. WorkaroundsA partial workaround is available in Bamboo, if you wish to use exclusionary mappings for your client workspace. Specify your build plan to exclude files that match a specified pattern by choosing 'Exclude all changes that match the following pattern' from the 'Include / Exclude Files' dropdown (under the 'Common repository configuration' section). See this document for further details. Please note, this will only exclude one pattern whereas multiple exclusions can be specified in an exclusionary mapping. Unfortunately, there is no workaround for overlay mappings in Bamboo. Please note, we are aware of these problems and are working to address them — see the following JIRA issue for further information, BAM-3323. |