Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-44981

Developer can see node steps within the step listing

    • Icon: Story Story
    • Resolution: Unresolved
    • Icon: Major Major
    • blueocean-plugin
    • None
    • Blue Ocean 1.2-beta1, Blue Ocean 1.2-beta2, Blue Ocean 1.2-beta3, Blue Ocean 1.2-beta4, Blue Ocean 1.2, Blue Ocean 1.3, Blue Ocean 1.4 - beta 1, Blue Ocean 1.4 - beta 3, Blue Ocean 1.4 - beta 2, Blue Ocean 1.6 - beta 2, Blue Ocean - 1.6 - beta 4

      Scope

      • Show the start of a node step as a Step in the Blue Ocean UI
      • Its description should be
        • its "cause of blockage" when blocked
        • its "agent value" when executed or running
      • Name is "allocate-node" - can we set a more user friendly name?
        • "node" as this matches the step name
      • Statuses
        • Allocating node is queued
        • Allocated node is success
        • Aborted node step is aborted (might need other changes from the refactor)
      • We need at a minimum some unit tests in Blue Ocean

      Out of scope

      • Indenting block scoped steps, etc

          [JENKINS-44981] Developer can see node steps within the step listing

          Andrew Bayer added a comment - - edited

          So initial investigation:

          • WorkspaceAction actually has all the info you'd want once the node block has actually landed on an agent and is running - it's on the StartStartNode FlowNode for the ExecutorStep, it's got methods like action.getNode() (which returns "" for master and the agent name for anything else) and action.getPath() for the workspace path, etc. It also shows up on StepStartNode for WorkspaceStep, but that's easy enough to distinguish. Buuuuut...
          • That leaves us with needing an action for queuing/cause of blockage, and no way of recording any additional information we might want (like time in queue - though I suppose you could reverse engineer that from the TimingAction on the StepStartNode with the WorkspaceAction and the second StepStartNode with isBody() == true. I dunno - I've never quite grokked why there are two StepStartNode for things like ExecutorStep). So I'm leaning towards a new action after all.
          • "Allocate node" is the display name for ExecutorStep - so if we want something different there, we'd need to special-case ExecutorStep.
          • re: aborted status - probably the simplest thing would be just to check if the StepStartNode for ExecutorStep (a) has a StepEndNode corresponding to it and (b) doesn't have a WorkspaceAction. That'd pretty directly mean it was aborted. But hey, if we're going with a new action, we can embed this too.

          Andrew Bayer added a comment - - edited So initial investigation: WorkspaceAction actually has all the info you'd want once the node block has actually landed on an agent and is running - it's on the StartStartNode FlowNode for the ExecutorStep , it's got methods like action.getNode() (which returns "" for master and the agent name for anything else) and action.getPath() for the workspace path, etc. It also shows up on StepStartNode for WorkspaceStep , but that's easy enough to distinguish. Buuuuut... That leaves us with needing an action for queuing/cause of blockage, and no way of recording any additional information we might want (like time in queue - though I suppose you could reverse engineer that from the TimingAction on the StepStartNode with the WorkspaceAction and the second StepStartNode with isBody() == true . I dunno - I've never quite grokked why there are two StepStartNode for things like ExecutorStep ). So I'm leaning towards a new action after all. "Allocate node" is the display name for ExecutorStep - so if we want something different there, we'd need to special-case ExecutorStep . re: aborted status - probably the simplest thing would be just to check if the StepStartNode for ExecutorStep (a) has a StepEndNode corresponding to it and (b) doesn't have a WorkspaceAction . That'd pretty directly mean it was aborted. But hey, if we're going with a new action, we can embed this too.

          Andrew Bayer added a comment -

          Andrew Bayer added a comment - Preliminary PR up at https://github.com/jenkinsci/workflow-durable-task-step-plugin/pull/42

          Andrew Bayer added a comment -

          Added a bunch more related PRs here.

          Andrew Bayer added a comment - Added a bunch more related PRs here.

          Andrew Bayer added a comment -

          So wow, this part (rather than JENKINS-44636, a necessary antecedent of this and what the PRs are actually solving at the moment) is...a challenge. The core thing is that Blue Ocean doesn't do anything with block-scoped steps, just stages/parallel branches and atomic steps. Meaning PipelineStepVisitor is not very friendly to this sort of thing. So this may take a bit more work than I'd originally hoped.

          Andrew Bayer added a comment - So wow, this part (rather than JENKINS-44636 , a necessary antecedent of this and what the PRs are actually solving at the moment) is...a challenge. The core thing is that Blue Ocean doesn't do anything with block-scoped steps, just stages/parallel branches and atomic steps. Meaning PipelineStepVisitor is not very friendly to this sort of thing. So this may take a bit more work than I'd originally hoped.

          Code changed in jenkins
          User: Andrew Bayer
          Path:
          src/main/java/org/jenkinsci/plugins/workflow/actions/ExecutorTaskInfoAction.java
          http://jenkins-ci.org/commit/workflow-api-plugin/779e794da1cf806ee9de3792d2fa7c42c7e12fba
          Log:
          JENKINS-44981 Action for tracking node block queued/running status

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Andrew Bayer Path: src/main/java/org/jenkinsci/plugins/workflow/actions/ExecutorTaskInfoAction.java http://jenkins-ci.org/commit/workflow-api-plugin/779e794da1cf806ee9de3792d2fa7c42c7e12fba Log: JENKINS-44981 Action for tracking node block queued/running status

          Code changed in jenkins
          User: Andrew Bayer
          Path:
          src/main/java/org/jenkinsci/plugins/workflow/actions/ExecutorTaskInfoAction.java
          http://jenkins-ci.org/commit/workflow-api-plugin/779e794da1cf806ee9de3792d2fa7c42c7e12fba
          Log:
          JENKINS-44981 Action for tracking node block queued/running status

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Andrew Bayer Path: src/main/java/org/jenkinsci/plugins/workflow/actions/ExecutorTaskInfoAction.java http://jenkins-ci.org/commit/workflow-api-plugin/779e794da1cf806ee9de3792d2fa7c42c7e12fba Log: JENKINS-44981 Action for tracking node block queued/running status

          Code changed in jenkins
          User: Andrew Bayer
          Path:
          pom.xml
          src/main/java/org/jenkinsci/plugins/workflow/pipelinegraphanalysis/GenericStatus.java
          src/main/java/org/jenkinsci/plugins/workflow/pipelinegraphanalysis/StatusAndTiming.java
          src/test/java/org/jenkinsci/plugins/workflow/pipelinegraphanalysis/StatusAndTimingTest.java
          http://jenkins-ci.org/commit/pipeline-graph-analysis-plugin/63fd83731918f29e5ac98080a5a0ab234bc89257
          Log:
          JENKINS-44981 Add GenericStatus.QUEUED and related logic

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Andrew Bayer Path: pom.xml src/main/java/org/jenkinsci/plugins/workflow/pipelinegraphanalysis/GenericStatus.java src/main/java/org/jenkinsci/plugins/workflow/pipelinegraphanalysis/StatusAndTiming.java src/test/java/org/jenkinsci/plugins/workflow/pipelinegraphanalysis/StatusAndTimingTest.java http://jenkins-ci.org/commit/pipeline-graph-analysis-plugin/63fd83731918f29e5ac98080a5a0ab234bc89257 Log: JENKINS-44981 Add GenericStatus.QUEUED and related logic

          Michael Neale added a comment -

          Chatting to abayer need some more design thought on how to present this

          Michael Neale added a comment - Chatting to abayer need some more design thought on how to present this

          James Dumay added a comment -

          abayer michaelneale what more design thought is needed other than to show than "entering a node should show as a step"?

          James Dumay added a comment - abayer michaelneale what more design thought is needed other than to show than "entering a node should show as a step"?

          Sam Van Oort added a comment -

          We probably need to show the end of a block IF it has an ErrorAction on it that doesn't mimick the last non-BlockEndNode – because blocks themselves can fail.

          Sam Van Oort added a comment - We probably need to show the end of a block IF it has an ErrorAction on it that doesn't mimick the last non-BlockEndNode – because blocks themselves can fail.

          Damien Jiang added a comment - - edited

          Hi, I noticed this has been in progress for many months; is there a projected release date for it?

          Damien Jiang added a comment - - edited Hi, I noticed this has been in progress for many months; is there a projected release date for it?

            sophistifunk Josh McDonald
            jamesdumay James Dumay
            Votes:
            3 Vote for this issue
            Watchers:
            10 Start watching this issue

              Created:
              Updated: