/** * For submitting build, we first call {@link #prepareBeforeSubmitBuild(long)}, then we create the container and add it to the list of submitted. */ public RunnablePipelineContainer submitBuild(String imageId, InputBuildId inputBuildId) { TreatedBuildTracking treatedBuildTracking = this.prepareBeforeSubmitBuild(inputBuildId.getBuggyBuildId()); RunnablePipelineContainer runnablePipelineContainer = new RunnablePipelineContainer(this, imageId, inputBuildId, this.dockerOutputDir, treatedBuildTracking); this.submittedRunnablePipelineContainers.add(runnablePipelineContainer); return runnablePipelineContainer; }
@Override public void removeSubmittedRunnablePipelineContainer(RunnablePipelineContainer pipelineContainer) { LOGGER.info("Build (id: "+pipelineContainer.getInputBuildId().getBuggyBuildId()+") has finished."); super.removeSubmittedRunnablePipelineContainer(pipelineContainer); if (!this.waitingBuilds.isEmpty()) { Build build = this.waitingBuilds.pollFirst(); this.submitBuild(build); } } }
DockerClient docker = this.poolManager.getDockerClient(); try { LOGGER.info("Start to build and run container for build id "+this.inputBuildId.getBuggyBuildId()); LOGGER.info("At most this docker run will be killed at: "+this.limitDateBeforeKilling); LOGGER.info("(BUILD ID " + this.inputBuildId.getBuggyBuildId() + ") Create the container: "+this.containerName); ContainerCreation container = docker.createContainer(containerConfig); LOGGER.info("(BUILD ID " + this.inputBuildId.getBuggyBuildId() + ") Start the container: "+this.containerName); docker.startContainer(container.id()); LOGGER.info("(BUILD ID " + this.inputBuildId.getBuggyBuildId() + ") The container has finished with status code: "+exitStatus.statusCode()); LOGGER.info("(BUILD ID " + this.inputBuildId.getBuggyBuildId() + ") Container will be removed."); docker.removeContainer(this.containerId); this.removeVolumes(docker); LOGGER.error("Error while running the container for build id "+this.inputBuildId.getBuggyBuildId(), e); killDockerContainer(docker, false); } catch (DockerException e) { LOGGER.error("Error while creating or running the container for build id "+this.inputBuildId.getBuggyBuildId(), e); serialize("ERROR");
this.treatedBuildTracking = treatedBuildTracking; this.containerName = "repairnator-pipeline_"+ Utils.formatFilenameDate(new Date())+"_"+this.inputBuildId.getBuggyBuildId()+"_"+this.repairnatorConfig.getRunId(); String output = (this.repairnatorConfig.isCreateOutputDir()) ? "/var/log/"+this.repairnatorConfig.getRunId() : "/var/log"; this.envValues.add("BUILD_ID="+this.inputBuildId.getBuggyBuildId()); if (this.repairnatorConfig.getLauncherMode() == LauncherMode.BEARS) { this.envValues.add("NEXT_BUILD_ID="+this.inputBuildId.getPatchedBuildId());