package org.jenkinsci.plugins.p4.tasks; import hudson.AbortException; import hudson.FilePath.FileCallable; import hudson.model.Run; import hudson.model.TaskListener; import hudson.remoting.VirtualChannel; import jenkins.security.Roles; import org.jenkinsci.plugins.p4.client.ClientHelper; import org.jenkinsci.remoting.RoleChecker; import org.jenkinsci.remoting.RoleSensitive; import java.io.File; import java.io.IOException; import java.io.Serializable; import java.util.logging.Logger; public class UnshelveTask extends AbstractTask implements FileCallable<Boolean>, Serializable { private static final long serialVersionUID = 1L; private static Logger logger = Logger.getLogger(UnshelveTask.class.getName()); private final String resolve; private final boolean tidy; private long shelf; public UnshelveTask(String credential, Run<?, ?> run, TaskListener listener, String resolve, boolean tidy) { super(credential, run, listener); this.resolve = resolve; this.tidy = tidy; } public void setShelf(long shelf) { this.shelf = shelf; } @Override public Object task(ClientHelper p4) throws Exception { try { // Check connection (might be on remote slave) if (!checkConnection(p4)) { return false; } p4.unshelveFiles(shelf); p4.resolveFiles(resolve); if(tidy) { p4.revertAllFiles(true); } } catch (Exception e) { p4.log("(p4):stop:exception\n"); String err = "Unable to unshelve change: " + e; p4.log(err); logger.warning(err); throw new AbortException(err); } return true; } @Override public Boolean invoke(File workspace, VirtualChannel channel) throws IOException { return (Boolean) tryTask(); } @Override public void checkRoles(RoleChecker checker) throws SecurityException { checker.check((RoleSensitive) this, Roles.SLAVE); } }
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#9 | 29673 | Sandeep Kumar |
Merge pull request #188 from jenkinsci/CodeRefactoring Code Cleanup |
||
#8 | 29321 | Paul Allen |
Merge pull request #165 from skumar7322/UnshelveIssue Unable to unshelve change: java.lang.IllegalStateException: Expected 1 instance of hudson.model.User$AllUsers but got 0 JENKINS-69172 When unshelve task is executed on a slave node, then Jenkins.getInstance() can not be used, hence no user is found while updating the changelog. |
||
#7 | 28891 | Paul Allen |
Merge pull request #149 from skumar7322/JENKINS_38781_UnshelveIssue JENKINS-38781 : p4 unshelve not updating |
||
#6 | 28889 | Paul Allen |
Merge pull request #148 from skumar7322/JENKINS_38781_UnshelveIssue JENKINS-38781 : p4 unshelve not updating |
||
#5 | 27857 | Paul Allen |
Throw AbortException if Task fails. JENKINS-51562 |
||
#4 | 24487 | Paul Allen | Perforce Connection Refactor. | ||
#3 | 22914 | Paul Allen | (minor) Update Unshelve step from int to long. | ||
#2 | 22315 | Paul Allen |
Pending change cleanup for unshelve. Unshelve would leave files open for add/edit/delete, the 'tidy' option will 'revert -k' the files leaving the content in the workspace, but removing the 'have' list data. Unshelve can now specify a Credential and Workspace, important for situations where more than one sync occurs in a pipeline script. JENKINS-43430 |
||
#1 | 16514 | Paul Allen |
Unshelve and resolve build step. Implements a classic Jenkins Build step (i.e. not Workflow). Must provide a shelf change number and resolve options. The shelf change number supports variable expansion ${VAR}. |