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);
}
}
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);
}
Aggregations