Search in sources :

Example 1 with ArtifactoryConfiguration

use of net.nemerosa.ontrack.extension.artifactory.configuration.ArtifactoryConfiguration 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 ArtifactoryConfiguration

use of net.nemerosa.ontrack.extension.artifactory.configuration.ArtifactoryConfiguration in project ontrack by nemerosa.

the class ArtifactoryPromotionSyncPropertyType method fromStorage.

@Override
public ArtifactoryPromotionSyncProperty fromStorage(JsonNode node) {
    String configurationName = node.path("configuration").asText();
    String buildName = node.path("buildName").asText();
    String buildNameFilter = node.path("buildNameFilter").asText();
    int interval = node.path("interval").asInt();
    // Looks the configuration up
    ArtifactoryConfiguration configuration = configurationService.getConfiguration(configurationName);
    // Validates the project path
    validateNotBlank(buildName, "The build name must not be empty");
    // Validates the interval
    if (interval < 0)
        interval = 0;
    // OK
    return new ArtifactoryPromotionSyncProperty(configuration, buildName, buildNameFilter, interval);
}
Also used : ArtifactoryConfiguration(net.nemerosa.ontrack.extension.artifactory.configuration.ArtifactoryConfiguration)

Aggregations

ArtifactoryConfiguration (net.nemerosa.ontrack.extension.artifactory.configuration.ArtifactoryConfiguration)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 ArtifactoryClient (net.nemerosa.ontrack.extension.artifactory.client.ArtifactoryClient)1 ArtifactoryClientFactory (net.nemerosa.ontrack.extension.artifactory.client.ArtifactoryClientFactory)1 ArtifactoryConfigurationService (net.nemerosa.ontrack.extension.artifactory.configuration.ArtifactoryConfigurationService)1 ArtifactoryStatus (net.nemerosa.ontrack.extension.artifactory.model.ArtifactoryStatus)1 ArtifactoryPromotionSyncProperty (net.nemerosa.ontrack.extension.artifactory.property.ArtifactoryPromotionSyncProperty)1 ArtifactoryPromotionSyncPropertyType (net.nemerosa.ontrack.extension.artifactory.property.ArtifactoryPromotionSyncPropertyType)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 ConfigurationServiceListener (net.nemerosa.ontrack.model.support.ConfigurationServiceListener)1