package org.jfrog.bamboo.configuration; import com.atlassian.bamboo.collections.ActionParametersMap; import com.atlassian.bamboo.plan.Plan; import com.atlassian.bamboo.task.TaskDefinition; import com.google.common.collect.Lists; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jfrog.bamboo.context.AbstractBuildContext; import org.jfrog.bamboo.context.GradleBuildContext; import java.util.Map; import java.util.Set; /** * Configuration for {@link org.jfrog.bamboo.task.ArtifactoryGradleTask} * * @author Tomer Cohen */ public class ArtifactoryGradleConfiguration extends AbstractArtifactoryConfiguration { protected static final String DEFAULT_TEST_REPORTS_XML = "**/build/test-results/*.xml"; private static final Set<String> FIELDS_TO_COPY = GradleBuildContext.getFieldsToCopy(); public ArtifactoryGradleConfiguration() { super(GradleBuildContext.PREFIX); } @Override public void populateContextForCreate(@NotNull Map<String, Object> context) { super.populateContextForCreate(context); context.put("artifactoryGradleTask", this); context.put("builderType", this); context.put("builder", this); context.put("adminConfig", administrationConfiguration); context.put("baseUrl", administrationConfiguration.getBaseUrl()); Plan plan = (Plan) context.get("plan"); context.put("build", plan); context.put("dummyList", Lists.newArrayList()); context.put("serverConfigManager", serverConfigManager); context.put("selectedServerId", -1); context.put("selectedResolutionRepoKey", ""); context.put("selectedPublishingRepoKey", ""); context.put("builder.artifactoryGradleBuilder.gitReleaseBranch", "REL-BRANCH-"); context.put("artifactory.vcs.git.vcs.type.list", getVcsTypes()); context.put("artifactory.vcs.git.authenticationType.list", getGitAuthenticationTypes()); } @Override public void populateContextForEdit(@NotNull Map<String, Object> context, @NotNull TaskDefinition taskDefinition) { super.populateContextForEdit(context, taskDefinition); populateContextWithConfiguration(context, taskDefinition, FIELDS_TO_COPY); context.put("selectedServerId", context.get(GradleBuildContext.PREFIX + GradleBuildContext.SERVER_ID_PARAM)); String resolutionRepoKey = GradleBuildContext.PREFIX + GradleBuildContext.RESOLUTION_REPO_PARAM; String selectedResolutionRepoKey = context.get(resolutionRepoKey) != null ? context.get(resolutionRepoKey).toString() : GradleBuildContext.NO_RESOLUTION_REPO_KEY_CONFIGURED; context.put("selectedResolutionRepoKey", selectedResolutionRepoKey); String publishingKey = GradleBuildContext.PREFIX + GradleBuildContext.PUBLISHING_REPO_PARAM; String selectedPublishingRepoKey = context.get(publishingKey) != null ? context.get(publishingKey).toString() : GradleBuildContext.NO_PUBLISHING_REPO_KEY_CONFIGURED; context.put("selectedPublishingRepoKey", selectedPublishingRepoKey); GradleBuildContext buildContext = GradleBuildContext.createGradleContextFromMap(context); context.put("hasTests", buildContext.isTestChecked()); 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*"); } context.put("artifactory.vcs.git.vcs.type.list", getVcsTypes()); context.put("artifactory.vcs.git.authenticationType.list", getGitAuthenticationTypes()); } @NotNull @Override public Map<String, String> generateTaskConfigMap(@NotNull ActionParametersMap params, @Nullable TaskDefinition previousTaskDefinition) { Map<String, String> taskConfigMap = super.generateTaskConfigMap(params, previousTaskDefinition); taskConfiguratorHelper.populateTaskConfigMapWithActionParameters(taskConfigMap, params, FIELDS_TO_COPY); GradleBuildContext buildContext = new GradleBuildContext(taskConfigMap); resetConfigIfNeeded(buildContext); taskConfigMap.put(GradleBuildContext.PREFIX + GradleBuildContext.TEST_RESULT_DIRECTORY, getTestDirectory(buildContext)); taskConfigMap.putAll(super.getSshFileContent(params, previousTaskDefinition)); decryptFields(taskConfigMap); return taskConfigMap; } @Override protected String getKey() { return "artifactoryGradleBuilder"; } @Override protected String getDeployableRepoKey() { return GradleBuildContext.PUBLISHING_REPO_PARAM; } @Override protected String getDefaultTestDirectory() { return DEFAULT_TEST_REPORTS_XML; } @Override public boolean taskProducesTestResults(@NotNull TaskDefinition definition) { return new GradleBuildContext(definition.getConfiguration()).isTestChecked(); } }