private void executeBuild() throws Exception { WorkflowRun b = getAndStartBuild(); j.assertBuildStatusSuccess(j.waitForCompletion(b)); } }
@Override public void evaluate() throws Throwable { WorkflowJob p = story.j.jenkins.getItemByFullName("p", WorkflowJob.class); WorkflowRun b = p.getBuildByNumber(1); SemaphoreStep.success("wait/1", null); story.j.assertBuildStatusSuccess(story.j.waitForCompletion(b)); } });
@Override public void evaluate() throws Throwable { rebuildContext(story.j); assertThatWorkflowIsSuspended(); SemaphoreStep.success("wait/1", null); story.j.assertBuildStatusSuccess(story.j.waitForCompletion(b)); } });
@Override public void evaluate() throws Throwable { WorkflowJob p = story.j.jenkins.getItemByFullName("p", WorkflowJob.class); WorkflowRun b = p.getLastBuild(); story.j.assertLogContains("I am done", story.j.assertBuildStatusSuccess(story.j.waitForCompletion(b))); } });
@Override public void evaluate() throws Throwable { SemaphoreStep.success("wait/1", null); WorkflowJob p = story.j.jenkins.getItemByFullName("p", WorkflowJob.class); WorkflowRun b = p.getLastBuild(); story.j.assertLogContains("subsequently two", story.j.waitForCompletion(b)); } });
@Override public void evaluate() throws Throwable { rebuildContext(story.j); assertThatWorkflowIsSuspended(); for (int i = 0; i < 600 && !Queue.getInstance().isEmpty(); i++) { Thread.sleep(100); } liveness(); SemaphoreStep.success("wait/1", null); story.j.assertBuildStatusSuccess(story.j.waitForCompletion(b)); } });
@Override public void evaluate() throws Throwable { WorkflowJob p = story.j.jenkins.createProject(WorkflowJob.class, "stashWithLoadCount"); p.setDefinition(new CpsFlowDefinition(pipelineSourceFromResources("properties/stashWithLoadCount"), true)); // Build 10 times to make sure get 10 total builds. for (int i = 0; i < 10; i++) { story.j.waitForCompletion(p.scheduleBuild2(0).waitForStart()); } } });
@Issue("JENKINS-47780") @Test public void actualTriggerCorrectScope() throws Exception { WorkflowRun b = getAndStartNonRepoBuild("simpleTriggers"); j.assertBuildStatusSuccess(j.waitForCompletion(b)); expect("actualTriggerCorrectScope") .go(); } }
@Override public void evaluate() throws Throwable { WorkflowRun b = rr.j.jenkins.getItemByFullName("p", WorkflowJob.class).getLastBuild(); SemaphoreStep.success("new-one/1", null); SemaphoreStep.success("new-two/1", null); rr.j.waitForCompletion(b); rr.j.assertBuildStatusSuccess(b); rr.j.assertLogContains("running new-style loop on two", b); } });
@Override public void evaluate() throws Throwable { rebuildContext(story.j); SemaphoreStep.success("b/1", null); SemaphoreStep.waitForStart("c/1", b); SemaphoreStep.success("c/1", null); story.j.assertBuildStatusSuccess(story.j.waitForCompletion(b)); story.j.assertLogContains("abc", b); } });
@Override public void evaluate() throws Throwable { WorkflowJob p = rr.j.jenkins.getItemByFullName("p", WorkflowJob.class); WorkflowRun b = p.getBuildByNumber(1); SemaphoreStep.success("wait/1", null); rr.j.assertBuildStatusSuccess(rr.j.waitForCompletion(b)); SemaphoreStep.success("wait/2", null); rr.j.buildAndAssertSuccess(p); } });
@Issue("JENKINS-50880") @Test public void whenBeforeInputFalse() throws Exception { String whenFile = "whenBeforeInputFalse"; WorkflowJob p = j.jenkins.createProject(WorkflowJob.class, whenFile); p.setDefinition(new CpsFlowDefinition(pipelineSourceFromResources(whenFile), true)); // get the build going, and wait until workflow pauses QueueTaskFuture<WorkflowRun> q = p.scheduleBuild2(0); WorkflowRun b = q.getStartCondition().get(); CpsFlowExecution e = (CpsFlowExecution) b.getExecutionPromise().get(); j.assertBuildStatusSuccess(j.waitForCompletion(b)); j.assertLogNotContains("X-NO-SHOW-X", b); }
@Override public void evaluate() throws Throwable { WorkflowRun b = rr.j.jenkins.getItemByFullName("p", WorkflowJob.class).getLastBuild(); SemaphoreStep.success("new-one/1", null); SemaphoreStep.success("new-two/1", null); rr.j.waitForCompletion(b); rr.j.assertBuildStatusSuccess(b); rr.j.assertLogContains("running new-style loop on two -> 2", b); } });
@Override public void evaluate() throws Throwable { WorkflowJob p = rr.j.jenkins.getItemByFullName("p", WorkflowJob.class); assertNotNull(p); WorkflowRun b = p.getBuildByNumber(1); SemaphoreStep.success("wait/1", null); rr.j.assertBuildStatusSuccess(rr.j.waitForCompletion(b)); SemaphoreStep.success("wait/2", null); rr.j.buildAndAssertSuccess(p); } });
@Override public void evaluate() throws Throwable { WorkflowJob p = story.j.jenkins.getItemByFullName("p", WorkflowJob.class); WorkflowRun b3 = p.getLastBuild(); assertEquals(3, b3.getNumber()); // Resume #3, and verify that the build completes with the expected replacements. SemaphoreStep.success("wait/3", null); story.j.waitForCompletion(b3); story.j.assertLogNotContains("trying edits", b3); story.j.assertLogContains("new first part", b3); story.j.assertLogContains("newer second part", b3); } });
@Issue("JENKINS-44149") @Test public void paramsRemoved() 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()); job.setDefinition(new CpsFlowDefinition(pipelineSourceFromResources("propsTriggersParamsRemoved"), true)); j.buildAndAssertSuccess(job); assertNull(job.getProperty(ParametersDefinitionProperty.class)); }
@Issue("JENKINS-44149") @Test public void triggersRemoved() throws Exception { WorkflowRun b = getAndStartNonRepoBuild("simpleTriggers"); j.assertBuildStatusSuccess(j.waitForCompletion(b)); WorkflowJob job = b.getParent(); PipelineTriggersJobProperty triggersJobProperty = job.getProperty(PipelineTriggersJobProperty.class); assertNotNull(triggersJobProperty); assertEquals(1, triggersJobProperty.getTriggers().size()); job.setDefinition(new CpsFlowDefinition(pipelineSourceFromResources("propsTriggersParamsRemoved"), true)); j.buildAndAssertSuccess(job); assertNull(job.getProperty(PipelineTriggersJobProperty.class)); }
@Override public void evaluate() throws Throwable { WorkflowJob p = jenkins.getItemByFullName("p", WorkflowJob.class); WorkflowRun b = p.getBuildByNumber(2); SemaphoreStep.success("wait/1", null); story.j.assertLogContains("a ran on value from b", story.j.assertBuildStatusSuccess(story.j.waitForCompletion(b))); // Better case: jenkins.getWorkspaceFor(p).child("b.groovy").write("def m(a, arg) {a(\"${arg} from b\")}; this", null); p.setDefinition(new CpsFlowDefinition("def a; def b; node {a = load 'a.groovy'; b = load 'b.groovy'}; b.m(a, 'value')", true)); story.j.assertLogContains("a ran on value from b", story.j.assertBuildStatusSuccess(p.scheduleBuild2(0))); } });
@Issue("JENKINS-44149") @Test public void propsRemoved() throws Exception { WorkflowRun b = getAndStartNonRepoBuild("simpleJobProperties"); j.assertBuildStatusSuccess(j.waitForCompletion(b)); WorkflowJob job = b.getParent(); assertNotNull(job.getProperty(BuildDiscarderProperty.class)); job.setDefinition(new CpsFlowDefinition(pipelineSourceFromResources("propsTriggersParamsRemoved"), true)); j.buildAndAssertSuccess(job); assertNull(job.getProperty(BuildDiscarderProperty.class)); }
@Issue("JENKINS-51227") @Test public void quietPeriodRemoved() throws Exception { WorkflowRun b = getAndStartNonRepoBuild("quietPeriod"); j.assertBuildStatusSuccess(j.waitForCompletion(b)); WorkflowJob job = b.getParent(); assertEquals(15, job.getQuietPeriod()); job.setDefinition(new CpsFlowDefinition(pipelineSourceFromResources("propsTriggersParamsRemoved"), true)); j.buildAndAssertSuccess(job); assertEquals(j.jenkins.getQuietPeriod(), job.getQuietPeriod()); }