Search in sources :

Example 6 with TargetRepository

use of org.jboss.pnc.model.TargetRepository in project pnc by project-ncl.

the class DatabaseDataInitializer method initiliazeBuildRecordDemoData.

/**
 * Build record needs to be initialized in a separate transaction so that the audited build configuration can be
 * set.
 */
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public void initiliazeBuildRecordDemoData() {
    TargetRepository targetRepository = TargetRepository.newBuilder().repositoryType(RepositoryType.MAVEN).repositoryPath("builds-untested").identifier(ReposiotryIdentifier.INDY_MAVEN).temporaryRepo(false).build();
    TargetRepository targetRepository2 = TargetRepository.newBuilder().repositoryType(RepositoryType.NPM).repositoryPath("builds-tested").identifier(ReposiotryIdentifier.INDY_NPM).temporaryRepo(true).build();
    targetRepositoryRepository.save(targetRepository);
    targetRepositoryRepository.save(targetRepository2);
    Artifact builtArtifact1 = Artifact.Builder.newBuilder().identifier("demo:built-artifact1:jar:1.0").targetRepository(targetRepository).filename("demo built artifact 1").md5("4af310bf0ef67bc7d143f35818ea1ed2").sha1("3a8ff25c890f2a4a283876a91037ff6c57474a14").sha256("1660168483cb8a05d1cc2e77c861682a42ed9517ba945159d5538950c5db00fa").deployPath("demo/built-artifact1/1.0/built-artifact1-1.0.jar").size(10L).artifactQuality(ArtifactQuality.NEW).buildCategory(BuildCategory.STANDARD).build();
    Artifact builtArtifact2 = Artifact.Builder.newBuilder().identifier("demo:built-artifact2:jar:1.0").targetRepository(targetRepository).filename("demo built artifact 2").md5("4af310bf0ef67bc7d143f35818ea1ed2").sha1("61dad16e14438d2d8c8cbd18b267d62944f37898").sha256("2fafc2ed0f752ac2540283d48c5cd663254a853c5cb13dec02dce023fc7471a9").deployPath("demo/built-artifact2/1.0/built-artifact2-1.0.jar").size(11L).artifactQuality(ArtifactQuality.VERIFIED).buildCategory(BuildCategory.STANDARD).build();
    Artifact builtArtifact3 = Artifact.Builder.newBuilder().identifier("demo:built-artifact11:pom:1.0").targetRepository(targetRepository2).filename("demo built artifact 11").md5("5c8e1503e77dc8e370610098e01f0a8e").sha1("550748f6f58ed8d4f6b63850a867ac207da30013").sha256("b39f88c9937f201981767e539025121971e72bc590ea20ed7fdfffafc05f55a9").deployPath("demo/built-artifact11/1.0/built-artifact11-1.0.pom").size(10L).artifactQuality(ArtifactQuality.DELETED).buildCategory(BuildCategory.SERVICE).build();
    Artifact builtArtifact4 = Artifact.Builder.newBuilder().identifier("demo:built-artifact22:jar:1.0").targetRepository(targetRepository2).filename("demo built artifact 21").md5("48312fb24c7b2a116c2139d5b39bad66").sha1("6ce2fd75c35e7eed2c45338b943be34d0b974f16").sha256("61c9ccd3ba0013311ddb89cb9a29389b6761061bdcdfb48f0096bf98c7279a21").deployPath("demo/built-artifact22/1.0/built-artifact22-1.0.jar").size(11L).artifactQuality(ArtifactQuality.NEW).buildCategory(BuildCategory.SERVICE).build();
    builtArtifact1 = artifactRepository.save(builtArtifact1);
    builtArtifact2 = artifactRepository.save(builtArtifact2);
    builtArtifact3 = artifactRepository.save(builtArtifact3);
    builtArtifact4 = artifactRepository.save(builtArtifact4);
    Artifact importedArtifact1 = Artifact.Builder.newBuilder().identifier("demo:imported-artifact1:jar:1.0").targetRepository(targetRepository).filename("demo imported artifact 1").originUrl("http://central/import1.jar").importDate(Date.from(Instant.now())).md5("md-fake-abcd1234").sha1("sha1-fake-abcd1234").sha256("sha256-fake-abcd1234").size(10L).artifactQuality(ArtifactQuality.NEW).buildCategory(BuildCategory.STANDARD).deployPath("/imported1").build();
    Artifact importedArtifact2 = Artifact.Builder.newBuilder().identifier("demo:imported-artifact2:jar:1.0").targetRepository(targetRepository).filename("demo imported artifact 2").originUrl("http://central/import2.jar").importDate(Date.from(Instant.now())).md5("md-fake-abcd1234").sha1("sha1-fake-abcd1234").sha256("sha256-fake-abcd1234").size(10L).artifactQuality(ArtifactQuality.NEW).buildCategory(BuildCategory.STANDARD).deployPath("/imported2").build();
    importedArtifact1 = artifactRepository.save(importedArtifact1);
    importedArtifact2 = artifactRepository.save(importedArtifact2);
    Set<BuildRecord> buildRecords = new HashSet<>();
    final int INITIAL_REVISION = 1;
    IdRev buildConfig1AuditIdRev = new IdRev(buildConfiguration1.getId(), INITIAL_REVISION);
    BuildConfigurationAudited buildConfigAudited1 = buildConfigurationAuditedRepository.queryById(buildConfig1AuditIdRev);
    if (buildConfigAudited1 != null) {
        String nextId = Sequence.nextBase32Id();
        log.info("####nextId: " + nextId);
        BuildRecord buildRecord1 = BuildRecord.Builder.newBuilder().id(nextId).buildConfigurationAudited(buildConfigAudited1).submitTime(Timestamp.from(Instant.now().minus(8, ChronoUnit.MINUTES))).startTime(Timestamp.from(Instant.now().minus(5, ChronoUnit.MINUTES))).endTime(Timestamp.from(Instant.now())).dependency(importedArtifact1).dependency(importedArtifact2).user(pncAdminUser).repourLog("This is a wannabe alignment log.").buildLog("Very short demo log: The quick brown fox jumps over the lazy dog.").status(BuildStatus.SUCCESS).productMilestone(demoProductMilestone1).sshCommand("ssh worker@localhost -P 9999").sshPassword("dontchangeme").buildEnvironment(buildConfigAudited1.getBuildEnvironment()).scmRepoURL(buildConfigAudited1.getRepositoryConfiguration().getInternalUrl()).scmRevision(buildConfigAudited1.getScmRevision()).executionRootName("org.jboss.pnc:parent").executionRootVersion("1.2.3").temporaryBuild(false).build();
        log.info("Saving buildRecord1: " + buildRecord1);
        BuildRecord savedBuildRecord1 = buildRecordRepository.save(buildRecord1);
        builtArtifact1.setBuildRecord(savedBuildRecord1);
        builtArtifact2.setBuildRecord(savedBuildRecord1);
        log.info("Saved buildRecord1: " + savedBuildRecord1 + "BuildConfigurationAuditedIdRev: " + savedBuildRecord1.getBuildConfigurationAuditedIdRev());
        buildRecords.add(buildRecord1);
        nextId = Sequence.nextBase32Id();
        log.info("####nextId: " + nextId);
        BuildRecord tempRecord1 = BuildRecord.Builder.newBuilder().id(nextId).buildConfigurationAudited(buildConfigAudited1).submitTime(Timestamp.from(Instant.now())).startTime(Timestamp.from(Instant.now())).endTime(Timestamp.from(Instant.now())).user(pncAdminUser).repourLog("This is a wannabe alignment log.").buildLog("Very short demo log: The quick brown fox jumps over the lazy dog.").status(BuildStatus.SUCCESS).buildEnvironment(buildConfigAudited1.getBuildEnvironment()).scmRepoURL(buildConfigAudited1.getRepositoryConfiguration().getInternalUrl()).scmRevision(buildConfigAudited1.getScmRevision()).executionRootName("org.jboss.pnc:parent").executionRootVersion("1.2.3").temporaryBuild(true).build();
        log.info("Saving tempRecord1: " + tempRecord1);
        BuildRecord savedTempRecord1 = buildRecordRepository.save(tempRecord1);
        builtArtifact3.setBuildRecord(savedTempRecord1);
        builtArtifact4.setBuildRecord(savedTempRecord1);
        log.info("Saved buildRecord1: " + savedTempRecord1 + "BuildConfigurationAuditedIdRev: " + savedTempRecord1.getBuildConfigurationAuditedIdRev());
        buildRecords.add(tempRecord1);
    }
    Artifact builtArtifact5 = Artifact.Builder.newBuilder().identifier("demo:built-artifact3:jar:1.0").targetRepository(targetRepository).filename("demo built artifact 3").md5("17353a18678c6c249e3052edec2e4c5c").sha1("61dad16e14438d2d8c8cbd18b267d62944f37898").sha256("1660168483cb8a05d1cc2e77c861682a42ed9517ba945159d5538950c5db00fa").size(10L).artifactQuality(ArtifactQuality.NEW).deployPath("/built3").build();
    Artifact builtArtifact6 = Artifact.Builder.newBuilder().identifier("demo:built-artifact4:jar:1.0").targetRepository(targetRepository).filename("demo built artifact 4").md5("md-fake-abcd1234").sha1("sha1-fake-abcd1234").sha256("sha256-fake-abcd1234").size(10L).artifactQuality(ArtifactQuality.NEW).deployPath("/built4").build();
    Artifact builtArtifact7 = Artifact.Builder.newBuilder().identifier("demo:built-artifact5:jar:1.0").targetRepository(targetRepository).filename("demo built artifact 7").md5("adsfs6df548w1327cx78he873217df98").sha1("a56asdf87a3cvx231b87987fasd6f5ads4f32sdf").sha256("sad5f64sf87b3cvx2b1v87tr89h7d3f5g432xcz1zv87fawrv23n8796534564er").size(10L).artifactQuality(ArtifactQuality.NEW).deployPath("/built5").build();
    Artifact builtArtifact8 = Artifact.Builder.newBuilder().identifier("demo:built-artifact6:jar:1.0").targetRepository(targetRepository).filename("demo built artifact 8").md5("md-fake-abcdefg1234").sha1("sha1-fake-abcdefg1234").sha256("sha256-fake-abcdefg1234").size(10L).artifactQuality(ArtifactQuality.NEW).deployPath("/built6").build();
    builtArtifact5 = artifactRepository.save(builtArtifact5);
    builtArtifact6 = artifactRepository.save(builtArtifact6);
    builtArtifact7 = artifactRepository.save(builtArtifact7);
    builtArtifact8 = artifactRepository.save(builtArtifact8);
    Artifact dependencyBuiltArtifact1 = artifactRepository.queryByPredicates(withIdentifierAndSha256(builtArtifact1.getIdentifier(), builtArtifact1.getSha256()));
    // For timestamp tests where concrete timestamp is needed
    Calendar calendar = Calendar.getInstance();
    calendar.set(2019, Calendar.JANUARY, 10);
    IdRev buildConfig2AuditIdRev = new IdRev(buildConfiguration2.getId(), INITIAL_REVISION);
    BuildConfigurationAudited buildConfigAudited2 = buildConfigurationAuditedRepository.queryById(buildConfig2AuditIdRev);
    if (buildConfigAudited2 != null) {
        String nextId = Sequence.nextBase32Id();
        log.info("####nextId: " + nextId);
        BuildRecord buildRecord2 = BuildRecord.Builder.newBuilder().id(nextId).buildConfigurationAudited(buildConfigAudited2).submitTime(Timestamp.from(Instant.now().minus(8, ChronoUnit.MINUTES))).startTime(Timestamp.from(Instant.now().minus(5, ChronoUnit.MINUTES))).endTime(Timestamp.from(Instant.now())).dependency(dependencyBuiltArtifact1).dependency(importedArtifact1).user(demoUser).buildLog("Very short demo log: The quick brown fox jumps over the lazy dog.").status(BuildStatus.SUCCESS).buildEnvironment(buildConfigAudited2.getBuildEnvironment()).executionRootName("org.jboss.pnc:parent").executionRootVersion("1.2.4").temporaryBuild(false).build();
        nextId = Sequence.nextBase32Id();
        log.info("####nextId: " + nextId);
        BuildRecord savedBuildRecord2 = buildRecordRepository.save(buildRecord2);
        builtArtifact5.setBuildRecord(savedBuildRecord2);
        builtArtifact6.setBuildRecord(savedBuildRecord2);
        buildRecords.add(buildRecord2);
        BuildRecord tempRecord1 = BuildRecord.Builder.newBuilder().id(nextId).buildConfigurationAudited(buildConfigAudited2).submitTime(Timestamp.from(calendar.toInstant().minus(8, ChronoUnit.HOURS))).startTime(Timestamp.from(calendar.toInstant().minus(5, ChronoUnit.HOURS))).endTime(Timestamp.from(calendar.toInstant())).user(demoUser).buildLog("Is it free?").status(BuildStatus.SUCCESS).buildEnvironment(buildConfigAudited2.getBuildEnvironment()).executionRootName("org.jboss.pnc:parent").executionRootVersion("1.2.4").temporaryBuild(true).build();
        BuildRecord savedTempRecord1 = buildRecordRepository.save(tempRecord1);
        builtArtifact7.setBuildRecord(savedTempRecord1);
        builtArtifact8.setBuildRecord(savedTempRecord1);
        buildRecords.add(tempRecord1);
    }
    BuildConfigSetRecord buildConfigSetRecord1 = BuildConfigSetRecord.Builder.newBuilder().buildConfigurationSet(buildConfigurationSet1).startTime(Timestamp.from(Instant.now())).endTime(Timestamp.from(Instant.now())).user(demoUser).status(BuildStatus.FAILED).temporaryBuild(false).build();
    buildConfigSetRecordRepository.save(buildConfigSetRecord1);
    BuildConfigSetRecord buildConfigSetRecord2 = BuildConfigSetRecord.Builder.newBuilder().buildConfigurationSet(buildConfigurationSet1).buildRecords(buildRecords).startTime(Timestamp.from(Instant.now())).endTime(Timestamp.from(Instant.now())).user(demoUser).status(BuildStatus.SUCCESS).temporaryBuild(false).build();
    buildConfigSetRecordRepository.save(buildConfigSetRecord2);
    BuildConfigSetRecord buildConfigSetRecord3 = BuildConfigSetRecord.Builder.newBuilder().buildConfigurationSet(buildConfigurationSet1).startTime(Timestamp.from(calendar.toInstant().minus(20, ChronoUnit.DAYS))).endTime(Timestamp.from(calendar.toInstant().minus(20, ChronoUnit.DAYS))).user(demoUser).status(BuildStatus.SUCCESS).temporaryBuild(true).build();
    buildConfigSetRecordRepository.save(buildConfigSetRecord3);
    demoProductMilestone1 = productMilestoneRepository.queryById(demoProductMilestone1.getId());
    demoProductMilestone1.addDeliveredArtifact(builtArtifact1);
    demoProductMilestone1.addDeliveredArtifact(builtArtifact5);
    demoProductMilestone1.addDeliveredArtifact(importedArtifact2);
    demoProductMilestone1 = productMilestoneRepository.save(demoProductMilestone1);
    Map<String, String> operationParameters = new HashMap<String, String>();
    operationParameters.put("url-0", "https://github.com/project-ncl/pnc/archive/refs/tags/2.1.1.tar.gz");
    DeliverableAnalyzerOperation operation1 = DeliverableAnalyzerOperation.Builder.newBuilder().id(new Base32LongID(1000001l)).progressStatus(ProgressStatus.NEW).submitTime(TODAY).user(demoUser).productMilestone(demoProductMilestone1).operationParameters(operationParameters).build();
    deliverableAnalyzerOperationRepository.save(operation1);
    DeliverableAnalyzerOperation operation2 = DeliverableAnalyzerOperation.Builder.newBuilder().id(new Base32LongID(1000002l)).progressStatus(ProgressStatus.IN_PROGRESS).submitTime(TODAY).user(demoUser).productMilestone(demoProductMilestone1).build();
    deliverableAnalyzerOperationRepository.save(operation2);
}
Also used : Base32LongID(org.jboss.pnc.model.Base32LongID) HashMap(java.util.HashMap) DeliverableAnalyzerOperation(org.jboss.pnc.model.DeliverableAnalyzerOperation) Calendar(java.util.Calendar) Artifact(org.jboss.pnc.model.Artifact) BuildRecord(org.jboss.pnc.model.BuildRecord) TargetRepository(org.jboss.pnc.model.TargetRepository) BuildConfigurationAudited(org.jboss.pnc.model.BuildConfigurationAudited) IdRev(org.jboss.pnc.model.IdRev) HashSet(java.util.HashSet) BuildConfigSetRecord(org.jboss.pnc.model.BuildConfigSetRecord) TransactionAttribute(javax.ejb.TransactionAttribute)

Example 7 with TargetRepository

use of org.jboss.pnc.model.TargetRepository in project pnc by project-ncl.

the class DefaultDatastore method storeCompletedBuild.

@Override
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public BuildRecord storeCompletedBuild(BuildRecord.Builder buildRecordBuilder, List<Artifact> builtArtifacts, List<Artifact> dependencies) {
    BuildRecord buildRecord = buildRecordBuilder.build(true);
    logger.debug("Storing completed build {}.", buildRecord);
    BuildRecord previouslySavedBuild = buildRecordRepository.queryById(buildRecord.getId());
    if (previouslySavedBuild != null) {
        throw new IllegalStateException("When trying to save build " + buildRecord + " previously saved build with status " + previouslySavedBuild.getStatus() + " was found.");
    }
    if (logger.isTraceEnabled()) {
        logger.trace("Build Log: {}.", buildRecord.getBuildLog());
    }
    Map<TargetRepository.IdentifierPath, TargetRepository> repositoriesCache = new HashMap<>();
    Map<Artifact.IdentifierSha256, Artifact> artifactCache = new HashMap<>();
    /**
     * Built artifacts must be saved before the dependencies. In case an artifact is built and the dependency
     * (re-downloaded), it must be linked to built artifacts repository.
     */
    logger.debug("Saving built artifacts ...");
    final Set<Artifact> savedBuiltArtifacts = saveArtifacts(builtArtifacts, repositoriesCache, artifactCache);
    logger.debug("Saving dependencies ...");
    buildRecord.setDependencies(saveArtifacts(dependencies, repositoriesCache, artifactCache));
    logger.debug("Done saving artifacts.");
    logger.trace("Saving build record {}.", buildRecord);
    buildRecord = buildRecordRepository.save(buildRecord);
    logger.debug("Build record {} saved.", buildRecord.getId());
    ArtifactQuality quality = buildRecord.isTemporaryBuild() ? ArtifactQuality.TEMPORARY : ArtifactQuality.NEW;
    logger.trace("Setting artifacts as built and their quality to {}.", quality);
    for (Artifact builtArtifact : savedBuiltArtifacts) {
        builtArtifact.setBuildRecord(buildRecord);
        builtArtifact.setArtifactQuality(quality);
    }
    return buildRecord;
}
Also used : TargetRepository(org.jboss.pnc.model.TargetRepository) HashMap(java.util.HashMap) ArtifactQuality(org.jboss.pnc.enums.ArtifactQuality) BuildRecord(org.jboss.pnc.model.BuildRecord) Artifact(org.jboss.pnc.model.Artifact) TransactionAttribute(javax.ejb.TransactionAttribute)

Example 8 with TargetRepository

use of org.jboss.pnc.model.TargetRepository in project pnc by project-ncl.

the class AbstractArtifactMapper method fillDeployAndPublicUrl.

private void fillDeployAndPublicUrl(org.jboss.pnc.model.Artifact artifactDB, Consumer<String> deployUrlSetter, Consumer<String> publicUrlSetter) {
    GlobalModuleGroup globalConfig = null;
    try {
        globalConfig = config.getGlobalConfig();
    } catch (ConfigurationParseException e) {
        logger.error("Cannot read configuration", e);
    }
    if (globalConfig == null) {
        return;
    }
    TargetRepository targetRepository = artifactDB.getTargetRepository();
    if (targetRepository == null) {
        logger.error("Artifact DB object does not have target repository set: {}", artifactDB);
        return;
    }
    RepositoryType repositoryType = targetRepository.getRepositoryType();
    if (repositoryType.equals(RepositoryType.MAVEN) || repositoryType.equals(RepositoryType.NPM)) {
        if (artifactDB.getDeployPath() == null || artifactDB.getDeployPath().equals("")) {
            deployUrlSetter.accept("");
            publicUrlSetter.accept("");
        } else {
            try {
                deployUrlSetter.accept(UrlUtils.buildUrl(globalConfig.getIndyUrl(), targetRepository.getRepositoryPath(), artifactDB.getDeployPath()));
                publicUrlSetter.accept(UrlUtils.buildUrl(globalConfig.getExternalIndyUrl(), targetRepository.getRepositoryPath(), artifactDB.getDeployPath()));
            } catch (MalformedURLException e) {
                logger.error("Cannot construct internal artifactDB URL.", e);
                deployUrlSetter.accept(null);
                publicUrlSetter.accept(null);
            }
        }
    } else {
        deployUrlSetter.accept(artifactDB.getOriginUrl());
        publicUrlSetter.accept(artifactDB.getOriginUrl());
    }
}
Also used : TargetRepository(org.jboss.pnc.model.TargetRepository) MalformedURLException(java.net.MalformedURLException) ConfigurationParseException(org.jboss.pnc.common.json.ConfigurationParseException) GlobalModuleGroup(org.jboss.pnc.common.json.GlobalModuleGroup) RepositoryType(org.jboss.pnc.enums.RepositoryType)

Aggregations

TargetRepository (org.jboss.pnc.model.TargetRepository)8 Artifact (org.jboss.pnc.model.Artifact)5 HashMap (java.util.HashMap)3 File (java.io.File)2 HashSet (java.util.HashSet)2 TransactionAttribute (javax.ejb.TransactionAttribute)2 IndyClientException (org.commonjava.indy.client.core.IndyClientException)2 IndyContentClientModule (org.commonjava.indy.client.core.module.IndyContentClientModule)2 TrackedContentEntryDTO (org.commonjava.indy.folo.dto.TrackedContentEntryDTO)2 ArtifactQuality (org.jboss.pnc.enums.ArtifactQuality)2 RepositoryType (org.jboss.pnc.enums.RepositoryType)2 BuildRecord (org.jboss.pnc.model.BuildRecord)2 RepositoryManagerException (org.jboss.pnc.spi.repositorymanager.RepositoryManagerException)2 MalformedURLException (java.net.MalformedURLException)1 ArrayList (java.util.ArrayList)1 Calendar (java.util.Calendar)1 StopWatch (org.apache.commons.lang3.time.StopWatch)1 StoreKey (org.commonjava.indy.model.core.StoreKey)1 ConfigurationParseException (org.jboss.pnc.common.json.ConfigurationParseException)1 GlobalModuleGroup (org.jboss.pnc.common.json.GlobalModuleGroup)1