■ ■ ■ ■ ■ ■
src/main/java/io/onedev/agent/DockerExecutorUtils.java
1 | 1 | | package io.onedev.agent; |
2 | 2 | | |
3 | 3 | | import static io.onedev.k8shelper.KubernetesHelper.BEARER; |
| 4 | + | import static io.onedev.k8shelper.KubernetesHelper.checkCacheAllocations; |
4 | 5 | | import static io.onedev.k8shelper.KubernetesHelper.checkStatus; |
5 | 6 | | import static io.onedev.k8shelper.KubernetesHelper.cloneRepository; |
6 | 7 | | import static io.onedev.k8shelper.KubernetesHelper.getCacheInstances; |
7 | 8 | | import static io.onedev.k8shelper.KubernetesHelper.installGitCert; |
8 | | - | import static io.onedev.k8shelper.KubernetesHelper.checkCacheAllocations; |
9 | 9 | | import static io.onedev.k8shelper.KubernetesHelper.replacePlaceholders; |
10 | 10 | | import static io.onedev.k8shelper.KubernetesHelper.stringifyPosition; |
11 | 11 | | import static java.nio.charset.StandardCharsets.UTF_8; |
| skipped 35 lines |
47 | 47 | | import com.google.common.base.Throwables; |
48 | 48 | | |
49 | 49 | | import io.onedev.agent.job.DockerJobData; |
| 50 | + | import io.onedev.agent.job.FailedException; |
50 | 51 | | import io.onedev.agent.job.TestDockerJobData; |
51 | 52 | | import io.onedev.commons.bootstrap.Bootstrap; |
52 | 53 | | import io.onedev.commons.utils.ExceptionUtils; |
| skipped 130 lines |
183 | 184 | | String messageData = jobData.getJobToken() + ":" + containerWorkspace; |
184 | 185 | | new Message(MessageType.REPORT_JOB_WORKSPACE, messageData).sendBy(session); |
185 | 186 | | |
186 | | - | List<String> errorMessages = new ArrayList<>(); |
187 | | - | |
188 | 187 | | CompositeExecutable entryExecutable = new CompositeExecutable(jobData.getActions()); |
189 | 188 | | |
190 | | - | entryExecutable.execute(new LeafHandler() { |
| 189 | + | boolean successful = entryExecutable.execute(new LeafHandler() { |
191 | 190 | | |
192 | 191 | | @Override |
193 | 192 | | public boolean execute(LeafExecutable executable, List<Integer> position) { |
194 | 193 | | String stepNames = entryExecutable.getNamesAsString(position); |
195 | | - | jobLogger.log("Running step \"" + stepNames + "\"..."); |
| 194 | + | jobLogger.notice("Running step \"" + stepNames + "\"..."); |
196 | 195 | | |
197 | 196 | | if (executable instanceof CommandExecutable) { |
198 | 197 | | CommandExecutable commandExecutable = (CommandExecutable) executable; |
| skipped 69 lines |
268 | 267 | | ExecutionResult result = docker.execute(newInfoLogger(jobLogger), newErrorLogger(jobLogger), null, |
269 | 268 | | newDockerKiller(new Commandline(Agent.dockerPath), containerName, jobLogger)); |
270 | 269 | | if (result.getReturnCode() != 0) { |
271 | | - | errorMessages.add("Step \"" + stepNames + "\": Command failed with exit code " + result.getReturnCode()); |
| 270 | + | jobLogger.error("Step \"" + stepNames + "\" is failed: Command failed with exit code " + result.getReturnCode()); |
272 | 271 | | return false; |
273 | | - | } else { |
274 | | - | return true; |
275 | 272 | | } |
276 | 273 | | } else if (executable instanceof CheckoutExecutable) { |
277 | 274 | | try { |
| skipped 22 lines |
300 | 297 | | String commitHash = jobData.getCommitHash(); |
301 | 298 | | cloneRepository(git, cloneUrl, cloneUrl, commitHash, cloneDepth, |
302 | 299 | | newInfoLogger(jobLogger), newErrorLogger(jobLogger)); |
303 | | - | |
304 | | - | return true; |
305 | 300 | | } catch (Exception e) { |
306 | | - | errorMessages.add("Step \"" + stepNames + "\" is failed: " + getErrorMessage(e)); |
| 301 | + | jobLogger.error("Step \"" + stepNames + "\" is failed: " + getErrorMessage(e)); |
307 | 302 | | return false; |
308 | 303 | | } |
309 | 304 | | } else { |
| skipped 3 lines |
313 | 308 | | KubernetesHelper.runServerStep(Agent.serverUrl, jobData.getJobToken(), position, |
314 | 309 | | serverExecutable.getIncludeFiles(), serverExecutable.getExcludeFiles(), |
315 | 310 | | serverExecutable.getPlaceholders(), hostBuildHome, hostWorkspace, jobLogger); |
316 | | - | return true; |
317 | 311 | | } catch (Exception e) { |
318 | | - | errorMessages.add("Step \"" + stepNames + "\" is failed: " + getErrorMessage(e)); |
| 312 | + | jobLogger.error("Step \"" + stepNames + "\" is failed: " + getErrorMessage(e)); |
319 | 313 | | return false; |
320 | 314 | | } |
321 | 315 | | } |
| 316 | + | jobLogger.success("Step \"" + stepNames + "\" is successful"); |
| 317 | + | return true; |
322 | 318 | | } |
323 | 319 | | |
324 | 320 | | @Override |
325 | 321 | | public void skip(LeafExecutable executable, List<Integer> position) { |
326 | | - | jobLogger.log("Skipping step \"" + entryExecutable.getNamesAsString(position) + "\"..."); |
| 322 | + | jobLogger.notice("Step \"" + entryExecutable.getNamesAsString(position) + "\" is skipped"); |
327 | 323 | | } |
328 | 324 | | |
329 | 325 | | }, new ArrayList<>()); |
330 | 326 | | |
331 | | - | if (!errorMessages.isEmpty()) |
332 | | - | throw new ExplicitException(errorMessages.iterator().next()); |
| 327 | + | if (!successful) |
| 328 | + | throw new FailedException(); |
333 | 329 | | |
334 | 330 | | jobLogger.log("Reporting job caches..."); |
335 | 331 | | |
| skipped 520 lines |