@Override public SCMTrigger getSCMTrigger() { for (Trigger t : getTriggersJobProperty().getTriggers()) { if (t instanceof SCMTrigger) { return (SCMTrigger) t; } } return null; }
@Override public Map<TriggerDescriptor, Trigger<?>> getTriggers() { return getTriggersJobProperty().getTriggersMap(); }
@Override public @Nonnull Collection<? extends Action> createFor(@Nonnull WorkflowJob job) { return job.getTriggersJobProperty().getAllTriggerActions(); }
@Override public void addProperty(JobProperty jobProp) throws IOException { super.addProperty(jobProp); getTriggersJobProperty().stopTriggers(); getTriggersJobProperty().startTriggers(Items.currentlyUpdatingByXml()); }
PipelineTriggersJobProperty oldProp = owner.getTriggersJobProperty(); if (owner.getTriggersJobProperty() == null && oldProp != null) { try { owner.addTriggersJobPropertyWithoutStart(oldProp);
@Override public void onLoad(ItemGroup<? extends Item> parent, String name) throws IOException { super.onLoad(parent, name); if (buildMixIn == null) { buildMixIn = createBuildMixIn(); } buildMixIn.onLoad(parent, name); if (triggers != null && !triggers.isEmpty()) { setTriggers(triggers.toList()); } if (concurrentBuild != null) { setConcurrentBuild(concurrentBuild); } getTriggersJobProperty().stopTriggers(); getTriggersJobProperty().startTriggers(Items.currentlyUpdatingByXml()); }
public void setTriggers(List<Trigger<?>> inputTriggers) throws IOException { triggers = null; BulkChange bc = new BulkChange(this); try { PipelineTriggersJobProperty originalProp = getTriggersJobProperty(); removeProperty(PipelineTriggersJobProperty.class); PipelineTriggersJobProperty triggerProp = new PipelineTriggersJobProperty(null); triggerProp.setTriggers(inputTriggers); addProperty(triggerProp); bc.commit(); originalProp.stopTriggers(); // No longer need to start triggers here - that's done by when we add the property. } finally { bc.abort(); } }
public void addTrigger(Trigger trigger) throws IOException { BulkChange bc = new BulkChange(this); try { PipelineTriggersJobProperty originalProp = getTriggersJobProperty(); Trigger old = originalProp.getTriggerForDescriptor(trigger.getDescriptor()); if (old != null) { originalProp.removeTrigger(old); old.stop(); } originalProp.addTrigger(trigger); removeProperty(PipelineTriggersJobProperty.class); addProperty(originalProp); bc.commit(); } finally { bc.abort(); } }
@Test public void scmAndEmptyTriggersProperty() throws Exception { WorkflowJob p = r.jenkins.createProject(WorkflowJob.class, "p"); // Verify the base case behavior. p.setDefinition(new CpsFlowDefinition("echo 'foo'")); assertTrue(p.getTriggers().isEmpty()); r.assertBuildStatusSuccess(p.scheduleBuild2(0)); // Make sure the triggers are still empty. assertTrue(p.getTriggers().isEmpty()); // Now add a trigger. Deliberately keeping the old syntax to make sure it still works. p.setDefinition(new CpsFlowDefinition( "properties([pipelineTriggers([pollSCM(scmpoll_spec: '@daily')])])\n" + "echo 'foo'", true)); WorkflowRun b = r.assertBuildStatusSuccess(p.scheduleBuild2(0)); assertEquals(1, p.getTriggers().size()); PipelineTriggersJobProperty triggerProp = p.getTriggersJobProperty(); SCMTrigger scmTrigger = getTriggerFromList(SCMTrigger.class, triggerProp.getTriggers()); assertNotNull(scmTrigger); assertEquals("@daily", scmTrigger.getSpec()); // Now run a properties step with an empty triggers property and verify that we still have a // PipelineTriggersJobProperty, but with no triggers in it. p.setDefinition(new CpsFlowDefinition("properties([pipelineTriggers()])\n" + "echo 'foo'")); WorkflowRun b2 = r.assertBuildStatusSuccess(p.scheduleBuild2(0)); assertNotNull(p.getTriggersJobProperty()); assertTrue(p.getTriggers().isEmpty()); }
PipelineTriggersJobProperty triggerProp = p.getTriggersJobProperty(); assertNotNull(p.getTriggersJobProperty());
@Test public void serializationTriggersGString() throws Exception { WorkflowRun b = expect("serializationTriggersGString") .logContains("[Pipeline] { (foo)", "hello") .logNotContains("[Pipeline] { (Post Actions)") .go(); WorkflowJob p = b.getParent(); PipelineTriggersJobProperty triggersJobProperty = p.getTriggersJobProperty(); assertNotNull(triggersJobProperty); assertEquals(1, triggersJobProperty.getTriggers().size()); TimerTrigger.DescriptorImpl timerDesc = j.jenkins.getDescriptorByType(TimerTrigger.DescriptorImpl.class); Trigger trigger = triggersJobProperty.getTriggerForDescriptor(timerDesc); assertNotNull(trigger); assertTrue(trigger instanceof TimerTrigger); TimerTrigger timer = (TimerTrigger) trigger; assertEquals("@daily", timer.getSpec()); }
@Test public void simpleTriggers() throws Exception { WorkflowRun b = expect("simpleTriggers") .logContains("[Pipeline] { (foo)", "hello") .logNotContains("[Pipeline] { (Post Actions)") .go(); WorkflowJob p = b.getParent(); PipelineTriggersJobProperty triggersJobProperty = p.getTriggersJobProperty(); assertNotNull(triggersJobProperty); assertEquals(1, triggersJobProperty.getTriggers().size()); TimerTrigger.DescriptorImpl timerDesc = j.jenkins.getDescriptorByType(TimerTrigger.DescriptorImpl.class); Trigger trigger = triggersJobProperty.getTriggerForDescriptor(timerDesc); assertNotNull(trigger); assertTrue(trigger instanceof TimerTrigger); TimerTrigger timer = (TimerTrigger) trigger; assertEquals("@daily", timer.getSpec()); }
PipelineTriggersJobProperty triggerProp = p.getTriggersJobProperty(); assertNotNull(p.getTriggersJobProperty());
@Ignore("Triggers are set before withEnv is called.") @Test public void envVarInTriggers() throws Exception { WorkflowRun b = expect("envVarInTriggers") .logContains("[Pipeline] { (foo)", "hello") .logNotContains("[Pipeline] { (Post Actions)") .go(); WorkflowJob p = b.getParent(); PipelineTriggersJobProperty triggersJobProperty = p.getTriggersJobProperty(); assertNotNull(triggersJobProperty); assertEquals(1, triggersJobProperty.getTriggers().size()); TimerTrigger.DescriptorImpl timerDesc = j.jenkins.getDescriptorByType(TimerTrigger.DescriptorImpl.class); Trigger trigger = triggersJobProperty.getTriggerForDescriptor(timerDesc); assertNotNull(trigger); assertTrue(trigger instanceof TimerTrigger); TimerTrigger timer = (TimerTrigger) trigger; assertEquals("@daily", timer.getSpec()); }