private void updateChangeVerification( RepositoryDefinition rd, String buildPlanKey, CurrentBuildResult results) throws RepositoryException { final GerritRepositoryAdapter gra = (GerritRepositoryAdapter) rd.getRepository(); final String revision = buildContext.getBuildChanges().getVcsRevisionKey(rd.getId()); final GerritService service = new GerritService(gra.getHostname(), gra.getPort(), gra.getGerritAuthentication()); final GerritChangeVO change = service.getChangeByRevision(revision); if (change == null) { logger.error(textProvider.getText("repository.gerrit.messages.error.retrieve")); return; } else if (change.isMerged()) { logger.info( textProvider.getText( "processor.gerrit.messages.build.verified.merged", Arrays.asList(change.getId()))); return; } if ((results.getBuildReturnCode() == 0) && results.getBuildState().equals(BuildState.SUCCESS)) { if (service.verifyChange( true, change.getNumber(), change.getCurrentPatchSet().getNumber(), buildStatusString(results))) { logger.info(textProvider.getText("processor.gerrit.messages.build.verified.pos")); } else { logger.error( textProvider.getText( "processor.gerrit.messages.build.verified.failed", Arrays.asList(change.getId()))); } } else if (service.verifyChange( false, change.getNumber(), change.getCurrentPatchSet().getNumber(), buildStatusString(results))) { logger.info(textProvider.getText("processor.gerrit.messages.build.verified.neg")); } else { logger.error( textProvider.getText( "processor.gerrit.messages.build.verified.failed", Arrays.asList(change.getId()))); } }
@Override public BuildContext call() throws InterruptedException, Exception { final String buildPlanKey = buildContext.getPlanKey(); final CurrentBuildResult results = buildContext.getBuildResult(); final Boolean runVerification = Boolean.parseBoolean(customConfiguration.get(GERRIT_RUN)); logger.info("Run verification: " + runVerification); if (runVerification) { final List<RepositoryDefinition> repositories = buildContext.getRepositoryDefinitions(); for (RepositoryDefinition rd : repositories) { if (rd.getRepository() instanceof GerritRepositoryAdapter) { logger.info("Updating Change Verification..."); updateChangeVerification(rd, buildPlanKey, results); } } } return buildContext; }