use of net.nemerosa.ontrack.extension.artifactory.client.ArtifactoryClient 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.client.ArtifactoryClient in project ontrack by nemerosa.
the class ArtifactoryConfigurationServiceImpl method validate.
@Override
protected ConnectionResult validate(ArtifactoryConfiguration configuration) {
try {
ArtifactoryClient client = artifactoryClientFactory.getClient(configuration);
// Gets the basic info
client.getBuildNames();
// OK
return ConnectionResult.ok();
} catch (Exception ex) {
return ConnectionResult.error(ex.getMessage());
}
}
use of net.nemerosa.ontrack.extension.artifactory.client.ArtifactoryClient in project ontrack by nemerosa.
the class ArtifactoryPromotionSyncServiceImplTest method setup.
@Before
public void setup() {
structureService = mock(StructureService.class);
propertyService = mock(PropertyService.class);
ArtifactoryClientFactory artifactoryClientFactory = mock(ArtifactoryClientFactory.class);
ArtifactoryConfigurationService configurationService = mock(ArtifactoryConfigurationService.class);
ArtifactoryConfProperties artifactoryConfProperties = new ArtifactoryConfProperties();
SecurityService securityService = mock(SecurityService.class);
doAnswer(invocation -> {
Supplier run = (Supplier) invocation.getArguments()[0];
return run.get();
}).when(securityService).asAdmin(any(Supplier.class));
service = new ArtifactoryPromotionSyncServiceImpl(structureService, propertyService, artifactoryClientFactory, configurationService, artifactoryConfProperties, securityService);
// Fake Artifactory client
artifactoryClient = mock(ArtifactoryClient.class);
when(artifactoryClientFactory.getClient(any())).thenReturn(artifactoryClient);
// Branch to sync
project = Project.of(new NameDescription("P", "Project")).withId(ID.of(1));
branch = Branch.of(project, new NameDescription("B", "Branch")).withId(ID.of(10));
// Existing build
build = Build.of(branch, new NameDescription("1.0.0", "Build 1.0.0"), Signature.of("test")).withId(ID.of(100));
when(structureService.findBuildByName("P", "B", "1.0.0")).thenReturn(Optional.of(build));
// Existing promotions
when(artifactoryClient.getStatuses(any())).thenReturn(Collections.singletonList(new ArtifactoryStatus("COPPER", "x", Time.now())));
// Existing promotion level
promotionLevel = PromotionLevel.of(branch, new NameDescription("COPPER", "Copper level")).withId(ID.of(100));
when(structureService.findPromotionLevelByName("P", "B", "COPPER")).thenReturn(Optional.of(promotionLevel));
}
Aggregations