• ■ ■ ■ ■ ■ ■
    pom.xml
    skipped 9 lines
    10 10   <version>1.0.5</version>
    11 11   </parent>
    12 12   <artifactId>agent</artifactId>
    13  - <version>1.0.7</version>
     13 + <version>1.0.8</version>
    14 14   <build>
    15 15   <plugins>
    16 16   <plugin>
    skipped 128 lines
    145 145   </dependency>
    146 146   </dependencies>
    147 147   <properties>
    148  - <k8shelper.version>2.1.9</k8shelper.version>
     148 + <k8shelper.version>2.1.10</k8shelper.version>
    149 149   <jackson.version>2.12.1</jackson.version>
    150 150   <jersey.version>2.26</jersey.version>
    151 151   <bootstrap>true</bootstrap>
    skipped 4 lines
  • ■ ■ ■ ■ ■ ■
    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
  • ■ ■ ■ ■ ■ ■
    src/main/java/io/onedev/agent/ShellExecutorUtils.java
    skipped 36 lines
    37 37   
    38 38  import com.google.common.base.Throwables;
    39 39   
     40 +import io.onedev.agent.job.FailedException;
    40 41  import io.onedev.agent.job.ShellJobData;
    41 42  import io.onedev.agent.job.TestShellJobData;
    42 43  import io.onedev.commons.utils.ExceptionUtils;
    skipped 104 lines
    147 148  
    148 149   CompositeExecutable entryExecutable = new CompositeExecutable(jobData.getActions());
    149 150  
    150  - List<String> errorMessages = new ArrayList<>();
    151  -
    152  - entryExecutable.execute(new LeafHandler() {
     151 + boolean successful = entryExecutable.execute(new LeafHandler() {
    153 152   
    154 153   @Override
    155 154   public boolean execute(LeafExecutable executable, List<Integer> position) {
    156 155   String stepNames = entryExecutable.getNamesAsString(position);
    157  - jobLogger.log("Running step \"" + stepNames + "\"...");
     156 + jobLogger.notice("Running step \"" + stepNames + "\"...");
    158 157  
    159 158   if (executable instanceof CommandExecutable) {
    160 159   CommandExecutable commandExecutable = (CommandExecutable) executable;
    skipped 42 lines
    203 202  
    204 203   ExecutionResult result = shell.execute(newInfoLogger(jobLogger), newErrorLogger(jobLogger));
    205 204   if (result.getReturnCode() != 0) {
    206  - errorMessages.add("Step \"" + stepNames + "\": Command failed with exit code " + result.getReturnCode());
     205 + jobLogger.error("Step \"" + stepNames + "\" is failed: Command failed with exit code " + result.getReturnCode());
    207 206   return false;
    208  - } else {
    209  - return true;
    210 207   }
    211 208   } else if (executable instanceof CheckoutExecutable) {
    212 209   try {
    skipped 18 lines
    231 228   cloneRepository(git, cloneInfo.getCloneUrl(), cloneInfo.getCloneUrl(),
    232 229   jobData.getCommitHash(), cloneDepth, newInfoLogger(jobLogger),
    233 230   newErrorLogger(jobLogger));
    234  -
    235  - return true;
    236 231   } catch (Exception e) {
    237  - errorMessages.add("Step \"" + stepNames + "\" is failed: " + getErrorMessage(e));
     232 + jobLogger.error("Step \"" + stepNames + "\" is failed: " + getErrorMessage(e));
    238 233   return false;
    239 234   }
    240 235   } else {
    skipped 3 lines
    244 239   KubernetesHelper.runServerStep(Agent.serverUrl, jobData.getJobToken(), position,
    245 240   serverExecutable.getIncludeFiles(), serverExecutable.getExcludeFiles(),
    246 241   serverExecutable.getPlaceholders(), buildDir, workspaceDir, jobLogger);
    247  - return true;
    248 242   } catch (Exception e) {
    249  - errorMessages.add("Step \"" + stepNames + "\" is failed: " + getErrorMessage(e));
     243 + jobLogger.error("Step \"" + stepNames + "\" is failed: " + getErrorMessage(e));
    250 244   return false;
    251 245   }
    252 246   }
     247 + jobLogger.success("Step \"" + stepNames + "\" is successful");
     248 + return true;
    253 249   }
    254 250   
    255 251   @Override
    256 252   public void skip(LeafExecutable executable, List<Integer> position) {
    257  - jobLogger.log("Skipping step \"" + entryExecutable.getNamesAsString(position) + "\"...");
     253 + jobLogger.notice("Step \"" + entryExecutable.getNamesAsString(position) + "\" is skipped");
    258 254   }
    259 255  
    260 256   }, new ArrayList<>());
    261 257   
    262  - if (!errorMessages.isEmpty())
    263  - throw new ExplicitException(errorMessages.iterator().next());
     258 + if (!successful)
     259 + throw new FailedException();
    264 260  
    265 261   jobLogger.log("Reporting job caches...");
    266 262  
    skipped 133 lines
  • ■ ■ ■ ■ ■ ■
    src/main/java/io/onedev/agent/job/FailedException.java
     1 +package io.onedev.agent.job;
     2 + 
     3 +public class FailedException extends RuntimeException {
     4 + 
     5 + private static final long serialVersionUID = 1L;
     6 + 
     7 +}
     8 + 
Please wait...
Page is in error, reload to recover