protected int run() throws Exception { job.checkPermission(Item.BUILD); ParametersDefinitionProperty pdp = job.getProperty(ParametersDefinitionProperty.class); if (pdp==null) throw new IllegalStateException(job.getFullDisplayName()+" is not parameterized but the -p option was specified."); ParameterDefinition pd = pdp.getParameterDefinition(name); if (pd==null) { String nearest = EditDistance.findNearest(name, pdp.getParameterDefinitionNames()); throw new CmdLineException(null, nearest == null ? String.format("'%s' is not a valid parameter.", name) : String.format("'%s' is not a valid parameter. Did you mean %s?", name, nearest)); ParameterValue val = pd.createValue(this, Util.fixNull(e.getValue())); if (val == null) { throw new CmdLineException(null, String.format("Cannot resolve the value for the parameter '%s'.",name)); for(ParameterDefinition pd : pdp.getParameterDefinitions()) { if (parameters.containsKey(pd.getName())) continue; ParameterValue defaultValue = pd.getDefaultParameterValue(); if (defaultValue == null) { throw new CmdLineException(null, String.format("No default value for the parameter '%s'.",pd.getName())); a = new ParametersAction(values);
private Object readResolve() { return parameterDefinitions == null ? new ParametersDefinitionProperty() : this; }
/** * Standard implementation of {@link ParameterizedJob#doBuild}. */ @SuppressWarnings("deprecation") public final void doBuild(StaplerRequest req, StaplerResponse rsp, @QueryParameter TimeDuration delay) throws IOException, ServletException { if (delay == null) { delay=new TimeDuration(TimeUnit.MILLISECONDS.convert(asJob().getQuietPeriod(), TimeUnit.SECONDS)); } if (!asJob().isBuildable()) { throw HttpResponses.error(SC_CONFLICT, new IOException(asJob().getFullName() + " is not buildable")); } // if a build is parameterized, let that take over ParametersDefinitionProperty pp = asJob().getProperty(ParametersDefinitionProperty.class); if (pp != null && !req.getMethod().equals("POST")) { // show the parameter entry form. req.getView(pp, "index.jelly").forward(req, rsp); return; } hudson.model.BuildAuthorizationToken.checkPermission(asJob(), asJob().getAuthToken(), req, rsp); if (pp != null) { pp._doBuild(req, rsp, delay); return; } Queue.Item item = Jenkins.getInstance().getQueue().schedule2(asJob(), delay.getTimeInSeconds(), getBuildCause(asJob(), req)).getItem(); if (item != null) { rsp.sendRedirect(SC_CREATED, req.getContextPath() + '/' + item.getUrl()); } else { rsp.sendRedirect("."); } }
delay=new TimeDuration(TimeUnit.MILLISECONDS.convert(getJob().getQuietPeriod(), TimeUnit.SECONDS)); String name = jo.getString("name"); ParameterDefinition d = getParameterDefinition(name); if(d==null) throw new IllegalArgumentException("No such parameter definition: " + name); ParameterValue parameterValue = d.createValue(req, jo); if (parameterValue != null) { values.add(parameterValue); getJob(), delay.getTimeInSeconds(), new ParametersAction(values), new CauseAction(new Cause.UserIdCause())); if (item!=null) { String url = formData.optString("redirectTo");
protected int run() throws Exception { job.checkPermission(Item.BUILD); ParametersAction a = null; if (!parameters.isEmpty()) { ParametersDefinitionProperty pdp = job.getProperty(ParametersDefinitionProperty.class); if (pdp==null) throw new AbortException(job.getFullDisplayName()+" is not parameterized but the -p option was specified"); List<ParameterValue> values = new ArrayList<ParameterValue>(); for (Entry<String, String> e : parameters.entrySet()) { String name = e.getKey(); ParameterDefinition pd = pdp.getParameterDefinition(name); if (pd==null) throw new AbortException(String.format("\'%s\' is not a valid parameter. Did you mean %s?", name, EditDistance.findNearest(name, pdp.getParameterDefinitionNames()))); values.add(pd.createValue(this,e.getValue())); } for (ParameterDefinition pd : pdp.getParameterDefinitions()) { if (parameters.get(pd.getName()) == null) { values.add(pd.getDefaultParameterValue()); } } a = new ParametersAction(values); } Future<? extends AbstractBuild> f = job.scheduleBuild2(0, new CLICause(), a); if (!sync) return 0; AbstractBuild b = f.get(); // wait for the completion stdout.println("Completed "+b.getFullDisplayName()+" : "+b.getResult()); return b.getResult().ordinal; }
private Map<String, ParameterValue> getDefaultParameters() { Map<String, ParameterValue> values = new HashMap<String, ParameterValue>(); ParametersDefinitionProperty definitionProperty = this.job.getProperty(ParametersDefinitionProperty.class); if (definitionProperty != null) { for (ParameterDefinition definition : definitionProperty.getParameterDefinitions()) { values.put(definition.getName(), definition.getDefaultParameterValue()); } } return values; }
private List<ParameterValue> getDefaultParametersValues() { ParametersDefinitionProperty paramDefProp = asJob().getProperty(ParametersDefinitionProperty.class); ArrayList<ParameterValue> defValues = new ArrayList<ParameterValue>(); /* * This check is made ONLY if someone will call this method even if isParametrized() is false. */ if(paramDefProp == null) return defValues; /* Scan for all parameter with an associated default values */ for(ParameterDefinition paramDefinition : paramDefProp.getParameterDefinitions()) { ParameterValue defaultValue = paramDefinition.getDefaultParameterValue(); if(defaultValue != null) defValues.add(defaultValue); } return defValues; }
@Override public void evaluate() throws Throwable { WorkflowJob p = story.j.jenkins.createProject(WorkflowJob.class, "p"); p.addProperty(new ParametersDefinitionProperty(new StringParameterDefinition("param", ""))); p.setDefinition(new CpsFlowDefinition("echo \"run with ${param}\"", true)); WorkflowRun b1 = story.j.assertBuildStatusSuccess(p.scheduleBuild2(0, new ParametersAction(new StringParameterValue("param", "some value")))); story.j.assertLogContains("run with some value", b1); // When we replay a parameterized build, we expect the original parameter values to be set. WorkflowRun b2 = (WorkflowRun) b1.getAction(ReplayAction.class).run("echo \"run again with ${param}\"", Collections.<String,String>emptyMap()).get(); story.j.assertLogContains("run again with some value", story.j.assertBuildStatusSuccess(b2)); } });
private static ParametersAction getDefaultParameters(Job<?,?> project) { ParametersDefinitionProperty property = project.getProperty(ParametersDefinitionProperty.class); if (property == null) { return new ParametersAction(); } List<ParameterValue> parameters = new ArrayList<ParameterValue>(); for (ParameterDefinition pd : property.getParameterDefinitions()) { ParameterValue param = pd.getDefaultParameterValue(); if (param != null) { parameters.add(param); } } return new ParametersAction(parameters); } }
@Bug(4271) @Test public void parameterizedBuildsBranch() throws Exception { m.hg(repo, "init"); m.touchAndCommit(repo, "trunk"); m.hg(repo, "update", "null"); m.hg(repo, "branch", "b"); m.touchAndCommit(repo, "variant"); FreeStyleProject p = j.createFreeStyleProject(); p.setScm(new MercurialSCM(hgInstallation(), repo.getPath(), "${BRANCH}", null, null, null, false)); // SECURITY-170 - have to use ParametersDefinitionProperty p.addProperty(new ParametersDefinitionProperty(new StringParameterDefinition("BRANCH", "b"))); String log = m.buildAndCheck(p, "variant", new ParametersAction( new StringParameterValue("BRANCH", "b"))); assertTrue(log, log.contains("--rev b")); assertFalse(log, log.contains("--rev ${BRANCH}")); m.touchAndCommit(repo, "further-variant"); // the following assertion commented out as a part of the fix to // HUDSON-6126 // assertTrue(pollSCMChanges(p)); m.buildAndCheck(p, "further-variant", new ParametersAction( new StringParameterValue("BRANCH", "b"))); }
@Issue("JENKINS-22568") @Test @Ignore("TODO use docker-fixtures for a reproducible test case") public void pollingWithDefaultParametersWithOutCurlyBraces() throws Exception { FreeStyleProject p = r.createFreeStyleProject(); String repo = "https://svn.jenkins-ci.org"; String path = "/trunk/hudson/test-projects/trivial-ant/"; p.setScm(new SubversionSCM("$REPO" + path)); ParametersDefinitionProperty property = new ParametersDefinitionProperty(new StringParameterDefinition("REPO", repo)); p.addProperty(property); FreeStyleBuild b = p.scheduleBuild2(0, new Cause.UserIdCause(), new ParametersAction(new StringParameterValue("REPO", repo))).get(); r.assertBuildStatus(Result.SUCCESS,b); assertTrue(b.getWorkspace().child("build.xml").exists()); // as a baseline, this shouldn't detect any change TaskListener listener = r.createTaskListener(); PollingResult poll = p.poll(listener); assertFalse("Polling shouldn't have any changes.", poll.hasChanges()); }
if (reqPieces != null && reqPieces.length > 2) { for (Job j : Jenkins.getInstance().getAllItems(Job.class)) { if (j.getName().equals(reqPieces[2])) { List<JobProperty> jps = j.getAllProperties(); for (JobProperty jp : jps) { if (jp instanceof ParametersDefinitionProperty) { ParametersDefinitionProperty prop = (ParametersDefinitionProperty) jp; for (ParameterDefinition param : prop .getParameterDefinitions()) { allOverrides.put(param.getName(), param .getDefaultParameterValue().getValue() .toString());
private static ParametersAction getDefaultParameters(AbstractProject<?,?> project) { ParametersDefinitionProperty property = project.getProperty(ParametersDefinitionProperty.class); if (property == null) { return null; } List<ParameterValue> parameters = new ArrayList<ParameterValue>(); for (ParameterDefinition pd : property.getParameterDefinitions()) { ParameterValue param = pd.getDefaultParameterValue(); if (param != null) parameters.add(param); } return new ParametersAction(parameters); }
private static Map<String, ParameterDefinition> getParameterDefinitionsMap(Job<?,?> project) { HashMap<String, ParameterDefinition> m = new HashMap<String, ParameterDefinition>(); ParametersDefinitionProperty property = project.getProperty(ParametersDefinitionProperty.class); if (property != null) { for (ParameterDefinition pd : property.getParameterDefinitions()) { m.put(pd.getName(), pd); } } return m; }
/** * Same as {@link #getRevision()} but with <em>default</em> values of parameters expanded. */ private String getRevisionExpanded(Job<?,?> project, EnvVars env) { ParametersDefinitionProperty params = project.getProperty(ParametersDefinitionProperty.class); if (params != null) { for (ParameterDefinition param : params.getParameterDefinitions()) { if (param instanceof StringParameterDefinition) { String dflt = ((StringParameterDefinition) param).getDefaultValue(); if (dflt != null) { env.put(param.getName(), dflt); } } } } return getRevision(env); }
private Map<String, ParameterValue> getDefaultParameters() { Map<String, ParameterValue> values = new HashMap<>(); if (job != null) { ParametersDefinitionProperty definitionProperty = job.getProperty(ParametersDefinitionProperty.class); if (definitionProperty != null) { for (ParameterDefinition definition : definitionProperty.getParameterDefinitions()) { values.put(definition.getName(), definition.getDefaultParameterValue()); } } } return values; }
/** * Interprets the form submission and schedules a build for a parameterized job. * * <p> * This method is supposed to be invoked from {@link AbstractProject#doBuild(StaplerRequest, StaplerResponse)}. */ public void _doBuild(StaplerRequest req, StaplerResponse rsp) throws IOException, ServletException { if(!req.getMethod().equals("POST")) { // show the parameter entry form. req.getView(this,"index.jelly").forward(req,rsp); return; } List<ParameterValue> values = new ArrayList<ParameterValue>(); JSONObject formData = req.getSubmittedForm(); JSONArray a = JSONArray.fromObject(formData.get("parameter")); for (Object o : a) { JSONObject jo = (JSONObject) o; String name = jo.getString("name"); ParameterDefinition d = getParameterDefinition(name); if(d==null) throw new IllegalArgumentException("No such parameter definition: " + name); ParameterValue parameterValue = d.createValue(req, jo); values.add(parameterValue); } Hudson.getInstance().getQueue().schedule( owner, owner.getDelay(req), new ParametersAction(values), new CauseAction(new Cause.UserCause())); // send the user back to the job top page. rsp.sendRedirect("."); }
for (ParameterValue value : action.getParameters()) { String name = value.getName(); ParameterDefinition pd = pdp.getParameterDefinition(name); if (pd == null) { continue; // This project does not have this parameter final String location = pd.getName(); File file = new File( masterBuild.getRootDir(), return new ParametersAction(values);
public InheritanceParametersDefinitionProperty( AbstractProject<?,?> owner, ParametersDefinitionProperty other) { this(owner, other.getParameterDefinitions()); }
@Issue("JENKINS-44621") @Test public void externalParamsNotRemoved() throws Exception { WorkflowRun b = getAndStartNonRepoBuild("simpleParameters"); j.assertBuildStatusSuccess(j.waitForCompletion(b)); WorkflowJob job = b.getParent(); ParametersDefinitionProperty paramProp = job.getProperty(ParametersDefinitionProperty.class); assertNotNull(paramProp); assertEquals(1, paramProp.getParameterDefinitions().size()); List<ParameterDefinition> newParams = new ArrayList<>(); newParams.addAll(paramProp.getParameterDefinitions()); newParams.add(new StringParameterDefinition("DO_NOT_DELETE", "something")); job.removeProperty(paramProp); job.addProperty(new ParametersDefinitionProperty(newParams)); job.setDefinition(new CpsFlowDefinition(pipelineSourceFromResources("propsTriggersParamsRemoved"), true)); j.buildAndAssertSuccess(job); ParametersDefinitionProperty newProp = job.getProperty(ParametersDefinitionProperty.class); assertNotNull(newProp); assertEquals(1, newProp.getParameterDefinitions().size()); ParameterDefinition paramDef = newProp.getParameterDefinition("DO_NOT_DELETE"); assertNotNull(paramDef); } }