Skip to content

Commit

Permalink
#12: scheduled trigger builds fails to start.
Browse files Browse the repository at this point in the history
  • Loading branch information
grundic committed Nov 7, 2016
1 parent 9fbeb7d commit 58a169c
Show file tree
Hide file tree
Showing 3 changed files with 70 additions and 2 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

classes/
.gradle/
build/
/build/
out/
target/
*.iml
Expand Down
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ apply plugin: 'java'
apply plugin: 'com.github.rodm.teamcity-server'

group = 'ru.mail.teamcity'
version = '1.6.1'
version = '1.6.2'

repositories {
mavenCentral()
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
package ru.mail.teamcity.web.parameters.build;

import com.google.common.base.Joiner;
import jetbrains.buildServer.serverSide.*;
import org.jetbrains.annotations.NotNull;
import ru.mail.teamcity.web.parameters.Constants;
import ru.mail.teamcity.web.parameters.data.Option;
import ru.mail.teamcity.web.parameters.data.Options;
import ru.mail.teamcity.web.parameters.manager.RequestConfiguration;
import ru.mail.teamcity.web.parameters.manager.WebOptionsManager;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

/**
* User: g.chernyshev
* Date: 05/03/16
* Time: 14:32
*/
public class DynamicWebBuildStartContextProcessor implements BuildStartContextProcessor {

@NotNull
private final WebOptionsManager webOptionsManager;

public DynamicWebBuildStartContextProcessor(@NotNull WebOptionsManager webOptionsManager) {
this.webOptionsManager = webOptionsManager;
}

@Override
public void updateParameters(@NotNull BuildStartContext context) {
SBuildType buildType = context.getBuild().getBuildType();
if (null == buildType) {
return;
}

Collection<Parameter> buildParameters = buildType.getParametersCollection();
for (Parameter parameter : buildParameters) {
ControlDescription description = parameter.getControlDescription();
// check if parameter is of web param provider type
if (null != description && description.getParameterType().equals(Constants.PARAMETER_TYPE)) {
String buildValue = context.getBuild().getBuildOwnParameters().get(parameter.getName());
// check if value from build is not provided and we don't have any default value
if (buildValue.isEmpty() && parameter.getValue().isEmpty()) {
Map<String, String> config = description.getParameterTypeArguments();
Map<String, String> errors = new HashMap<>();

RequestConfiguration configuration = new RequestConfiguration(config, buildType.getValueResolver());
configuration.process();

Options options = webOptionsManager.read(configuration, errors);
if (!errors.isEmpty()) {
throw new RuntimeException("Something went wrong during web parameters initialization:\n" +
Joiner.on("\n").join(errors.values())
);
}

for (Option option : options.getOptions()) {
if (option.isEnabled() && option.isDefault()) {
context.addSharedParameter(parameter.getName(), option.getValue());
break;
}
}
}
}
}
}
}

0 comments on commit 58a169c

Please sign in to comment.