use of org.jboss.pnc.dto.Build in project pnc by project-ncl.
the class BuildProviderImpl method getSpecific.
@Override
public Build getSpecific(String buildId) {
List<BuildTask> runningBuilds = buildCoordinator.getSubmittedBuildTasks();
Build build = runningBuilds.stream().filter(buildTask -> buildId.equals(buildTask.getId())).findAny().map(buildMapper::fromBuildTask).orElse(null);
// if build not in runningBuilds, check the database
if (build == null) {
// use findByIdFetchProperties instead of super.getSpecific to get 'BuildConfigurationAudited' object
build = mapper.toDTO(buildRecordRepository.findByIdFetchProperties(parseId(buildId)));
}
return build;
}
use of org.jboss.pnc.dto.Build in project pnc by project-ncl.
the class BuildConfigurationProviderImpl method createWithScm.
@Override
public BuildConfigCreationResponse createWithScm(BuildConfigWithSCMRequest request) {
ValidationBuilder.validateObject(request, WhenCreatingNew.class).validateNotEmptyArgument().validateAnnotations();
BuildConfiguration buildConfiguration = request.getBuildConfig();
validateBeforeSaving(buildConfiguration.toBuilder().scmRepository(FAKE_REPOSITORY).build());
Long buildConfigurationId = sequenceHandlerRepository.getNextID(org.jboss.pnc.model.BuildConfiguration.SEQUENCE_NAME);
MDCUtils.addProcessContext(buildConfigurationId.toString());
BuildConfiguration newBuildConfigurationWithId = buildConfiguration.toBuilder().id(buildConfigurationId.toString()).build();
RepositoryCreationResponse rcResponse = scmRepositoryProvider.createSCMRepository(request.getScmUrl(), request.getBuildConfig().getScmRevision(), request.getPreBuildSyncEnabled(), JobNotificationType.BUILD_CONFIG_CREATION, // consumer is deprecated with new stateless approach
MDCWrappers.wrap(event -> {
createBuildConfigurationWithRepository(event.getTaskId() == null ? null : event.getTaskId().toString(), event.getRepositoryId(), newBuildConfigurationWithId);
}), Optional.of(newBuildConfigurationWithId));
BuildConfigCreationResponse response;
if (rcResponse.getTaskId() == null) {
// scm is internal, not running a RepositoryCreationTask.
// onRCCreationSuccess already called with id = rcResponse.getRepository().getId()
org.jboss.pnc.model.BuildConfiguration buildConfigurationFromDB = repository.queryByPredicates(withName(newBuildConfigurationWithId.getName()), isNotArchived());
response = new BuildConfigCreationResponse(mapper.toDTO(buildConfigurationFromDB));
} else {
response = new BuildConfigCreationResponse(rcResponse.getTaskId().toString());
}
MDCUtils.removeProcessContext();
return response;
}
use of org.jboss.pnc.dto.Build in project pnc by project-ncl.
the class BuildConfigurationProviderImpl method populateBuildConfigWithLatestBuild.
private BuildConfigurationWithLatestBuild populateBuildConfigWithLatestBuild(BuildConfiguration buildConfig, List<BuildRecord> latestBuilds, List<BuildTask> runningBuilds) {
Integer bcId = mapper.getIdMapper().toEntity(buildConfig.getId());
Optional<BuildTask> latestBuildTask = runningBuilds.stream().filter(Objects::nonNull).filter(bt -> bt.getBuildConfigurationAudited().getId().equals(bcId)).max(Comparator.comparing(BuildTask::getSubmitTime));
Optional<BuildRecord> latestBuildRecord = latestBuilds.stream().filter(br -> br.getBuildConfigurationId().equals(bcId)).findFirst();
BuildRef latestBuild = latestBuildTask.map((bt -> (BuildRef) buildMapper.fromBuildTask(bt))).orElse(latestBuildRecord.map(buildMapper::toRef).orElse(null));
String latestBuildUsername = latestBuildTask.map(bt -> bt.getUser().getUsername()).orElse(latestBuildRecord.map(br -> br.getUser().getUsername()).orElse(null));
return BuildConfigurationWithLatestBuild.builderWithLatestBuild().buildConfig(buildConfig).latestBuild(latestBuild).latestBuildUsername(latestBuildUsername).build();
}
use of org.jboss.pnc.dto.Build in project bacon by project-ncl.
the class BuildInfoCollector method getLatestBuild.
public PncBuild getLatestBuild(String configId, BuildSearchType searchType) {
try {
BuildsFilterParameters filter = new BuildsFilterParameters();
Optional<String> queryParam;
switch(searchType) {
case ANY:
queryParam = query("status==%s", BuildStatus.SUCCESS);
break;
case PERMANENT:
queryParam = query("status==%s;temporaryBuild==%s", BuildStatus.SUCCESS, false);
break;
case TEMPORARY:
// NCL-5943 Cannot ignore permanent(regular) builds because they cause NO_REBUILD_REQUIRED even for
// temporary builds. That means "latest build" for a temporary build can be permanent(regular).
queryParam = query("status==%s", BuildStatus.SUCCESS);
break;
default:
queryParam = Optional.empty();
}
// Note: sort by id not allowed
Iterator<Build> buildIterator = buildConfigClient.getBuilds(configId, filter, of("=desc=submitTime"), queryParam).iterator();
if (!buildIterator.hasNext()) {
throw new NoSuccessfulBuildException(configId);
}
Build build = buildIterator.next();
PncBuild result = new PncBuild(build);
result.addBuiltArtifacts(toList(buildClient.getBuiltArtifacts(build.getId())));
return result;
} catch (ClientException e) {
throw new RuntimeException("Failed to get latest successful build for " + configId, e);
}
}
use of org.jboss.pnc.dto.Build in project bacon by project-ncl.
the class BuildInfoCollector method getBuildsFromGroupBuild.
/**
* Get all the builds done in a build group. If the build finished with 'NO_REBUILD_REQUIRED', get the 'original'
* successful build and return it instead If the build was successful, we don't grab the logs since they can be
* quite long.
*
* @param groupBuild the group build to get the builds
* @return The information on the group build and the builds performed
*/
public GroupBuildInfo getBuildsFromGroupBuild(GroupBuild groupBuild) {
Map<String, PncBuild> result = new HashMap<>();
BuildsFilterParameters filter = new BuildsFilterParameters();
filter.setLatest(false);
filter.setRunning(false);
try {
Collection<Build> builds = groupBuildClient.getBuilds(groupBuild.getId(), filter).getAll();
for (Build build : builds) {
PncBuild pncBuild;
if (build.getStatus() == BuildStatus.NO_REBUILD_REQUIRED) {
BuildRef buildRef = build.getNoRebuildCause();
Build realBuild = buildClient.getSpecific(buildRef.getId());
pncBuild = new PncBuild(realBuild);
} else {
pncBuild = new PncBuild(build);
}
pncBuild.addBuiltArtifacts(toList(buildClient.getBuiltArtifacts(pncBuild.getId())));
result.put(pncBuild.getName(), pncBuild);
}
return new GroupBuildInfo(groupBuild, result);
} catch (RemoteResourceException e) {
throw new RuntimeException("Failed to get group build info for " + groupBuild.getId(), e);
}
}
Aggregations