Упростил обновление старых пайплайнов
This commit is contained in:
parent
cc9e296daf
commit
ceaa48487e
@ -19,7 +19,7 @@ public interface PipelineRepository {
|
|||||||
|
|
||||||
Optional<Pipeline> findById(Long pipelineId);
|
Optional<Pipeline> findById(Long pipelineId);
|
||||||
|
|
||||||
Page<Pipeline> findAllByStatuses(Set<PipelineStatus> statuses, Pageable pagination);
|
List<Pipeline> findAllByStatuses(Set<PipelineStatus> statuses);
|
||||||
|
|
||||||
List<Pipeline> findAllById(Set<Long> pipelineIds);
|
List<Pipeline> findAllById(Set<Long> pipelineIds);
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@ public interface PipelineService {
|
|||||||
|
|
||||||
Pipeline update(@NonNull Pipeline pipeline);
|
Pipeline update(@NonNull Pipeline pipeline);
|
||||||
|
|
||||||
Page<Pipeline> getAllByStatuses(@NonNull Set<PipelineStatus> statuses, @NonNull Pageable pagination);
|
List<Pipeline> getAllByStatuses(@NonNull Set<PipelineStatus> statuses);
|
||||||
|
|
||||||
Page<Pipeline> getAll(@NonNull PipelineFilter filter, @NonNull Pageable pagination);
|
Page<Pipeline> getAll(@NonNull PipelineFilter filter, @NonNull Pageable pagination);
|
||||||
|
|
||||||
|
@ -82,6 +82,8 @@ public class PipelineServiceImpl implements PipelineService {
|
|||||||
final Pipeline oldPipeline = repository.findById(pipeline.getId())
|
final Pipeline oldPipeline = repository.findById(pipeline.getId())
|
||||||
.orElseThrow(notFoundException("Pipeline не найден"));
|
.orElseThrow(notFoundException("Pipeline не найден"));
|
||||||
|
|
||||||
|
pipeline.setProjectId(pipeline.getProjectId());
|
||||||
|
|
||||||
if (!oldPipeline.getUpdated().equals(pipeline.getUpdated())) {
|
if (!oldPipeline.getUpdated().equals(pipeline.getUpdated())) {
|
||||||
notifyNewPipeline(pipeline, oldPipeline.getStatus().name());
|
notifyNewPipeline(pipeline, oldPipeline.getStatus().name());
|
||||||
return repository.save(pipeline);
|
return repository.save(pipeline);
|
||||||
@ -98,8 +100,8 @@ public class PipelineServiceImpl implements PipelineService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Page<Pipeline> getAllByStatuses(@NonNull Set<PipelineStatus> statuses, @NonNull Pageable pagination) {
|
public List<Pipeline> getAllByStatuses(@NonNull Set<PipelineStatus> statuses) {
|
||||||
return repository.findAllByStatuses(statuses, pagination);
|
return repository.findAllByStatuses(statuses);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -16,14 +16,13 @@ import dev.struchkov.haiti.utils.network.HttpParse;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Qualifier;
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
import org.springframework.core.convert.ConversionService;
|
import org.springframework.core.convert.ConversionService;
|
||||||
import org.springframework.data.domain.Page;
|
|
||||||
import org.springframework.data.domain.PageRequest;
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.text.MessageFormat;
|
import java.text.MessageFormat;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Optional;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.concurrent.ForkJoinPool;
|
import java.util.concurrent.ForkJoinPool;
|
||||||
import java.util.concurrent.ForkJoinTask;
|
import java.util.concurrent.ForkJoinTask;
|
||||||
@ -35,7 +34,6 @@ import static dev.struchkov.bot.gitlab.context.domain.PipelineStatus.PENDING;
|
|||||||
import static dev.struchkov.bot.gitlab.context.domain.PipelineStatus.PREPARING;
|
import static dev.struchkov.bot.gitlab.context.domain.PipelineStatus.PREPARING;
|
||||||
import static dev.struchkov.bot.gitlab.context.domain.PipelineStatus.RUNNING;
|
import static dev.struchkov.bot.gitlab.context.domain.PipelineStatus.RUNNING;
|
||||||
import static dev.struchkov.bot.gitlab.context.domain.PipelineStatus.WAITING_FOR_RESOURCE;
|
import static dev.struchkov.bot.gitlab.context.domain.PipelineStatus.WAITING_FOR_RESOURCE;
|
||||||
import static dev.struchkov.haiti.context.exception.ConvertException.convertException;
|
|
||||||
import static dev.struchkov.haiti.utils.Checker.checkNotEmpty;
|
import static dev.struchkov.haiti.utils.Checker.checkNotEmpty;
|
||||||
import static dev.struchkov.haiti.utils.concurrent.ForkJoinUtils.pullTaskResult;
|
import static dev.struchkov.haiti.utils.concurrent.ForkJoinUtils.pullTaskResult;
|
||||||
import static dev.struchkov.haiti.utils.concurrent.ForkJoinUtils.pullTaskResults;
|
import static dev.struchkov.haiti.utils.concurrent.ForkJoinUtils.pullTaskResults;
|
||||||
@ -138,27 +136,24 @@ public class PipelineParser {
|
|||||||
|
|
||||||
public void scanOldPipeline() {
|
public void scanOldPipeline() {
|
||||||
log.debug("Старт обработки старых пайплайнов");
|
log.debug("Старт обработки старых пайплайнов");
|
||||||
int page = 0;
|
final List<Pipeline> pipelines = pipelineService.getAllByStatuses(oldStatus);
|
||||||
Page<Pipeline> pipelineSheet = pipelineService.getAllByStatuses(oldStatus, PageRequest.of(page, COUNT));
|
|
||||||
|
|
||||||
while (pipelineSheet.hasContent()) {
|
|
||||||
final List<Pipeline> pipelines = pipelineSheet.getContent();
|
|
||||||
|
|
||||||
for (Pipeline pipeline : pipelines) {
|
|
||||||
final Pipeline newPipeline = HttpParse.request(
|
|
||||||
MessageFormat.format(gitlabProperty.getUrlPipeline(), pipeline.getProjectId(), pipeline.getId())
|
|
||||||
)
|
|
||||||
.header(ACCEPT)
|
|
||||||
.header(StringUtils.H_PRIVATE_TOKEN, personProperty.getToken())
|
|
||||||
.execute(PipelineJson.class)
|
|
||||||
.map(json -> conversionService.convert(json, Pipeline.class))
|
|
||||||
.orElseThrow(convertException("Ошибка обновления Pipelines"));
|
|
||||||
|
|
||||||
|
for (Pipeline pipeline : pipelines) {
|
||||||
|
final Optional<Pipeline> optNewPipeline = HttpParse.request(
|
||||||
|
MessageFormat.format(gitlabProperty.getUrlPipeline(), pipeline.getProjectId(), pipeline.getId())
|
||||||
|
)
|
||||||
|
.header(ACCEPT)
|
||||||
|
.header(StringUtils.H_PRIVATE_TOKEN, personProperty.getToken())
|
||||||
|
.execute(PipelineJson.class)
|
||||||
|
.map(json -> conversionService.convert(json, Pipeline.class));
|
||||||
|
if (optNewPipeline.isPresent()) {
|
||||||
|
final Pipeline newPipeline = optNewPipeline.get();
|
||||||
pipelineService.update(newPipeline);
|
pipelineService.update(newPipeline);
|
||||||
|
} else {
|
||||||
|
log.error("Ошибка обновления пайплайна. ProjectId:{}, PipelineId:{}", pipeline.getProjectId(), pipeline.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
pipelineSheet = pipelineService.getAllByStatuses(oldStatus, PageRequest.of(++page, COUNT));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
log.debug("Конец обработки старых пайплайнов");
|
log.debug("Конец обработки старых пайплайнов");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -35,8 +35,8 @@ public class PipelineRepositoryImpl implements PipelineRepository {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Page<Pipeline> findAllByStatuses(Set<PipelineStatus> statuses, Pageable pagination) {
|
public List<Pipeline> findAllByStatuses(Set<PipelineStatus> statuses) {
|
||||||
return jpaRepository.findAllByStatusIn(statuses, pagination);
|
return jpaRepository.findAllByStatusIn(statuses);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -2,10 +2,9 @@ package dev.struchkov.bot.gitlab.data.jpa;
|
|||||||
|
|
||||||
import dev.struchkov.bot.gitlab.context.domain.PipelineStatus;
|
import dev.struchkov.bot.gitlab.context.domain.PipelineStatus;
|
||||||
import dev.struchkov.bot.gitlab.context.domain.entity.Pipeline;
|
import dev.struchkov.bot.gitlab.context.domain.entity.Pipeline;
|
||||||
import org.springframework.data.domain.Page;
|
|
||||||
import org.springframework.data.domain.Pageable;
|
|
||||||
import org.springframework.data.jpa.repository.support.JpaRepositoryImplementation;
|
import org.springframework.data.jpa.repository.support.JpaRepositoryImplementation;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -13,6 +12,6 @@ import java.util.Set;
|
|||||||
*/
|
*/
|
||||||
public interface PipelineJpaRepository extends JpaRepositoryImplementation<Pipeline, Long> {
|
public interface PipelineJpaRepository extends JpaRepositoryImplementation<Pipeline, Long> {
|
||||||
|
|
||||||
Page<Pipeline> findAllByStatusIn(Set<PipelineStatus> statuses, Pageable pageable);
|
List<Pipeline> findAllByStatusIn(Set<PipelineStatus> statuses);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user