package org.jfrog.bamboo.configuration;
import com.atlassian.bamboo.collections.ActionParametersMap;
import com.atlassian.bamboo.task.TaskDefinition;
import com.atlassian.bamboo.v2.build.agent.capability.CapabilityDefaultsHelper;
import com.google.common.collect.Lists;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jfrog.bamboo.admin.ServerConfig;
import org.jfrog.bamboo.context.AbstractBuildContext;
import org.jfrog.bamboo.context.IvyBuildContext;
import java.util.Map;
import java.util.Set;
/**
* Configuration for {@link org.jfrog.bamboo.task.ArtifactoryIvyTask}
*
* @author Tomer Cohen
*/
public class ArtifactoryIvyConfiguration extends AbstractArtifactoryConfiguration {
protected static final String DEFAULT_TEST_REPORTS_XML = "**/test-reports/*.xml";
private static final Set<String> FIELDS_TO_COPY = IvyBuildContext.getFieldsToCopy();
public ArtifactoryIvyConfiguration() {
super(IvyBuildContext.PREFIX, CapabilityDefaultsHelper.CAPABILITY_BUILDER_PREFIX + ".ivy");
}
@Override
protected String getKey() {
return "artifactoryIvyBuilder";
}
@Override
protected String getDeployableRepoKey() {
return IvyBuildContext.DEPLOYABLE_REPO_KEY;
}
@Override
protected String getDefaultTestDirectory() {
return DEFAULT_TEST_REPORTS_XML;
}
@Override
public void populateContextForCreate(@NotNull Map<String, Object> context) {
super.populateContextForCreate(context);
context.put("artifactoryIvyTask", this);
context.put("builderType", this);
context.put("builder", this);
context.put("adminConfig", administrationConfiguration);
context.put("baseUrl", administrationConfiguration.getBaseUrl());
context.put("build", context.get("plan"));
context.put("dummyList", Lists.newArrayList());
context.put("serverConfigManager", serverConfigManager);
context.put("selectedServerId", -1);
context.put("selectedRepoKey", "");
}
@Override
public void populateContextForEdit(@NotNull Map<String, Object> context, @NotNull TaskDefinition taskDefinition) {
super.populateContextForEdit(context, taskDefinition);
populateContextWithConfiguration(context, taskDefinition, FIELDS_TO_COPY);
String publishingKey = IvyBuildContext.PREFIX + IvyBuildContext.DEPLOYABLE_REPO_KEY;
String selectedPublishingRepoKey = context.get(publishingKey) != null ? context.get(publishingKey).toString() :
IvyBuildContext.NO_PUBLISHING_REPO_KEY_CONFIGURED;
context.put("selectedRepoKey", selectedPublishingRepoKey);
context.put("selectedServerId", context.get(IvyBuildContext.PREFIX + IvyBuildContext.SERVER_ID_PARAM));
context.put("serverConfigManager", serverConfigManager);
String envVarsExcludePatterns = (String) context.get(AbstractBuildContext.ENV_VARS_EXCLUDE_PATTERNS);
if (envVarsExcludePatterns == null) {
context.put(AbstractBuildContext.ENV_VARS_EXCLUDE_PATTERNS, "*password*,*secret*");
}
}
@NotNull
@Override
public Map<String, String> generateTaskConfigMap(@NotNull ActionParametersMap params,
@Nullable TaskDefinition previousTaskDefinition) {
Map<String, String> configMap = super.generateTaskConfigMap(params, previousTaskDefinition);
taskConfiguratorHelper.populateTaskConfigMapWithActionParameters(configMap, params, FIELDS_TO_COPY);
IvyBuildContext buildContext = new IvyBuildContext(configMap);
resetConfigIfNeeded(buildContext);
configMap.put(IvyBuildContext.PREFIX + IvyBuildContext.TEST_RESULT_DIRECTORY, getTestDirectory(buildContext));
decryptFields(configMap);
return configMap;
}
@Override
public boolean taskProducesTestResults(@NotNull TaskDefinition definition) {
return new IvyBuildContext(definition.getConfiguration()).isTestChecked();
}
}