2
2
3
3
import com .offbytwo .jenkins .JenkinsServer ;
4
4
import com .redhat .digkins .model .BuildStatus ;
5
- import com .redhat .digkins .services .CreateJobService ;
5
+ import com .redhat .digkins .services .ArtifactsService ;
6
+ import com .redhat .digkins .services .JobService ;
6
7
import com .redhat .digkins .services .TriggerBuildService ;
7
8
import com .redhat .digkins .util .DiggerClientException ;
8
9
import com .redhat .digkins .util .JenkinsAuth ;
9
10
import org .slf4j .Logger ;
10
11
import org .slf4j .LoggerFactory ;
11
12
13
+ import java .io .File ;
12
14
import java .io .IOException ;
15
+ import java .io .InputStream ;
13
16
import java .net .URI ;
14
17
import java .net .URISyntaxException ;
15
18
@@ -24,8 +27,9 @@ public class DiggerClient {
24
27
25
28
private JenkinsServer jenkinsServer ;
26
29
27
- private CreateJobService createJobService ;
30
+ private JobService jobService ;
28
31
private TriggerBuildService triggerBuildService ;
32
+ private ArtifactsService artifactsService ;
29
33
30
34
private DiggerClient () {
31
35
}
@@ -42,29 +46,33 @@ private DiggerClient() {
42
46
* @throws DiggerClientException if something goes wrong
43
47
*/
44
48
public static DiggerClient createDefaultWithAuth (String url , String user , String password ) throws DiggerClientException {
49
+ TriggerBuildService triggerBuildService = new TriggerBuildService (TriggerBuildService .DEFAULT_FIRST_CHECK_DELAY , TriggerBuildService .DEFAULT_POLL_PERIOD );
50
+ JobService jobService = new JobService ();
51
+ ArtifactsService artifactsService = new ArtifactsService ();
45
52
return DiggerClient .builder ()
46
- .createJobService (new CreateJobService ())
47
- .triggerBuildService (new TriggerBuildService (TriggerBuildService .DEFAULT_FIRST_CHECK_DELAY , TriggerBuildService .DEFAULT_POLL_PERIOD ))
53
+ .createJobService (jobService )
54
+ .triggerBuildService (triggerBuildService )
55
+ .artifactsService (artifactsService )
48
56
.withAuth (url , user , password )
49
57
.build ();
50
58
}
51
59
52
60
public static DiggerClientBuilder builder () {
53
61
return new DiggerClientBuilder ();
54
62
}
55
-
56
63
public static class DiggerClientBuilder {
57
64
private JenkinsAuth auth ;
58
- private CreateJobService createJobService ;
65
+ private JobService jobService ;
59
66
private TriggerBuildService triggerBuildService ;
67
+ private ArtifactsService artifactsService ;
60
68
61
69
public DiggerClientBuilder withAuth (String url , String user , String password ) {
62
70
this .auth = new JenkinsAuth (url , user , password );
63
71
return this ;
64
72
}
65
73
66
- public DiggerClientBuilder createJobService (CreateJobService createJobService ) {
67
- this .createJobService = createJobService ;
74
+ public DiggerClientBuilder createJobService (JobService jobService ) {
75
+ this .jobService = jobService ;
68
76
return this ;
69
77
}
70
78
@@ -73,12 +81,18 @@ public DiggerClientBuilder triggerBuildService(TriggerBuildService triggerBuildS
73
81
return this ;
74
82
}
75
83
84
+ public DiggerClientBuilder artifactsService (ArtifactsService artifactsService ) {
85
+ this .artifactsService = artifactsService ;
86
+ return this ;
87
+ }
88
+
76
89
public DiggerClient build () throws DiggerClientException {
77
90
final DiggerClient client = new DiggerClient ();
78
91
try {
79
92
client .jenkinsServer = new JenkinsServer (new URI (auth .getUrl ()), auth .getUser (), auth .getPassword ());
80
- client .createJobService = this .createJobService ;
93
+ client .jobService = this .jobService ;
81
94
client .triggerBuildService = this .triggerBuildService ;
95
+ client .artifactsService = this .artifactsService ;
82
96
return client ;
83
97
} catch (URISyntaxException e ) {
84
98
throw new DiggerClientException ("Invalid jenkins url format." );
@@ -97,7 +111,7 @@ public DiggerClient build() throws DiggerClientException {
97
111
*/
98
112
public void createJob (String name , String gitRepo , String gitBranch ) throws DiggerClientException {
99
113
try {
100
- createJobService .create (this .jenkinsServer , name , gitRepo , gitBranch );
114
+ jobService .create (this .jenkinsServer , name , gitRepo , gitBranch );
101
115
} catch (Throwable e ) {
102
116
throw new DiggerClientException (e );
103
117
}
@@ -160,9 +174,25 @@ public BuildStatus build(String jobName) throws DiggerClientException {
160
174
* @param buildNumber job build number
161
175
* @param artifactName - name of the artifact to fetch - can be regexp
162
176
* @return InputStream with file contents
177
+ * @throws DiggerClientException - when problem with fetching artifacts from jenkins
178
+ */
179
+ public InputStream fetchArtifact (String jobName , int buildNumber , String artifactName ) throws DiggerClientException {
180
+ return artifactsService .streamArtifact (jenkinsServer ,jobName , buildNumber , artifactName );
181
+ }
182
+
183
+ /**
184
+ * Save artifact for specified location for specific job, build number and artifact name.
185
+ * If name would be an regular expression method would return stream for the first match.
186
+ *
187
+ * @param jobName name of the job
188
+ * @param buildNumber job build number
189
+ * @param artifactName name of the artifact to fetch - can be regexp for example *.apk
190
+ * @param outputFile file (location) used to save artifact
191
+ *
192
+ * @throws DiggerClientException when problem with fetching artifacts from jenkins
193
+ * @throws IOException when one of the files cannot be saved
163
194
*/
164
- public InputStream fetchArtifact (String jobName , long buildNumber , String artifactName ) {
165
- ArtifactsService artifactsService = new ArtifactsService (jenkins );
166
- return artifactsService .fetchArtifact (jobName ,buildNumber ,artifactName );
195
+ public void saveArtifact (String jobName , int buildNumber , String artifactName , File outputFile ) throws DiggerClientException , IOException {
196
+ artifactsService .saveArtifact (jenkinsServer ,jobName , buildNumber , artifactName ,outputFile );
167
197
}
168
198
}
0 commit comments