diff --git a/src/main/java/org/inurl/jenkins/plugin/OSSPublisher.java b/src/main/java/org/inurl/jenkins/plugin/OSSPublisher.java index 71b5740f3504baf7bd104598fe3ec49ba8f936e7..f505032b84a6671a7c929408a353eac7b6f2d0df 100644 --- a/src/main/java/org/inurl/jenkins/plugin/OSSPublisher.java +++ b/src/main/java/org/inurl/jenkins/plugin/OSSPublisher.java @@ -71,7 +71,7 @@ public class OSSPublisher extends Publisher implements SimpleBuildStep { @DataBoundConstructor public OSSPublisher(String endpoint, String accessKeyId, String accessKeySecret, String bucketName, - String localPath, String remotePath, String maxRetries) { + String localPath, String remotePath, String maxRetries) { this.endpoint = endpoint; this.accessKeyId = accessKeyId; this.accessKeySecret = Secret.fromString(accessKeySecret); @@ -88,32 +88,36 @@ public class OSSPublisher extends Publisher implements SimpleBuildStep { @Override public void perform(@Nonnull Run run, @Nonnull FilePath workspace, @Nonnull Launcher launcher, - @Nonnull TaskListener listener) throws InterruptedException, IOException { + @Nonnull TaskListener listener) throws InterruptedException, IOException { PrintStream logger = listener.getLogger(); - EnvVars envVars = run.getEnvironment(listener); + EnvVars envVars = run.getEnvironment(listener); OSSClient client = new OSSClient(endpoint, accessKeyId, accessKeySecret.getPlainText()); + String local = localPath.substring(1); - String remote = remotePath.substring(1); - String expandLocal = envVars.expand(local); - String expandRemote = envVars.expand(remote); - logger.println("expandLocalPath =>" + expandLocal); - logger.println("expandRemotePath =>" + expandRemote); - FilePath p = new FilePath(workspace, expandLocal); - if (p.isDirectory()) { - logger.println("upload dir => " + p); - upload(client, logger, expandRemote, p, true); - logger.println("upload dir success"); - } else { - logger.println("upload file => " + p); - uploadFile(client, logger, expandRemote, p); - logger.println("upload file success"); + String[] remotes = remotePath.split(","); + for (String remote : remotes) { + remote = remote.substring(1); + String expandLocal = envVars.expand(local); + String expandRemote = envVars.expand(remote); + logger.println("expandLocalPath =>" + expandLocal); + logger.println("expandRemotePath =>" + expandRemote); + FilePath p = new FilePath(workspace, expandLocal); + if (p.isDirectory()) { + logger.println("upload dir => " + p); + upload(client, logger, expandRemote, p, true); + logger.println("upload dir success"); + } else { + logger.println("upload file => " + p); + uploadFile(client, logger, expandRemote, p); + logger.println("upload file success"); + } } - + } private void upload(OSSClient client, PrintStream logger, String base, FilePath path, boolean root) - throws InterruptedException, IOException { + throws InterruptedException, IOException { if (path.isDirectory()) { for (FilePath f : path.list()) { upload(client, logger, base + (root ? "" : ("/" + path.getName())), f, false); @@ -124,7 +128,7 @@ public class OSSPublisher extends Publisher implements SimpleBuildStep { } private void uploadFile(OSSClient client, PrintStream logger, String key, FilePath path) - throws InterruptedException, IOException { + throws InterruptedException, IOException { if (!path.exists()) { logger.println("file [" + path.getRemote() + "] not exists, skipped"); return; @@ -146,7 +150,7 @@ public class OSSPublisher extends Publisher implements SimpleBuildStep { } private void uploadFile0(OSSClient client, PrintStream logger, String key, FilePath path) - throws InterruptedException, IOException { + throws InterruptedException, IOException { String realKey = key; if (realKey.startsWith("/")) { realKey = realKey.substring(1); diff --git a/src/main/resources/org/inurl/jenkins/plugin/OSSPublisher/help-remotePath.html b/src/main/resources/org/inurl/jenkins/plugin/OSSPublisher/help-remotePath.html index ee7e6015b394795684a22cc0568a770af53169e5..826f5790baf6261855eea1a4bb22e8534a3d58fa 100644 --- a/src/main/resources/org/inurl/jenkins/plugin/OSSPublisher/help-remotePath.html +++ b/src/main/resources/org/inurl/jenkins/plugin/OSSPublisher/help-remotePath.html @@ -1,3 +1,4 @@
- Remote file or directory, must begin with `/` + Remote file or directory, must begin with `/`, + one local with multiple remotes distination require,pass "," for each remote path
\ No newline at end of file diff --git a/src/main/resources/org/inurl/jenkins/plugin/OSSPublisher/help-remotePath_zh.html b/src/main/resources/org/inurl/jenkins/plugin/OSSPublisher/help-remotePath_zh.html index f307115e4560b8fac0c65cea91b815df86c69052..cb34c25d51142341fd202c032715aa534349210a 100644 --- a/src/main/resources/org/inurl/jenkins/plugin/OSSPublisher/help-remotePath_zh.html +++ b/src/main/resources/org/inurl/jenkins/plugin/OSSPublisher/help-remotePath_zh.html @@ -1,3 +1,4 @@
远程路径,必须以`/`开头 + 如果有本地单文件(目录),远程多文件(目录)需求,请使用","进行远程路径分隔.
\ No newline at end of file