1
1
package org.bonitasoft.gdrive.jenkins
2
2
3
3
import hudson.AbortException
4
+ import hudson.FilePath
5
+ import hudson.FilePath.FileCallable
4
6
import hudson.model.TaskListener
7
+ import hudson.remoting.VirtualChannel
5
8
import org.bonitasoft.gdrive.core.GDriveUploadTask
6
9
import org.bonitasoft.gdrive.core.Logger
7
10
import org.jenkinsci.plugins.workflow.steps.StepContext
8
11
import org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution
12
+ import org.jenkinsci.remoting.RoleChecker
13
+ import java.io.File
14
+ import java.io.Serializable
9
15
10
16
11
17
class GDriveUploadStepExecution (
@@ -18,14 +24,10 @@ class GDriveUploadStepExecution(
18
24
override fun run (): Void ? {
19
25
val logger = context.get(TaskListener ::class .java)?.logger!!
20
26
try {
21
- val gdriveLogger = object : Logger {
22
- override fun debug (message : String ) = logger.println (" DEBUG: $message " )
23
- override fun info (message : String ) = logger.println (" INFO: $message " )
24
- override fun warn (message : String ) = logger.println (" WARN: $message " )
25
- override fun error (message : String ) = logger.println (" ERROR: $message " )
26
- }
27
- val task = GDriveUploadTask (googleCredentials, source, destinationId, gdriveLogger, renameTo)
28
- task.execute()
27
+
28
+ val workspace = context.get(FilePath ::class .java)!!
29
+ val logs = workspace.child(source).act(UploadFile (googleCredentials, destinationId, renameTo))
30
+ logs.forEach { logger.println (it) }
29
31
return null
30
32
} catch (e: Throwable ) {
31
33
e.printStackTrace()
@@ -35,3 +37,33 @@ class GDriveUploadStepExecution(
35
37
36
38
37
39
}
40
+
41
+ class UploadFile (val googleCredentials : String , val destinationId : String , val renameTo : String ) : FileCallable<List<String>>, Serializable {
42
+
43
+ override fun checkRoles (p0 : RoleChecker ? ) = Unit
44
+ override fun invoke (file : File ? , p1 : VirtualChannel ? ): List <String > {
45
+ if (file == null ) {
46
+ return listOf (" File argument is null" )
47
+ }
48
+ val logs = mutableListOf<String >()
49
+ val gdriveLogger = object : Logger {
50
+ override fun debug (message : String ) {
51
+ // logs.add("DEBUG: $message")
52
+ }
53
+
54
+ override fun info (message : String ) {
55
+ logs.add(" INFO: $message " )
56
+ }
57
+
58
+ override fun warn (message : String ) {
59
+ logs.add(" WARN: $message " )
60
+ }
61
+
62
+ override fun error (message : String ) {
63
+ logs.add(" ERROR: $message " )
64
+ }
65
+ }
66
+ GDriveUploadTask (googleCredentials, file.absolutePath, destinationId, gdriveLogger, renameTo).execute()
67
+ return logs
68
+ }
69
+ }
0 commit comments