-
New Feature
-
Resolution: Unresolved
-
Major
-
None
It would be really useful if the perforce plugin could add support for shelving – Functionality added perforce in version 2009.2.
Here is a good blog writeup --http://blog.perforce.com/blog/?p=1872
Many things hudson is great for is finding out if anyone "broke" the build by polling source repositories looking for commits and kicking off builds. But breaking builds and backing code is a pain sometimes. It would be even better if you could run a build in hudson BEFORE checking in your changelist to see if your changelist WOULD break the build and fix problems before they occur. That is exactly what perforce shelving does – It allows you to shelve your changelist – saving all your modifications to the server (without committing them), and then allowing others to pull down the shelved modified code and perform a build.
I'm not sure if the underlying tek42 perforce client library you use supports shelving, but if so this would be really useful functionality.
Thanks.
Doug
I've implemented a solution to enable a user to test builds using a "shelved" changelist if desired. This isn't a plugin, but rather a process incorporated within the build request form in Jenkins (Parameterized build).
The Shelving process itself involves the following steps:
p4 unshelve -f -s ${SHELVED_CHANGELIST} ${sourceCodePath}
p4 revert -k ${sourceCodePath}
Where:
The -f flag forces the clobbering of any writeable but unopened files that are being unshelved. The -s flag specifies the number of the pending changelist that contains the shelved files.
So, my implementation in Jenkins is as follows:
1) Setup a parameterized build template
2) Add a string parameter to the build template and name it something like: SHELEVED_CHANGELIST
3) In the build section (I execute shell), put the following steps in the beginning of your build steps:
p4 revert ${sourceCodePath}
if [ $SHELVED_CHANGELIST != "" ] ; then ( echo "User specified a shelved changelist, unshelving changelist ($SHELVED_CHANGELIST)";
p4 unshelve -f -s $SHELVED_CHANGELIST ${sourceCodePath};
)
else (
echo "Not running with a shelved changelist"; ); fi
p4 revert -k ${sourceCodePath}
That's it. We've been using this solution successfully for about a year now and developers like it. All you need to do is to educate your developers on how to do shelving and create that changelist