@Test public void parameters() throws Exception { WorkflowJob us = j.jenkins.createProject(WorkflowJob.class, "us"); FreeStyleProject ds = j.jenkins.createProject(FreeStyleProject.class, "ds"); ds.addProperty( new ParametersDefinitionProperty( new StringParameterDefinition("branch", "master"), new BooleanParameterDefinition("extra", false, null))); ds.getBuildersList().add(new Shell("echo branch=$branch extra=$extra")); us.setDefinition(new CpsFlowDefinition("build 'ds'")); WorkflowRun us1 = j.assertBuildStatusSuccess(us.scheduleBuild2(0)); FreeStyleBuild ds1 = ds.getBuildByNumber(1); j.assertLogContains("branch=master extra=false", ds1); Cause.UpstreamCause cause = ds1.getCause(Cause.UpstreamCause.class); assertNotNull(cause); assertEquals(us1, cause.getUpstreamRun()); us.setDefinition( new CpsFlowDefinition( "build job: 'ds', parameters: [[$class: 'StringParameterValue', name: 'branch', value: 'release']]", true)); j.assertBuildStatusSuccess(us.scheduleBuild2(0)); // TODO JENKINS-13768 proposes automatic filling in of default parameter values; should that be // used, or is BuildTriggerStepExecution responsible, or ParameterizedJobMixIn.scheduleBuild2? j.assertLogContains("branch=release extra=", ds.getBuildByNumber(2)); us.setDefinition( new CpsFlowDefinition( "build job: 'ds', parameters: [[$class: 'StringParameterValue', name: 'branch', value: 'release'], [$class: 'BooleanParameterValue', name: 'extra', value: true]]", true)); j.assertBuildStatusSuccess(us.scheduleBuild2(0)); j.assertLogContains("branch=release extra=true", ds.getBuildByNumber(3)); }
@Override public void onDeploying(AbstractBuild<?, ?> build, String instanceId, ElasticBoxCloud cloud) throws IOException, InterruptedException { AbstractBuild<?, ?> rootBuild = build; for (Cause.UpstreamCause upstreamCause = build.getCause(Cause.UpstreamCause.class); upstreamCause != null; upstreamCause = rootBuild.getCause(Cause.UpstreamCause.class)) { Run<?, ?> run = upstreamCause.getUpstreamRun(); if (run == null) { break; } rootBuild = (AbstractBuild<?, ?>) run; } TriggerCause cause = rootBuild.getCause(TriggerCause.class); if (cause == null) { return; } ConcurrentHashMap<String, PullRequestData> prDataLookup = getInstance().projectPullRequestDataLookup.get(rootBuild.getProject()); if (prDataLookup != null) { PullRequestData data = prDataLookup.get(cause.getPullRequest().getHtmlUrl().toString()); if (data == null) { data = getInstance().addPullRequestData(cause.getPullRequest(), rootBuild.getProject()); } data.getInstances().add(new PullRequestInstance(instanceId, cloud.name)); data.save(); } }