use of hudson.plugins.promoted_builds.PromotionBadge in project promoted-builds-plugin by jenkinsci.
the class GroovyCondition method isMet.
@Override
public PromotionBadge isMet(final PromotionProcess promotionProcess, final AbstractBuild<?, ?> build) {
// TODO switch to Jenkins.getActiveInstance() once bumped to 1.590
final Jenkins jenkins = Jenkins.getInstance();
if (jenkins == null) {
// Jenkins not started or shut down
LOGGER.log(Level.WARNING, "Missing Jenkins instance");
return null;
}
final PluginManager pluginManager = jenkins.getPluginManager();
if (pluginManager == null) {
LOGGER.log(Level.WARNING, "Unable to retrieve PluginManager");
return null;
}
final ClassLoader classLoader = pluginManager.uberClassLoader;
final Binding binding = new Binding();
binding.setVariable("promotionProcess", promotionProcess);
binding.setVariable("build", build);
binding.setVariable("jenkins", jenkins);
Object result = null;
try {
result = script.evaluate(classLoader, binding);
} catch (final RejectedAccessException e) {
LOGGER.log(Level.WARNING, "Sandbox exception", e);
return null;
} catch (final UnapprovedUsageException e) {
LOGGER.log(Level.WARNING, "Unapproved script", e);
return null;
} catch (final UnapprovedClasspathException e) {
LOGGER.log(Level.WARNING, "Unapproved classpath", e);
return null;
} catch (final Exception e) {
LOGGER.log(Level.WARNING, "Evaluation error", e);
return null;
}
final String displayLabel = metQualificationLabel == null ? Messages.GroovyCondition_MetQualificationLabel() : metQualificationLabel;
if (Boolean.TRUE.equals(result)) {
return new Badge(displayLabel, Collections.<String, String>emptyMap());
} else if (result instanceof Map && !((Map) result).isEmpty()) {
final Map<String, String> variables = new HashMap<String, String>(((Map) result).size());
for (final Map.Entry entry : ((Map<Object, Object>) result).entrySet()) {
final Object key = entry.getKey();
final Object value = entry.getValue();
if (key == null) {
continue;
}
variables.put(key.toString(), value == null ? "" : value.toString());
}
return new Badge(displayLabel, variables);
}
return null;
}
use of hudson.plugins.promoted_builds.PromotionBadge in project promoted-builds-plugin by jenkinsci.
the class UpstreamPromotionCondition method isMet.
@Override
public PromotionBadge isMet(PromotionProcess promotionProcess, AbstractBuild<?, ?> build) {
Badge badge = new Badge();
Set<String> requiredPromotions = getRequiredPromotionNamesAsSet();
if (requiredPromotions.isEmpty()) {
return badge;
}
PromotedBuildAction pba = build.getAction(PromotedBuildAction.class);
if (pba == null) {
return null;
}
for (Status status : pba.getPromotions()) {
if (status.isPromotionSuccessful()) {
requiredPromotions.remove(status.getName());
badge.add(status.getName());
// short circuit for loop if
if (requiredPromotions.isEmpty())
break;
}
}
return requiredPromotions.isEmpty() ? badge : null;
}
use of hudson.plugins.promoted_builds.PromotionBadge in project promoted-builds-plugin by jenkinsci.
the class DownstreamPassCondition method isMet.
@Override
public PromotionBadge isMet(PromotionProcess promotionProcess, AbstractBuild<?, ?> build) {
Badge badge = new Badge();
PseudoDownstreamBuilds pdb = build.getAction(PseudoDownstreamBuilds.class);
EnvVars buildEnvironment = new EnvVars(build.getBuildVariables());
OUTER: for (AbstractProject<?, ?> j : getJobList(build.getProject().getParent(), buildEnvironment)) {
for (AbstractBuild<?, ?> b : build.getDownstreamBuilds(j)) {
if (!b.isBuilding()) {
Result r = b.getResult();
if ((r == Result.SUCCESS) || (evenIfUnstable && r == Result.UNSTABLE)) {
badge.add(b);
continue OUTER;
}
}
}
if (pdb != null) {
// if fingerprint doesn't have any, try the pseudo-downstream
for (AbstractBuild<?, ?> b : pdb.listBuilds(j)) {
if (!b.isBuilding()) {
Result r = b.getResult();
if ((r == Result.SUCCESS) || (evenIfUnstable && r == Result.UNSTABLE)) {
badge.add(b);
continue OUTER;
}
}
}
}
// none of the builds of this job passed.
return null;
}
return badge;
}
Aggregations