GraphListener gives you access to a FlowNode but not a StepContext which sometimes has richer information. It also provides no straightforward way to block the execution of a step before it begins (though you can abort the build soon afterward). For some purposes it would be nice to have something like

      public interface StepListener extends ExtensionPoint {
        void newStep(Step step, StepContext context) throws Exception;
      }
      

      The natural place to call this would be right before Step.start, at which point all the abovementioned information is available, and any Exception can just be handled in onFailure just like a synchronous error from start would.

          [JENKINS-58084] Vetoable version of GraphListener

          Jesse Glick created issue -
          Andrew Bayer made changes -
          Assignee New: Andrew Bayer [ abayer ]
          Andrew Bayer made changes -
          Status Original: Open [ 1 ] New: In Progress [ 3 ]
          Andrew Bayer made changes -
          Remote Link New: This issue links to "workflow-api PR #96 (Web Link)" [ 23133 ]

          Andrew Bayer added a comment -

          Super-preliminary PRs up for workflow-api and workflow-cps.

          Andrew Bayer added a comment - Super-preliminary PRs up for workflow-api and workflow-cps.
          Andrew Bayer made changes -
          Remote Link New: This issue links to "workflow-cps PR #299 (Web Link)" [ 23134 ]

          Karl Shultz added a comment -

          This has been done and merged, thanks Andrew!

          Merged PRs:

          Karl Shultz added a comment - This has been done and merged, thanks Andrew! Merged PRs: workflow-api 96 workflow-cps 299
          Karl Shultz made changes -
          Resolution New: Done [ 10000 ]
          Status Original: In Progress [ 3 ] New: Resolved [ 5 ]

            abayer Andrew Bayer
            jglick Jesse Glick
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: