Search in sources :

Example 1 with ArtifactoryPromotionSyncProperty

use of net.nemerosa.ontrack.extension.artifactory.property.ArtifactoryPromotionSyncProperty in project ontrack by nemerosa.

the class ArtifactoryPromotionSyncServiceImpl method sync.

private void sync(Branch branch, JobRunListener listener) {
    // Gets the sync properties
    Property<ArtifactoryPromotionSyncProperty> syncProperty = propertyService.getProperty(branch, ArtifactoryPromotionSyncPropertyType.class);
    if (syncProperty.isEmpty()) {
        throw new IllegalStateException(String.format("Cannot find sync. property on branch %d", branch.id()));
    }
    String buildName = syncProperty.getValue().getBuildName();
    String buildNameFilter = syncProperty.getValue().getBuildNameFilter();
    ArtifactoryConfiguration configuration = syncProperty.getValue().getConfiguration();
    String log = String.format("Sync branch %s/%s with Artifactory build %s (%s)", branch.getProject().getName(), branch.getName(), buildName, buildNameFilter);
    logger.info("[artifactory-sync] {}", log);
    listener.message(log);
    // Build name filter
    Pattern buildNamePattern = Pattern.compile(replace(replace(buildNameFilter, ".", "\\."), "*", ".*"));
    // Gets an Artifactory client
    ArtifactoryClient client = artifactoryClientFactory.getClient(configuration);
    // Gets all the build numbers for the specified build name
    List<String> buildNumbers = client.getBuildNumbers(buildName).stream().filter(name -> buildNamePattern.matcher(name).matches()).collect(Collectors.toList());
    // Synchronises the promotion levels for each build
    for (String buildNumber : buildNumbers) {
        syncBuild(branch, buildName, buildNumber, client, listener);
    }
}
Also used : ArtifactoryConfProperties(net.nemerosa.ontrack.extension.artifactory.ArtifactoryConfProperties) ArtifactoryConfiguration(net.nemerosa.ontrack.extension.artifactory.configuration.ArtifactoryConfiguration) LoggerFactory(org.slf4j.LoggerFactory) Autowired(org.springframework.beans.factory.annotation.Autowired) ArtifactoryClientFactory(net.nemerosa.ontrack.extension.artifactory.client.ArtifactoryClientFactory) ArtifactoryClient(net.nemerosa.ontrack.extension.artifactory.client.ArtifactoryClient) Service(org.springframework.stereotype.Service) JobOrchestratorSupplier(net.nemerosa.ontrack.job.orchestrator.JobOrchestratorSupplier) JsonNode(com.fasterxml.jackson.databind.JsonNode) StringUtils.replace(org.apache.commons.lang3.StringUtils.replace) ArtifactoryConfigurationService(net.nemerosa.ontrack.extension.artifactory.configuration.ArtifactoryConfigurationService) net.nemerosa.ontrack.job(net.nemerosa.ontrack.job) AbstractBranchJob(net.nemerosa.ontrack.model.support.AbstractBranchJob) Logger(org.slf4j.Logger) ConfigurationServiceListener(net.nemerosa.ontrack.model.support.ConfigurationServiceListener) Collectors(java.util.stream.Collectors) ArtifactoryPromotionSyncProperty(net.nemerosa.ontrack.extension.artifactory.property.ArtifactoryPromotionSyncProperty) SecurityService(net.nemerosa.ontrack.model.security.SecurityService) List(java.util.List) Stream(java.util.stream.Stream) ArtifactoryStatus(net.nemerosa.ontrack.extension.artifactory.model.ArtifactoryStatus) net.nemerosa.ontrack.model.structure(net.nemerosa.ontrack.model.structure) Optional(java.util.Optional) Pattern(java.util.regex.Pattern) ArtifactoryPromotionSyncPropertyType(net.nemerosa.ontrack.extension.artifactory.property.ArtifactoryPromotionSyncPropertyType) Pattern(java.util.regex.Pattern) ArtifactoryConfiguration(net.nemerosa.ontrack.extension.artifactory.configuration.ArtifactoryConfiguration) ArtifactoryPromotionSyncProperty(net.nemerosa.ontrack.extension.artifactory.property.ArtifactoryPromotionSyncProperty) ArtifactoryClient(net.nemerosa.ontrack.extension.artifactory.client.ArtifactoryClient)

Example 2 with ArtifactoryPromotionSyncProperty

use of net.nemerosa.ontrack.extension.artifactory.property.ArtifactoryPromotionSyncProperty in project ontrack by nemerosa.

the class ArtifactoryPromotionSyncServiceImplTest method syncBuildJobs_one_per_configured_branch.

@Test
public void syncBuildJobs_one_per_configured_branch() {
    when(propertyService.hasProperty(branch, ArtifactoryPromotionSyncPropertyType.class)).thenReturn(true);
    Property<ArtifactoryPromotionSyncProperty> property = Property.of(new ArtifactoryPromotionSyncPropertyType(new ArtifactoryExtensionFeature(), null), new ArtifactoryPromotionSyncProperty(null, "", "", 10));
    when(propertyService.getProperty(branch, ArtifactoryPromotionSyncPropertyType.class)).thenReturn(property);
    when(structureService.getProjectList()).thenReturn(Collections.singletonList(project));
    when(structureService.getBranchesForProject(project.getId())).thenReturn(Collections.singletonList(branch));
    // Gets the list of jobs
    assertEquals(1, service.collectJobRegistrations().count());
}
Also used : ArtifactoryPromotionSyncPropertyType(net.nemerosa.ontrack.extension.artifactory.property.ArtifactoryPromotionSyncPropertyType) ArtifactoryExtensionFeature(net.nemerosa.ontrack.extension.artifactory.ArtifactoryExtensionFeature) ArtifactoryPromotionSyncProperty(net.nemerosa.ontrack.extension.artifactory.property.ArtifactoryPromotionSyncProperty) Test(org.junit.Test)

Aggregations

ArtifactoryPromotionSyncProperty (net.nemerosa.ontrack.extension.artifactory.property.ArtifactoryPromotionSyncProperty)2 ArtifactoryPromotionSyncPropertyType (net.nemerosa.ontrack.extension.artifactory.property.ArtifactoryPromotionSyncPropertyType)2 JsonNode (com.fasterxml.jackson.databind.JsonNode)1 List (java.util.List)1 Optional (java.util.Optional)1 Pattern (java.util.regex.Pattern)1 Collectors (java.util.stream.Collectors)1 Stream (java.util.stream.Stream)1 ArtifactoryConfProperties (net.nemerosa.ontrack.extension.artifactory.ArtifactoryConfProperties)1 ArtifactoryExtensionFeature (net.nemerosa.ontrack.extension.artifactory.ArtifactoryExtensionFeature)1 ArtifactoryClient (net.nemerosa.ontrack.extension.artifactory.client.ArtifactoryClient)1 ArtifactoryClientFactory (net.nemerosa.ontrack.extension.artifactory.client.ArtifactoryClientFactory)1 ArtifactoryConfiguration (net.nemerosa.ontrack.extension.artifactory.configuration.ArtifactoryConfiguration)1 ArtifactoryConfigurationService (net.nemerosa.ontrack.extension.artifactory.configuration.ArtifactoryConfigurationService)1 ArtifactoryStatus (net.nemerosa.ontrack.extension.artifactory.model.ArtifactoryStatus)1 net.nemerosa.ontrack.job (net.nemerosa.ontrack.job)1 JobOrchestratorSupplier (net.nemerosa.ontrack.job.orchestrator.JobOrchestratorSupplier)1 SecurityService (net.nemerosa.ontrack.model.security.SecurityService)1 net.nemerosa.ontrack.model.structure (net.nemerosa.ontrack.model.structure)1 AbstractBranchJob (net.nemerosa.ontrack.model.support.AbstractBranchJob)1