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

Allow sequential stages inside parallel in Declarative syntax

    Details

    • Similar Issues:
    • Sprint:
      Pipeline - April 2018

      Description

      Currently with -JENKINS-41334-, we set one or more stages to be executed in parallel but no "branches". Meaning that we cannot parallelise a sequence of stages.

       

      Example:

      pipeline {
        agent none
        stages {
          stage('Parallel stuff') {
            parallel 'branch 1' : {
              // Sequencial stages
              stage('Branch 1 stage 1'){
                  agent any
                  steps {
                      echo "In branch 1 stage 1"
                  }
              }
              stage('Branch 1 stage 2'){
                  agent none // With that kind of sequencial stage, we can change the agent to run on
                  steps {
                      sleep 30
                  }
              }
            }, 'branch 2': { // Parallel execution
              stage('Branch 2 stage 1'){
                  agent any
                  steps {
                      echo "In branch 2 stage 1"
                      sleep 60
                  }
              }
            }
          }
        }
      }
      

      Blue ocean possible view:

        Attachments

          Issue Links

            Activity

            banst Bastien Arata created issue -
            abayer Andrew Bayer made changes -
            Field Original Value New Value
            Issue Type Bug [ 1 ] New Feature [ 2 ]
            Hide
            abayer Andrew Bayer added a comment -

            So this is on the longer-term roadmap. I'm not sure yet what the syntax will look like, but the necessary tooling in Blue Ocean to support this sort of visualization is beginning to come together. So hopefully we'll be able to get this in a few months.

            Show
            abayer Andrew Bayer added a comment - So this is on the longer-term roadmap. I'm not sure yet what the syntax will look like, but the necessary tooling in Blue Ocean to support this sort of visualization is beginning to come together. So hopefully we'll be able to get this in a few months.
            Hide
            banst Bastien Arata added a comment - - edited

            Great to hear that ! The syntax doesn't matter (mine is not even syntactically correct), I was just throwing an example to clarify myself. Any issues to watch in order to be aware of any progression on the subject ?

            Show
            banst Bastien Arata added a comment - - edited Great to hear that ! The syntax doesn't matter (mine is not even syntactically correct), I was just throwing an example to clarify myself. Any issues to watch in order to be aware of any progression on the subject ?
            Hide
            abayer Andrew Bayer added a comment -

            This one, I guess. =)

            Show
            abayer Andrew Bayer added a comment - This one, I guess. =)
            Hide
            banst Bastien Arata added a comment -

            Ok then =)

            Show
            banst Bastien Arata added a comment - Ok then =)
            abayer Andrew Bayer made changes -
            Link This issue relates to JENKINS-40986 [ JENKINS-40986 ]
            abayer Andrew Bayer made changes -
            Link This issue is duplicated by JENKINS-47532 [ JENKINS-47532 ]
            Hide
            abayer Andrew Bayer added a comment - - edited

            Thinking about syntax here - some possibilities:

            First, I think this feels generally right for defining a "group" of stages to run sequentially:

            group('some-name') {
              stage('a') { ... }
              stage('b') { ... }
            }
            

            I'm open to something other than "group". The main thing is to have a name for the group - this ends up, behind the scenes, being the name of the parallel step branch the group's stages get executed within. I decided to go with group('some-name') rather than a nested name 'some-name' field because if we did the latter, we'd either have to add another nested stages or something like that for the individual stage definitions to be in, or we'd have the contents of group being either name ... or stage(...). I don't like mixing key/value pair fields in the same block as arbitrary-lists-of-things, so the latter doesn't work for me, and the former adds more verbosity than I think is really needed.

            Second is how we handle declaring parallel groups in a stage, and related, how we handle existing parallel stages. I've played around with having parallel be able to contain either a list of stage or a list of group - or even a mix. Neither approach (exclusively stage or group, or non-exclusive) feels very smooth in implementation, though the syntax is pretty nice, especially for the mixed approach. I've also considered a new section, let's call it parallelGroups for now, where you could either have parallel or parallelGroups on a stage but not both. Much easier implementation-wise, better backwards compatibility (most notably for the editor, which wouldn't have to change how it handles parallel at all, just add parallelGroups support and make sure only one of the two can be used), worse syntax.

            So here are the options as I see it:

            Exclusive lists in parallel

            stage('just-stages') {
              parallel {
                // Just stages in this case
                stage('a') { ... }
                stage('b') { ... }
                ...
              }
            }
            stage('just-groups') {
              parallel {
                // Just groups in this case - note that we still need a group for just one stage
               group('first-group') {
                 stage('a) { ... }
               }
               group('second-group') {
                 stage('b') { ... }
                 stage('c') { ... }
              }
            }
            

            Mixed lists in parallel

            stage('mixed-list') {
              parallel {
                stage('a') { ... }
                group('b-and-c') {
                  stage('b') { ... }
                  stage('c') { ... }
                }
              }
            }
            

            parallel and parallelGroups

            stage('parallel-single-stages') {
              parallel {
                stage('a') { ... }
                stage('b') { ... }
              }
            }
            stage('parallelGroups') {
              parallelGroups {
                group('first-group') {
                  stage('a') { ... }
                }
                group('second-group') {
                  stage('b') { ... }
                  stage('c') { ... }
                }
              }
            }
            

            Thoughts? (ping Karl Shultz Michael Neale rsandell James Dumay Stephen Donner Robby Pocase Patrick Wolf)

            Show
            abayer Andrew Bayer added a comment - - edited Thinking about syntax here - some possibilities: First, I think this feels generally right for defining a "group" of stages to run sequentially: group( 'some-name' ) { stage( 'a' ) { ... } stage( 'b' ) { ... } } I'm open to something other than "group". The main thing is to have a name for the group - this ends up, behind the scenes, being the name of the parallel step branch the group's stages get executed within. I decided to go with group('some-name') rather than a nested name 'some-name' field because if we did the latter, we'd either have to add another nested stages or something like that for the individual stage definitions to be in, or we'd have the contents of group being either name ... or stage(...) . I don't like mixing key/value pair fields in the same block as arbitrary-lists-of-things, so the latter doesn't work for me, and the former adds more verbosity than I think is really needed. Second is how we handle declaring parallel groups in a stage, and related, how we handle existing parallel stages. I've played around with having parallel be able to contain either a list of stage or a list of group - or even a mix. Neither approach (exclusively stage or group , or non-exclusive) feels very smooth in implementation, though the syntax is pretty nice, especially for the mixed approach. I've also considered a new section, let's call it parallelGroups for now, where you could either have parallel or parallelGroups on a stage but not both. Much easier implementation-wise, better backwards compatibility (most notably for the editor, which wouldn't have to change how it handles parallel at all, just add parallelGroups support and make sure only one of the two can be used), worse syntax. So here are the options as I see it: Exclusive lists in parallel stage( 'just-stages' ) { parallel { // Just stages in this case stage( 'a' ) { ... } stage( 'b' ) { ... } ... } } stage( 'just-groups' ) { parallel { // Just groups in this case - note that we still need a group for just one stage group( 'first-group' ) { stage('a) { ... } } group( 'second-group' ) { stage( 'b' ) { ... } stage( 'c' ) { ... } } } Mixed lists in parallel stage( 'mixed-list' ) { parallel { stage( 'a' ) { ... } group( 'b-and-c' ) { stage( 'b' ) { ... } stage( 'c' ) { ... } } } } parallel and parallelGroups stage( 'parallel-single-stages' ) { parallel { stage( 'a' ) { ... } stage( 'b' ) { ... } } } stage( 'parallelGroups' ) { parallelGroups { group( 'first-group' ) { stage( 'a' ) { ... } } group( 'second-group' ) { stage( 'b' ) { ... } stage( 'c' ) { ... } } } } Thoughts? (ping Karl Shultz Michael Neale rsandell James Dumay Stephen Donner Robby Pocase Patrick Wolf )
            Hide
            hrmpw Patrick Wolf added a comment -

            At first blush I don't think parallelGroups adds anything since group is required anyway.

            Is there any real difference between:

            stage('just-groups') {
              parallel {
               group('first-group') {
                 stage('a) { ... }
               }
               group('second-group') {
                 stage('b') { ... }
                 stage('c') { ... }
              }
            }
            

            and 

            stage('parallelGroups') {
              parallelGroups {
                group('first-group') {
                  stage('a') { ... }
                }
                group('second-group') {
                  stage('b') { ... }
                  stage('c') { ... }
                }
              }
            }
            

            I kind of like the former because we would be adding to existing parallel instead of adding a new higher level declaration. An alternative to group might be stageGroup to be a little more descriptive.

             

            Show
            hrmpw Patrick Wolf added a comment - At first blush I don't think parallelGroups adds anything since group is required anyway. Is there any real difference between: stage( 'just-groups' ) { parallel { group( 'first-group' ) { stage('a) { ... } } group( 'second-group' ) { stage( 'b' ) { ... } stage( 'c' ) { ... } } } and  stage( 'parallelGroups' ) { parallelGroups { group( 'first-group' ) { stage( 'a' ) { ... } } group( 'second-group' ) { stage( 'b' ) { ... } stage( 'c' ) { ... } } } } I kind of like the former because we would be adding to existing parallel instead of adding a new higher level declaration. An alternative to group might be stageGroup to be a little more descriptive.  
            Hide
            abayer Andrew Bayer added a comment -

            The idea of parallelGroups is that groups would need to be in that, while parallel would have only stages. It'd simplify parsing and JSON translation significantly over the other options.

            Show
            abayer Andrew Bayer added a comment - The idea of parallelGroups is that groups would need to be in that, while parallel would have only stages. It'd simplify parsing and JSON translation significantly over the other options.
            Hide
            abayer Andrew Bayer added a comment -

            FYI, I'm leaning strongly towards the "Mixed list" approach right now...doing preliminary implementation work to make sure it's viable.

            Show
            abayer Andrew Bayer added a comment - FYI, I'm leaning strongly towards the "Mixed list" approach right now...doing preliminary implementation work to make sure it's viable.
            Hide
            michaelneale Michael Neale added a comment -

            yeah I have trouble imagining it in mh mind - is it possible to have it as example/visual pairs? I think I understand, but my assumption may be wrong. 

            Show
            michaelneale Michael Neale added a comment - yeah I have trouble imagining it in mh mind - is it possible to have it as example/visual pairs? I think I understand, but my assumption may be wrong. 
            Hide
            abayer Andrew Bayer added a comment -

            Not sure what you mean? The syntax examples are all above.

            Show
            abayer Andrew Bayer added a comment - Not sure what you mean? The syntax examples are all above.
            Hide
            abayer Andrew Bayer added a comment -

            And if you're talking about what ends up being executed, it's the same either way - parallel branches with 1..N stages run sequentially inside them as specified.

            Show
            abayer Andrew Bayer added a comment - And if you're talking about what ends up being executed, it's the same either way - parallel branches with 1..N stages run sequentially inside them as specified.
            Hide
            abayer Andrew Bayer added a comment -

            And to make sure everyone knows the direction I'm leaning, it's this:

            stage('mixed-list') {
              parallel {
                stage('a') { ... }
                group('b-and-c') {
                  stage('b') { ... }
                  stage('c') { ... }
                }
              }
            }
            

            (again, naming of group can definitely be changed, it's the overall syntax that matters)
            That'll run two parallel branches - one with Stage a, and the second with Stage b followed by Stage c.

            Show
            abayer Andrew Bayer added a comment - And to make sure everyone knows the direction I'm leaning, it's this: stage( 'mixed-list' ) { parallel { stage( 'a' ) { ... } group( 'b-and-c' ) { stage( 'b' ) { ... } stage( 'c' ) { ... } } } } (again, naming of group can definitely be changed, it's the overall syntax that matters) That'll run two parallel branches - one with Stage a, and the second with Stage b followed by Stage c.
            Hide
            michaelneale Michael Neale added a comment -

            Andrew Bayer oh right - they all result in the same visual... nevermind.. 

             

            Do the groups even need to be named? they aren't in the visual side of things right? 

            Show
            michaelneale Michael Neale added a comment - Andrew Bayer oh right - they all result in the same visual... nevermind..    Do the groups even need to be named? they aren't in the visual side of things right? 
            Hide
            abayer Andrew Bayer added a comment -

            Yeah, we need some identifier for them, since they end up in a parallel branch that needs a name. I suppose in theory we could try to auto-generate a name randomly, but I'd prefer requiring one be specified.

            Show
            abayer Andrew Bayer added a comment - Yeah, we need some identifier for them, since they end up in a parallel branch that needs a name. I suppose in theory we could try to auto-generate a name randomly, but I'd prefer requiring one be specified.
            abayer Andrew Bayer made changes -
            Status Open [ 1 ] In Progress [ 3 ]
            Hide
            abayer Andrew Bayer added a comment -

            Ok, preliminary work is up at https://github.com/jenkinsci/pipeline-model-definition-plugin/pull/227. I did go with the "mixed" parallel block contents (i.e., both stage and group can be in there), and since I've cracked that implementation, the other syntax options are kinda pointless, since the "mixed" one was superior in the first place (and backwards compatible!).

            This is very much a work in progress - I've got all of one test for this currently, and wouldn't be shocked if some existing tests get broken by the change. But hey, let's get the ball rolling.

            Show
            abayer Andrew Bayer added a comment - Ok, preliminary work is up at https://github.com/jenkinsci/pipeline-model-definition-plugin/pull/227 . I did go with the "mixed" parallel block contents (i.e., both stage and group can be in there), and since I've cracked that implementation, the other syntax options are kinda pointless, since the "mixed" one was superior in the first place (and backwards compatible!). This is very much a work in progress - I've got all of one test for this currently, and wouldn't be shocked if some existing tests get broken by the change. But hey, let's get the ball rolling.
            abayer Andrew Bayer made changes -
            Remote Link This issue links to "PR #227 (Web Link)" [ 18167 ]
            Hide
            abayer Andrew Bayer added a comment -

            FYI, https://github.com/jenkinsci/pipeline-model-definition-plugin/pull/227 is probably the right place to discuss implementation details now - I've got a pile o' TODOs in the PR description, including a couple questions that need to be answered, along with a syntax example and a "diagram" of what this actually translates to at runtime.

            Show
            abayer Andrew Bayer added a comment - FYI, https://github.com/jenkinsci/pipeline-model-definition-plugin/pull/227 is probably the right place to discuss implementation details now - I've got a pile o' TODOs in the PR description, including a couple questions that need to be answered, along with a syntax example and a "diagram" of what this actually translates to at runtime.
            abayer Andrew Bayer made changes -
            Sprint Pipeline - December [ 446 ]
            bitwiseman Liam Newman made changes -
            Link This issue relates to JENKINS-39119 [ JENKINS-39119 ]
            hendrikhalkow Hendrik Halkow made changes -
            Link This issue is duplicated by JENKINS-48422 [ JENKINS-48422 ]
            Hide
            hendrikhalkow Hendrik Halkow added a comment -

            My idea for the syntax. Sorry for crossposting.

            parallel {
              stages {
                stage('Build on Linux') {
                  steps {
                    echo 'Building on Linux'
                  }
                }
                stage('Test on Linux') {
                  steps {
                    echo 'Testing on Linux'
                  }
                }
              }
              stages {
                stage('Build on macOS') {
                  steps {
                    echo 'Building on macOS'
                  }
                }
                stage('Test on Linux') {
                  steps {
                    echo 'Testing on macOS'
                  }
                }
              }
            }
            Show
            hendrikhalkow Hendrik Halkow added a comment - My idea for the syntax. Sorry for crossposting. parallel { stages { stage( 'Build on Linux' ) { steps { echo 'Building on Linux' } } stage( 'Test on Linux' ) { steps { echo 'Testing on Linux' } } } stages { stage( 'Build on macOS' ) { steps { echo 'Building on macOS' } } stage( 'Test on Linux' ) { steps { echo 'Testing on macOS' } } } }
            Hide
            sheerun Adam Stankiewicz added a comment -

            I support above syntax. Groups already exist and are named "stages", no need to add extra block type.

            Show
            sheerun Adam Stankiewicz added a comment - I support above syntax. Groups already exist and are named "stages", no need to add extra block type.
            abayer Andrew Bayer made changes -
            Link This issue relates to JENKINS-39932 [ JENKINS-39932 ]
            abayer Andrew Bayer made changes -
            Link This issue is duplicated by JENKINS-43336 [ JENKINS-43336 ]
            abayer Andrew Bayer made changes -
            Link This issue is duplicated by JENKINS-47163 [ JENKINS-47163 ]
            abayer Andrew Bayer made changes -
            Status In Progress [ 3 ] In Review [ 10005 ]
            Hide
            thxmasj Thomas Johansen added a comment -

            I can see this issue has been in status Review for a month now. Could I hope for some progress anytime soon?

            I am also curious if an "options { lock resource: '...' }" can be used on the new stage group. For now I have to stick with a "parallel" construct, which cannot solve all use cases.  

            Show
            thxmasj Thomas Johansen added a comment - I can see this issue has been in status Review for a month now. Could I hope for some progress anytime soon? I am also curious if an "options { lock resource: '...' }" can be used on the new stage group. For now I have to stick with a "parallel" construct, which cannot solve all use cases.  
            Hide
            abayer Andrew Bayer added a comment -

            We’re waiting on Blue Ocean to add support for the visualization and in the editor. And yes, you’ll be able to do options on the parent of the sequential group.

            Show
            abayer Andrew Bayer added a comment - We’re waiting on Blue Ocean to add support for the visualization and in the editor. And yes, you’ll be able to do options on the parent of the sequential group.
            Hide
            thxmasj Thomas Johansen added a comment -

            Fantastic! Are there any issues I can watch for that?

            Show
            thxmasj Thomas Johansen added a comment - Fantastic! Are there any issues I can watch for that?
            Hide
            abayer Andrew Bayer added a comment -

            No - I'll open one. =)

            Show
            abayer Andrew Bayer added a comment - No - I'll open one. =)
            abayer Andrew Bayer made changes -
            Link This issue relates to JENKINS-49050 [ JENKINS-49050 ]
            Hide
            abayer Andrew Bayer added a comment -

            And done - JENKINS-49050

            Show
            abayer Andrew Bayer added a comment - And done - JENKINS-49050
            Hide
            michaelneale Michael Neale added a comment -

            Cool. 

             

            Yes I think there is visualising and also editing - they are the "hard" bits (mostly fiddly I expect)

            Show
            michaelneale Michael Neale added a comment - Cool.    Yes I think there is visualising and also editing - they are the "hard" bits (mostly fiddly I expect)
            abayer Andrew Bayer made changes -
            Link This issue is duplicated by JENKINS-39119 [ JENKINS-39119 ]
            vivek Vivek Pandey made changes -
            Sprint Pipeline - December [ 446 ] Pipeline - March 2018 [ 506 ]
            Hide
            scm_issue_link SCM/JIRA link daemon added a comment -

            Code changed in jenkins
            User: Andrew Bayer
            Path:
            pipeline-model-api/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/ast/ModelASTStage.java
            pipeline-model-api/src/main/resources/ast-schema.json
            pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/model/Stage.groovy
            pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/parser/JSONParser.groovy
            pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/parser/ModelParser.groovy
            pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/parser/RuntimeASTTransformer.groovy
            pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/validator/ModelValidatorImpl.groovy
            pipeline-model-definition/src/main/resources/org/jenkinsci/plugins/pipeline/modeldefinition/Messages.properties
            pipeline-model-definition/src/main/resources/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/AbstractModelDefTest.java
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/AgentTest.java
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/BasicModelDefTest.java
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/DeclarativeUpgradeTest.java
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/EnvironmentTest.java
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/PostStageTest.java
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/ToolsTest.java
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/ValidatorTest.java
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/WhenStageTest.java
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/parser/ExecuteConvertedTest.java
            pipeline-model-definition/src/test/resources/agentOnGroup.groovy
            pipeline-model-definition/src/test/resources/environmentInGroup.groovy
            pipeline-model-definition/src/test/resources/errors/emptyStagesInGroup.groovy
            pipeline-model-definition/src/test/resources/errors/parallelStagesAndGroups.groovy
            pipeline-model-definition/src/test/resources/errors/parallelStagesGroupsDeepNesting.groovy
            pipeline-model-definition/src/test/resources/errors/parallelStagesStepsAndGroups.groovy
            pipeline-model-definition/src/test/resources/errors/parallelStepsAndGroups.groovy
            pipeline-model-definition/src/test/resources/errors/topLevelStageGroupsDeepNesting.groovy
            pipeline-model-definition/src/test/resources/json/agentOnGroup.json
            pipeline-model-definition/src/test/resources/json/errors/parallelStagesAndGroups.json
            pipeline-model-definition/src/test/resources/json/errors/parallelStagesGroupsDeepNesting.json
            pipeline-model-definition/src/test/resources/json/errors/parallelStagesStepsAndGroups.json
            pipeline-model-definition/src/test/resources/json/errors/parallelStepsAndGroups.json
            pipeline-model-definition/src/test/resources/json/errors/topLevelStageGroupsDeepNesting.json
            pipeline-model-definition/src/test/resources/json/parallelStagesGroupsAndStages.json
            pipeline-model-definition/src/test/resources/json/topLevelStageGroup.json
            pipeline-model-definition/src/test/resources/org/jenkinsci/plugins/pipeline/modeldefinition/DeclarativeUpgradeTest/parallelAddsGroupsExecutionModelActionUpgrade.zip
            pipeline-model-definition/src/test/resources/parallelStagesGroupsAndStages.groovy
            pipeline-model-definition/src/test/resources/postStage/groupLocalAll.groovy
            pipeline-model-definition/src/test/resources/postStage/postInParallelAndSequential.groovy
            pipeline-model-definition/src/test/resources/toolsInGroup.groovy
            pipeline-model-definition/src/test/resources/topLevelStageGroup.groovy
            pipeline-model-definition/src/test/resources/when/simpleGroupWhen.groovy
            pom.xml
            http://jenkins-ci.org/commit/pipeline-model-definition-plugin/e080af72f68c685bc32346bfd0e9fb87867eb4f6
            Log:
            [FIXED JENKINS-46809] Add sequential groups of parallel stages

            Show
            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Andrew Bayer Path: pipeline-model-api/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/ast/ModelASTStage.java pipeline-model-api/src/main/resources/ast-schema.json pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/model/Stage.groovy pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/parser/JSONParser.groovy pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/parser/ModelParser.groovy pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/parser/RuntimeASTTransformer.groovy pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/validator/ModelValidatorImpl.groovy pipeline-model-definition/src/main/resources/org/jenkinsci/plugins/pipeline/modeldefinition/Messages.properties pipeline-model-definition/src/main/resources/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/AbstractModelDefTest.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/AgentTest.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/BasicModelDefTest.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/DeclarativeUpgradeTest.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/EnvironmentTest.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/PostStageTest.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/ToolsTest.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/ValidatorTest.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/WhenStageTest.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/parser/ExecuteConvertedTest.java pipeline-model-definition/src/test/resources/agentOnGroup.groovy pipeline-model-definition/src/test/resources/environmentInGroup.groovy pipeline-model-definition/src/test/resources/errors/emptyStagesInGroup.groovy pipeline-model-definition/src/test/resources/errors/parallelStagesAndGroups.groovy pipeline-model-definition/src/test/resources/errors/parallelStagesGroupsDeepNesting.groovy pipeline-model-definition/src/test/resources/errors/parallelStagesStepsAndGroups.groovy pipeline-model-definition/src/test/resources/errors/parallelStepsAndGroups.groovy pipeline-model-definition/src/test/resources/errors/topLevelStageGroupsDeepNesting.groovy pipeline-model-definition/src/test/resources/json/agentOnGroup.json pipeline-model-definition/src/test/resources/json/errors/parallelStagesAndGroups.json pipeline-model-definition/src/test/resources/json/errors/parallelStagesGroupsDeepNesting.json pipeline-model-definition/src/test/resources/json/errors/parallelStagesStepsAndGroups.json pipeline-model-definition/src/test/resources/json/errors/parallelStepsAndGroups.json pipeline-model-definition/src/test/resources/json/errors/topLevelStageGroupsDeepNesting.json pipeline-model-definition/src/test/resources/json/parallelStagesGroupsAndStages.json pipeline-model-definition/src/test/resources/json/topLevelStageGroup.json pipeline-model-definition/src/test/resources/org/jenkinsci/plugins/pipeline/modeldefinition/DeclarativeUpgradeTest/parallelAddsGroupsExecutionModelActionUpgrade.zip pipeline-model-definition/src/test/resources/parallelStagesGroupsAndStages.groovy pipeline-model-definition/src/test/resources/postStage/groupLocalAll.groovy pipeline-model-definition/src/test/resources/postStage/postInParallelAndSequential.groovy pipeline-model-definition/src/test/resources/toolsInGroup.groovy pipeline-model-definition/src/test/resources/topLevelStageGroup.groovy pipeline-model-definition/src/test/resources/when/simpleGroupWhen.groovy pom.xml http://jenkins-ci.org/commit/pipeline-model-definition-plugin/e080af72f68c685bc32346bfd0e9fb87867eb4f6 Log: [FIXED JENKINS-46809] Add sequential groups of parallel stages
            Hide
            abayer Andrew Bayer added a comment -

            Before anyone gets too excited, this isn't actually merged yet - I just pushed to a branch in the main repo so that JENKINS-45455's PR and someone's work-in-progress on matrix syntax can target that branch directly.

            Show
            abayer Andrew Bayer added a comment - Before anyone gets too excited, this isn't actually merged yet - I just pushed to a branch in the main repo so that JENKINS-45455 's PR and someone's work-in-progress on matrix syntax can target that branch directly.
            jamesdumay James Dumay made changes -
            Summary Allow sequencial stages inside parallel in Declarative syntax Allow sequential stages inside parallel in Declarative syntax
            Hide
            danielresolutiongames Daniel Hagström added a comment -

            Andrew Bayer Would you dare to guess for an ETA on this? I'm think I'm basically looking at the same use case as Matt Kunze (as he states here), where I'd split first by platform (and thereby node) and then perform sequential steps for that platform/node.

            Show
            danielresolutiongames Daniel Hagström added a comment - Andrew Bayer Would you dare to guess for an ETA on this? I'm think I'm basically looking at the same use case as Matt Kunze  ( as he states here ), where I'd split first by platform (and thereby node) and then perform sequential steps for that platform/node.
            Hide
            rachitagrawal Rachit Agrawal added a comment -

            Daniel Hagström Same here. I am also looking for the same use case.

            Is there any way we can pitch in to speed it up?

            Show
            rachitagrawal Rachit Agrawal added a comment - Daniel Hagström Same here. I am also looking for the same use case. Is there any way we can pitch in to speed it up?
            Hide
            scm_issue_link SCM/JIRA link daemon added a comment -

            Code changed in jenkins
            User: Andrew Bayer
            Path:
            pipeline-model-api/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/ast/ModelASTStage.java
            pipeline-model-api/src/main/resources/ast-schema.json
            pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/model/Stage.groovy
            pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/parser/JSONParser.groovy
            pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/parser/ModelParser.groovy
            pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/parser/RuntimeASTTransformer.groovy
            pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/validator/ModelValidatorImpl.groovy
            pipeline-model-definition/src/main/resources/org/jenkinsci/plugins/pipeline/modeldefinition/Messages.properties
            pipeline-model-definition/src/main/resources/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/AbstractModelDefTest.java
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/AgentTest.java
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/BasicModelDefTest.java
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/DeclarativeUpgradeTest.java
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/EnvironmentTest.java
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/PostStageTest.java
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/ToolsTest.java
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/ValidatorTest.java
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/WhenStageTest.java
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/parser/ExecuteConvertedTest.java
            pipeline-model-definition/src/test/resources/agentOnGroup.groovy
            pipeline-model-definition/src/test/resources/environmentInGroup.groovy
            pipeline-model-definition/src/test/resources/errors/emptyStagesInGroup.groovy
            pipeline-model-definition/src/test/resources/errors/parallelStagesAndGroups.groovy
            pipeline-model-definition/src/test/resources/errors/parallelStagesGroupsDeepNesting.groovy
            pipeline-model-definition/src/test/resources/errors/parallelStagesStepsAndGroups.groovy
            pipeline-model-definition/src/test/resources/errors/parallelStepsAndGroups.groovy
            pipeline-model-definition/src/test/resources/errors/topLevelStageGroupsDeepNesting.groovy
            pipeline-model-definition/src/test/resources/json/agentOnGroup.json
            pipeline-model-definition/src/test/resources/json/errors/parallelStagesAndGroups.json
            pipeline-model-definition/src/test/resources/json/errors/parallelStagesGroupsDeepNesting.json
            pipeline-model-definition/src/test/resources/json/errors/parallelStagesStepsAndGroups.json
            pipeline-model-definition/src/test/resources/json/errors/parallelStepsAndGroups.json
            pipeline-model-definition/src/test/resources/json/errors/topLevelStageGroupsDeepNesting.json
            pipeline-model-definition/src/test/resources/json/parallelStagesGroupsAndStages.json
            pipeline-model-definition/src/test/resources/json/topLevelStageGroup.json
            pipeline-model-definition/src/test/resources/org/jenkinsci/plugins/pipeline/modeldefinition/DeclarativeUpgradeTest/parallelAddsGroupsExecutionModelActionUpgrade.zip
            pipeline-model-definition/src/test/resources/parallelStagesGroupsAndStages.groovy
            pipeline-model-definition/src/test/resources/postStage/groupLocalAll.groovy
            pipeline-model-definition/src/test/resources/postStage/postInParallelAndSequential.groovy
            pipeline-model-definition/src/test/resources/toolsInGroup.groovy
            pipeline-model-definition/src/test/resources/topLevelStageGroup.groovy
            pipeline-model-definition/src/test/resources/when/simpleGroupWhen.groovy
            http://jenkins-ci.org/commit/pipeline-model-definition-plugin/78500b34f4c4f7c2b7089ac995c0269c32da644b
            Log:
            [FIXED JENKINS-46809] Add sequential groups of parallel stages

            Show
            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Andrew Bayer Path: pipeline-model-api/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/ast/ModelASTStage.java pipeline-model-api/src/main/resources/ast-schema.json pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/model/Stage.groovy pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/parser/JSONParser.groovy pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/parser/ModelParser.groovy pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/parser/RuntimeASTTransformer.groovy pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/validator/ModelValidatorImpl.groovy pipeline-model-definition/src/main/resources/org/jenkinsci/plugins/pipeline/modeldefinition/Messages.properties pipeline-model-definition/src/main/resources/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/AbstractModelDefTest.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/AgentTest.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/BasicModelDefTest.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/DeclarativeUpgradeTest.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/EnvironmentTest.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/PostStageTest.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/ToolsTest.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/ValidatorTest.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/WhenStageTest.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/parser/ExecuteConvertedTest.java pipeline-model-definition/src/test/resources/agentOnGroup.groovy pipeline-model-definition/src/test/resources/environmentInGroup.groovy pipeline-model-definition/src/test/resources/errors/emptyStagesInGroup.groovy pipeline-model-definition/src/test/resources/errors/parallelStagesAndGroups.groovy pipeline-model-definition/src/test/resources/errors/parallelStagesGroupsDeepNesting.groovy pipeline-model-definition/src/test/resources/errors/parallelStagesStepsAndGroups.groovy pipeline-model-definition/src/test/resources/errors/parallelStepsAndGroups.groovy pipeline-model-definition/src/test/resources/errors/topLevelStageGroupsDeepNesting.groovy pipeline-model-definition/src/test/resources/json/agentOnGroup.json pipeline-model-definition/src/test/resources/json/errors/parallelStagesAndGroups.json pipeline-model-definition/src/test/resources/json/errors/parallelStagesGroupsDeepNesting.json pipeline-model-definition/src/test/resources/json/errors/parallelStagesStepsAndGroups.json pipeline-model-definition/src/test/resources/json/errors/parallelStepsAndGroups.json pipeline-model-definition/src/test/resources/json/errors/topLevelStageGroupsDeepNesting.json pipeline-model-definition/src/test/resources/json/parallelStagesGroupsAndStages.json pipeline-model-definition/src/test/resources/json/topLevelStageGroup.json pipeline-model-definition/src/test/resources/org/jenkinsci/plugins/pipeline/modeldefinition/DeclarativeUpgradeTest/parallelAddsGroupsExecutionModelActionUpgrade.zip pipeline-model-definition/src/test/resources/parallelStagesGroupsAndStages.groovy pipeline-model-definition/src/test/resources/postStage/groupLocalAll.groovy pipeline-model-definition/src/test/resources/postStage/postInParallelAndSequential.groovy pipeline-model-definition/src/test/resources/toolsInGroup.groovy pipeline-model-definition/src/test/resources/topLevelStageGroup.groovy pipeline-model-definition/src/test/resources/when/simpleGroupWhen.groovy http://jenkins-ci.org/commit/pipeline-model-definition-plugin/78500b34f4c4f7c2b7089ac995c0269c32da644b Log: [FIXED JENKINS-46809] Add sequential groups of parallel stages
            Hide
            scm_issue_link SCM/JIRA link daemon added a comment -

            Code changed in jenkins
            User: Andrew Bayer
            Path:
            pipeline-model-api/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/ast/ModelASTStage.java
            pipeline-model-api/src/main/resources/ast-schema.json
            pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/model/Stage.groovy
            pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/parser/JSONParser.groovy
            pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/parser/ModelParser.groovy
            pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/parser/RuntimeASTTransformer.groovy
            pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/validator/ModelValidatorImpl.groovy
            pipeline-model-definition/src/main/resources/org/jenkinsci/plugins/pipeline/modeldefinition/Messages.properties
            pipeline-model-definition/src/main/resources/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/AbstractModelDefTest.java
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/AgentTest.java
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/BasicModelDefTest.java
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/DeclarativeUpgradeTest.java
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/EnvironmentTest.java
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/PostStageTest.java
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/ToolsTest.java
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/ValidatorTest.java
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/WhenStageTest.java
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/parser/ExecuteConvertedTest.java
            pipeline-model-definition/src/test/resources/agentOnGroup.groovy
            pipeline-model-definition/src/test/resources/environmentInGroup.groovy
            pipeline-model-definition/src/test/resources/errors/emptyStagesInGroup.groovy
            pipeline-model-definition/src/test/resources/errors/parallelStagesAndGroups.groovy
            pipeline-model-definition/src/test/resources/errors/parallelStagesGroupsDeepNesting.groovy
            pipeline-model-definition/src/test/resources/errors/parallelStagesStepsAndGroups.groovy
            pipeline-model-definition/src/test/resources/errors/parallelStepsAndGroups.groovy
            pipeline-model-definition/src/test/resources/errors/topLevelStageGroupsDeepNesting.groovy
            pipeline-model-definition/src/test/resources/json/agentOnGroup.json
            pipeline-model-definition/src/test/resources/json/errors/parallelStagesAndGroups.json
            pipeline-model-definition/src/test/resources/json/errors/parallelStagesGroupsDeepNesting.json
            pipeline-model-definition/src/test/resources/json/errors/parallelStagesStepsAndGroups.json
            pipeline-model-definition/src/test/resources/json/errors/parallelStepsAndGroups.json
            pipeline-model-definition/src/test/resources/json/errors/topLevelStageGroupsDeepNesting.json
            pipeline-model-definition/src/test/resources/json/parallelStagesGroupsAndStages.json
            pipeline-model-definition/src/test/resources/json/topLevelStageGroup.json
            pipeline-model-definition/src/test/resources/org/jenkinsci/plugins/pipeline/modeldefinition/DeclarativeUpgradeTest/parallelAddsGroupsExecutionModelActionUpgrade.zip
            pipeline-model-definition/src/test/resources/parallelStagesGroupsAndStages.groovy
            pipeline-model-definition/src/test/resources/postStage/groupLocalAll.groovy
            pipeline-model-definition/src/test/resources/postStage/postInParallelAndSequential.groovy
            pipeline-model-definition/src/test/resources/toolsInGroup.groovy
            pipeline-model-definition/src/test/resources/topLevelStageGroup.groovy
            pipeline-model-definition/src/test/resources/when/simpleGroupWhen.groovy
            http://jenkins-ci.org/commit/pipeline-model-definition-plugin/c87840505e3a02e9da37416d8dd65f0240a34eb4
            Log:
            [FIXED JENKINS-46809] Add sequential groups of parallel stages

            Show
            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Andrew Bayer Path: pipeline-model-api/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/ast/ModelASTStage.java pipeline-model-api/src/main/resources/ast-schema.json pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/model/Stage.groovy pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/parser/JSONParser.groovy pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/parser/ModelParser.groovy pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/parser/RuntimeASTTransformer.groovy pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/validator/ModelValidatorImpl.groovy pipeline-model-definition/src/main/resources/org/jenkinsci/plugins/pipeline/modeldefinition/Messages.properties pipeline-model-definition/src/main/resources/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/AbstractModelDefTest.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/AgentTest.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/BasicModelDefTest.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/DeclarativeUpgradeTest.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/EnvironmentTest.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/PostStageTest.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/ToolsTest.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/ValidatorTest.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/WhenStageTest.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/parser/ExecuteConvertedTest.java pipeline-model-definition/src/test/resources/agentOnGroup.groovy pipeline-model-definition/src/test/resources/environmentInGroup.groovy pipeline-model-definition/src/test/resources/errors/emptyStagesInGroup.groovy pipeline-model-definition/src/test/resources/errors/parallelStagesAndGroups.groovy pipeline-model-definition/src/test/resources/errors/parallelStagesGroupsDeepNesting.groovy pipeline-model-definition/src/test/resources/errors/parallelStagesStepsAndGroups.groovy pipeline-model-definition/src/test/resources/errors/parallelStepsAndGroups.groovy pipeline-model-definition/src/test/resources/errors/topLevelStageGroupsDeepNesting.groovy pipeline-model-definition/src/test/resources/json/agentOnGroup.json pipeline-model-definition/src/test/resources/json/errors/parallelStagesAndGroups.json pipeline-model-definition/src/test/resources/json/errors/parallelStagesGroupsDeepNesting.json pipeline-model-definition/src/test/resources/json/errors/parallelStagesStepsAndGroups.json pipeline-model-definition/src/test/resources/json/errors/parallelStepsAndGroups.json pipeline-model-definition/src/test/resources/json/errors/topLevelStageGroupsDeepNesting.json pipeline-model-definition/src/test/resources/json/parallelStagesGroupsAndStages.json pipeline-model-definition/src/test/resources/json/topLevelStageGroup.json pipeline-model-definition/src/test/resources/org/jenkinsci/plugins/pipeline/modeldefinition/DeclarativeUpgradeTest/parallelAddsGroupsExecutionModelActionUpgrade.zip pipeline-model-definition/src/test/resources/parallelStagesGroupsAndStages.groovy pipeline-model-definition/src/test/resources/postStage/groupLocalAll.groovy pipeline-model-definition/src/test/resources/postStage/postInParallelAndSequential.groovy pipeline-model-definition/src/test/resources/toolsInGroup.groovy pipeline-model-definition/src/test/resources/topLevelStageGroup.groovy pipeline-model-definition/src/test/resources/when/simpleGroupWhen.groovy http://jenkins-ci.org/commit/pipeline-model-definition-plugin/c87840505e3a02e9da37416d8dd65f0240a34eb4 Log: [FIXED JENKINS-46809] Add sequential groups of parallel stages
            Hide
            scm_issue_link SCM/JIRA link daemon added a comment -

            Code changed in jenkins
            User: Andrew Bayer
            Path:
            pipeline-model-api/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/ast/ModelASTStage.java
            pipeline-model-api/src/main/resources/ast-schema.json
            pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/model/Stage.groovy
            pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/parser/JSONParser.groovy
            pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/parser/ModelParser.groovy
            pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/parser/RuntimeASTTransformer.groovy
            pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/validator/ModelValidatorImpl.groovy
            pipeline-model-definition/src/main/resources/org/jenkinsci/plugins/pipeline/modeldefinition/Messages.properties
            pipeline-model-definition/src/main/resources/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/AbstractModelDefTest.java
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/AgentTest.java
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/BasicModelDefTest.java
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/DeclarativeUpgradeTest.java
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/EnvironmentTest.java
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/PostStageTest.java
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/ToolsTest.java
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/ValidatorTest.java
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/WhenStageTest.java
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/parser/ExecuteConvertedTest.java
            pipeline-model-definition/src/test/resources/agentOnGroup.groovy
            pipeline-model-definition/src/test/resources/environmentInGroup.groovy
            pipeline-model-definition/src/test/resources/errors/emptyStagesInGroup.groovy
            pipeline-model-definition/src/test/resources/errors/parallelStagesAndGroups.groovy
            pipeline-model-definition/src/test/resources/errors/parallelStagesGroupsDeepNesting.groovy
            pipeline-model-definition/src/test/resources/errors/parallelStagesStepsAndGroups.groovy
            pipeline-model-definition/src/test/resources/errors/parallelStepsAndGroups.groovy
            pipeline-model-definition/src/test/resources/errors/topLevelStageGroupsDeepNesting.groovy
            pipeline-model-definition/src/test/resources/json/agentOnGroup.json
            pipeline-model-definition/src/test/resources/json/errors/parallelStagesAndGroups.json
            pipeline-model-definition/src/test/resources/json/errors/parallelStagesGroupsDeepNesting.json
            pipeline-model-definition/src/test/resources/json/errors/parallelStagesStepsAndGroups.json
            pipeline-model-definition/src/test/resources/json/errors/parallelStepsAndGroups.json
            pipeline-model-definition/src/test/resources/json/errors/topLevelStageGroupsDeepNesting.json
            pipeline-model-definition/src/test/resources/json/parallelStagesGroupsAndStages.json
            pipeline-model-definition/src/test/resources/json/topLevelStageGroup.json
            pipeline-model-definition/src/test/resources/org/jenkinsci/plugins/pipeline/modeldefinition/DeclarativeUpgradeTest/parallelAddsGroupsExecutionModelActionUpgrade.zip
            pipeline-model-definition/src/test/resources/parallelStagesGroupsAndStages.groovy
            pipeline-model-definition/src/test/resources/postStage/groupLocalAll.groovy
            pipeline-model-definition/src/test/resources/postStage/postInParallelAndSequential.groovy
            pipeline-model-definition/src/test/resources/toolsInGroup.groovy
            pipeline-model-definition/src/test/resources/topLevelStageGroup.groovy
            pipeline-model-definition/src/test/resources/when/simpleGroupWhen.groovy
            http://jenkins-ci.org/commit/pipeline-model-definition-plugin/9511756ebf7dcc2dc2fc5ed286ef1ba11525b3e8
            Log:
            [FIXED JENKINS-46809] Add sequential groups of parallel stages

            Show
            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Andrew Bayer Path: pipeline-model-api/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/ast/ModelASTStage.java pipeline-model-api/src/main/resources/ast-schema.json pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/model/Stage.groovy pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/parser/JSONParser.groovy pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/parser/ModelParser.groovy pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/parser/RuntimeASTTransformer.groovy pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/validator/ModelValidatorImpl.groovy pipeline-model-definition/src/main/resources/org/jenkinsci/plugins/pipeline/modeldefinition/Messages.properties pipeline-model-definition/src/main/resources/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/AbstractModelDefTest.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/AgentTest.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/BasicModelDefTest.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/DeclarativeUpgradeTest.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/EnvironmentTest.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/PostStageTest.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/ToolsTest.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/ValidatorTest.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/WhenStageTest.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/parser/ExecuteConvertedTest.java pipeline-model-definition/src/test/resources/agentOnGroup.groovy pipeline-model-definition/src/test/resources/environmentInGroup.groovy pipeline-model-definition/src/test/resources/errors/emptyStagesInGroup.groovy pipeline-model-definition/src/test/resources/errors/parallelStagesAndGroups.groovy pipeline-model-definition/src/test/resources/errors/parallelStagesGroupsDeepNesting.groovy pipeline-model-definition/src/test/resources/errors/parallelStagesStepsAndGroups.groovy pipeline-model-definition/src/test/resources/errors/parallelStepsAndGroups.groovy pipeline-model-definition/src/test/resources/errors/topLevelStageGroupsDeepNesting.groovy pipeline-model-definition/src/test/resources/json/agentOnGroup.json pipeline-model-definition/src/test/resources/json/errors/parallelStagesAndGroups.json pipeline-model-definition/src/test/resources/json/errors/parallelStagesGroupsDeepNesting.json pipeline-model-definition/src/test/resources/json/errors/parallelStagesStepsAndGroups.json pipeline-model-definition/src/test/resources/json/errors/parallelStepsAndGroups.json pipeline-model-definition/src/test/resources/json/errors/topLevelStageGroupsDeepNesting.json pipeline-model-definition/src/test/resources/json/parallelStagesGroupsAndStages.json pipeline-model-definition/src/test/resources/json/topLevelStageGroup.json pipeline-model-definition/src/test/resources/org/jenkinsci/plugins/pipeline/modeldefinition/DeclarativeUpgradeTest/parallelAddsGroupsExecutionModelActionUpgrade.zip pipeline-model-definition/src/test/resources/parallelStagesGroupsAndStages.groovy pipeline-model-definition/src/test/resources/postStage/groupLocalAll.groovy pipeline-model-definition/src/test/resources/postStage/postInParallelAndSequential.groovy pipeline-model-definition/src/test/resources/toolsInGroup.groovy pipeline-model-definition/src/test/resources/topLevelStageGroup.groovy pipeline-model-definition/src/test/resources/when/simpleGroupWhen.groovy http://jenkins-ci.org/commit/pipeline-model-definition-plugin/9511756ebf7dcc2dc2fc5ed286ef1ba11525b3e8 Log: [FIXED JENKINS-46809] Add sequential groups of parallel stages
            Hide
            scm_issue_link SCM/JIRA link daemon added a comment -

            Code changed in jenkins
            User: Andrew Bayer
            Path:
            pipeline-model-api/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/ast/ModelASTStage.java
            pipeline-model-api/src/main/resources/ast-schema.json
            pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/model/Stage.groovy
            pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/parser/JSONParser.groovy
            pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/parser/ModelParser.groovy
            pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/parser/RuntimeASTTransformer.groovy
            pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/validator/ModelValidatorImpl.groovy
            pipeline-model-definition/src/main/resources/org/jenkinsci/plugins/pipeline/modeldefinition/Messages.properties
            pipeline-model-definition/src/main/resources/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/AbstractModelDefTest.java
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/AgentTest.java
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/BasicModelDefTest.java
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/DeclarativeUpgradeTest.java
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/EnvironmentTest.java
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/PostStageTest.java
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/ToolsTest.java
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/ValidatorTest.java
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/WhenStageTest.java
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/parser/ExecuteConvertedTest.java
            pipeline-model-definition/src/test/resources/agentOnGroup.groovy
            pipeline-model-definition/src/test/resources/environmentInGroup.groovy
            pipeline-model-definition/src/test/resources/errors/emptyStagesInGroup.groovy
            pipeline-model-definition/src/test/resources/errors/parallelStagesAndGroups.groovy
            pipeline-model-definition/src/test/resources/errors/parallelStagesGroupsDeepNesting.groovy
            pipeline-model-definition/src/test/resources/errors/parallelStagesStepsAndGroups.groovy
            pipeline-model-definition/src/test/resources/errors/parallelStepsAndGroups.groovy
            pipeline-model-definition/src/test/resources/errors/topLevelStageGroupsDeepNesting.groovy
            pipeline-model-definition/src/test/resources/json/agentOnGroup.json
            pipeline-model-definition/src/test/resources/json/errors/parallelStagesAndGroups.json
            pipeline-model-definition/src/test/resources/json/errors/parallelStagesGroupsDeepNesting.json
            pipeline-model-definition/src/test/resources/json/errors/parallelStagesStepsAndGroups.json
            pipeline-model-definition/src/test/resources/json/errors/parallelStepsAndGroups.json
            pipeline-model-definition/src/test/resources/json/errors/topLevelStageGroupsDeepNesting.json
            pipeline-model-definition/src/test/resources/json/parallelStagesGroupsAndStages.json
            pipeline-model-definition/src/test/resources/json/topLevelStageGroup.json
            pipeline-model-definition/src/test/resources/org/jenkinsci/plugins/pipeline/modeldefinition/DeclarativeUpgradeTest/parallelAddsGroupsExecutionModelActionUpgrade.zip
            pipeline-model-definition/src/test/resources/parallelStagesGroupsAndStages.groovy
            pipeline-model-definition/src/test/resources/postStage/groupLocalAll.groovy
            pipeline-model-definition/src/test/resources/postStage/postInParallelAndSequential.groovy
            pipeline-model-definition/src/test/resources/toolsInGroup.groovy
            pipeline-model-definition/src/test/resources/topLevelStageGroup.groovy
            pipeline-model-definition/src/test/resources/when/simpleGroupWhen.groovy
            http://jenkins-ci.org/commit/pipeline-model-definition-plugin/19a6837416add076568627cfc494c71efd6a1819
            Log:
            [FIXED JENKINS-46809] Add sequential groups of parallel stages

            Show
            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Andrew Bayer Path: pipeline-model-api/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/ast/ModelASTStage.java pipeline-model-api/src/main/resources/ast-schema.json pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/model/Stage.groovy pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/parser/JSONParser.groovy pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/parser/ModelParser.groovy pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/parser/RuntimeASTTransformer.groovy pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/validator/ModelValidatorImpl.groovy pipeline-model-definition/src/main/resources/org/jenkinsci/plugins/pipeline/modeldefinition/Messages.properties pipeline-model-definition/src/main/resources/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/AbstractModelDefTest.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/AgentTest.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/BasicModelDefTest.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/DeclarativeUpgradeTest.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/EnvironmentTest.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/PostStageTest.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/ToolsTest.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/ValidatorTest.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/WhenStageTest.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/parser/ExecuteConvertedTest.java pipeline-model-definition/src/test/resources/agentOnGroup.groovy pipeline-model-definition/src/test/resources/environmentInGroup.groovy pipeline-model-definition/src/test/resources/errors/emptyStagesInGroup.groovy pipeline-model-definition/src/test/resources/errors/parallelStagesAndGroups.groovy pipeline-model-definition/src/test/resources/errors/parallelStagesGroupsDeepNesting.groovy pipeline-model-definition/src/test/resources/errors/parallelStagesStepsAndGroups.groovy pipeline-model-definition/src/test/resources/errors/parallelStepsAndGroups.groovy pipeline-model-definition/src/test/resources/errors/topLevelStageGroupsDeepNesting.groovy pipeline-model-definition/src/test/resources/json/agentOnGroup.json pipeline-model-definition/src/test/resources/json/errors/parallelStagesAndGroups.json pipeline-model-definition/src/test/resources/json/errors/parallelStagesGroupsDeepNesting.json pipeline-model-definition/src/test/resources/json/errors/parallelStagesStepsAndGroups.json pipeline-model-definition/src/test/resources/json/errors/parallelStepsAndGroups.json pipeline-model-definition/src/test/resources/json/errors/topLevelStageGroupsDeepNesting.json pipeline-model-definition/src/test/resources/json/parallelStagesGroupsAndStages.json pipeline-model-definition/src/test/resources/json/topLevelStageGroup.json pipeline-model-definition/src/test/resources/org/jenkinsci/plugins/pipeline/modeldefinition/DeclarativeUpgradeTest/parallelAddsGroupsExecutionModelActionUpgrade.zip pipeline-model-definition/src/test/resources/parallelStagesGroupsAndStages.groovy pipeline-model-definition/src/test/resources/postStage/groupLocalAll.groovy pipeline-model-definition/src/test/resources/postStage/postInParallelAndSequential.groovy pipeline-model-definition/src/test/resources/toolsInGroup.groovy pipeline-model-definition/src/test/resources/topLevelStageGroup.groovy pipeline-model-definition/src/test/resources/when/simpleGroupWhen.groovy http://jenkins-ci.org/commit/pipeline-model-definition-plugin/19a6837416add076568627cfc494c71efd6a1819 Log: [FIXED JENKINS-46809] Add sequential groups of parallel stages
            Hide
            scm_issue_link SCM/JIRA link daemon added a comment -

            Code changed in jenkins
            User: Andrew Bayer
            Path:
            pipeline-model-api/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/ast/ModelASTStage.java
            pipeline-model-api/src/main/resources/ast-schema.json
            pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/model/Stage.groovy
            pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/parser/JSONParser.groovy
            pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/parser/ModelParser.groovy
            pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/parser/RuntimeASTTransformer.groovy
            pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/validator/ModelValidatorImpl.groovy
            pipeline-model-definition/src/main/resources/org/jenkinsci/plugins/pipeline/modeldefinition/Messages.properties
            pipeline-model-definition/src/main/resources/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/AbstractModelDefTest.java
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/AgentTest.java
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/BasicModelDefTest.java
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/DeclarativeUpgradeTest.java
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/EnvironmentTest.java
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/PostStageTest.java
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/ToolsTest.java
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/ValidatorTest.java
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/WhenStageTest.java
            pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/parser/ExecuteConvertedTest.java
            pipeline-model-definition/src/test/resources/agentOnGroup.groovy
            pipeline-model-definition/src/test/resources/environmentInGroup.groovy
            pipeline-model-definition/src/test/resources/errors/emptyStagesInGroup.groovy
            pipeline-model-definition/src/test/resources/errors/parallelStagesAndGroups.groovy
            pipeline-model-definition/src/test/resources/errors/parallelStagesGroupsDeepNesting.groovy
            pipeline-model-definition/src/test/resources/errors/parallelStagesStepsAndGroups.groovy
            pipeline-model-definition/src/test/resources/errors/parallelStepsAndGroups.groovy
            pipeline-model-definition/src/test/resources/errors/topLevelStageGroupsDeepNesting.groovy
            pipeline-model-definition/src/test/resources/json/agentOnGroup.json
            pipeline-model-definition/src/test/resources/json/errors/parallelStagesAndGroups.json
            pipeline-model-definition/src/test/resources/json/errors/parallelStagesGroupsDeepNesting.json
            pipeline-model-definition/src/test/resources/json/errors/parallelStagesStepsAndGroups.json
            pipeline-model-definition/src/test/resources/json/errors/parallelStepsAndGroups.json
            pipeline-model-definition/src/test/resources/json/errors/topLevelStageGroupsDeepNesting.json
            pipeline-model-definition/src/test/resources/json/parallelStagesGroupsAndStages.json
            pipeline-model-definition/src/test/resources/json/topLevelStageGroup.json
            pipeline-model-definition/src/test/resources/org/jenkinsci/plugins/pipeline/modeldefinition/DeclarativeUpgradeTest/parallelAddsGroupsExecutionModelActionUpgrade.zip
            pipeline-model-definition/src/test/resources/parallelStagesGroupsAndStages.groovy
            pipeline-model-definition/src/test/resources/postStage/groupLocalAll.groovy
            pipeline-model-definition/src/test/resources/postStage/postInParallelAndSequential.groovy
            pipeline-model-definition/src/test/resources/toolsInGroup.groovy
            pipeline-model-definition/src/test/resources/topLevelStageGroup.groovy
            pipeline-model-definition/src/test/resources/when/simpleGroupWhen.groovy
            http://jenkins-ci.org/commit/pipeline-model-definition-plugin/79cad4ee2026e2123dcf13c6614c1988303fc034
            Log:
            [FIXED JENKINS-46809] Add sequential groups of parallel stages

            *NOTE:* This service been marked for deprecation: https://developer.github.com/changes/2018-04-25-github-services-deprecation/

            Functionality will be removed from GitHub.com on January 31st, 2019.

            Show
            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Andrew Bayer Path: pipeline-model-api/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/ast/ModelASTStage.java pipeline-model-api/src/main/resources/ast-schema.json pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/model/Stage.groovy pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/parser/JSONParser.groovy pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/parser/ModelParser.groovy pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/parser/RuntimeASTTransformer.groovy pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/validator/ModelValidatorImpl.groovy pipeline-model-definition/src/main/resources/org/jenkinsci/plugins/pipeline/modeldefinition/Messages.properties pipeline-model-definition/src/main/resources/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/AbstractModelDefTest.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/AgentTest.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/BasicModelDefTest.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/DeclarativeUpgradeTest.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/EnvironmentTest.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/PostStageTest.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/ToolsTest.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/ValidatorTest.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/WhenStageTest.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/parser/ExecuteConvertedTest.java pipeline-model-definition/src/test/resources/agentOnGroup.groovy pipeline-model-definition/src/test/resources/environmentInGroup.groovy pipeline-model-definition/src/test/resources/errors/emptyStagesInGroup.groovy pipeline-model-definition/src/test/resources/errors/parallelStagesAndGroups.groovy pipeline-model-definition/src/test/resources/errors/parallelStagesGroupsDeepNesting.groovy pipeline-model-definition/src/test/resources/errors/parallelStagesStepsAndGroups.groovy pipeline-model-definition/src/test/resources/errors/parallelStepsAndGroups.groovy pipeline-model-definition/src/test/resources/errors/topLevelStageGroupsDeepNesting.groovy pipeline-model-definition/src/test/resources/json/agentOnGroup.json pipeline-model-definition/src/test/resources/json/errors/parallelStagesAndGroups.json pipeline-model-definition/src/test/resources/json/errors/parallelStagesGroupsDeepNesting.json pipeline-model-definition/src/test/resources/json/errors/parallelStagesStepsAndGroups.json pipeline-model-definition/src/test/resources/json/errors/parallelStepsAndGroups.json pipeline-model-definition/src/test/resources/json/errors/topLevelStageGroupsDeepNesting.json pipeline-model-definition/src/test/resources/json/parallelStagesGroupsAndStages.json pipeline-model-definition/src/test/resources/json/topLevelStageGroup.json pipeline-model-definition/src/test/resources/org/jenkinsci/plugins/pipeline/modeldefinition/DeclarativeUpgradeTest/parallelAddsGroupsExecutionModelActionUpgrade.zip pipeline-model-definition/src/test/resources/parallelStagesGroupsAndStages.groovy pipeline-model-definition/src/test/resources/postStage/groupLocalAll.groovy pipeline-model-definition/src/test/resources/postStage/postInParallelAndSequential.groovy pipeline-model-definition/src/test/resources/toolsInGroup.groovy pipeline-model-definition/src/test/resources/topLevelStageGroup.groovy pipeline-model-definition/src/test/resources/when/simpleGroupWhen.groovy http://jenkins-ci.org/commit/pipeline-model-definition-plugin/79cad4ee2026e2123dcf13c6614c1988303fc034 Log: [FIXED JENKINS-46809] Add sequential groups of parallel stages * NOTE: * This service been marked for deprecation: https://developer.github.com/changes/2018-04-25-github-services-deprecation/ Functionality will be removed from GitHub.com on January 31st, 2019.
            Hide
            rachitagrawal Rachit Agrawal added a comment -

            I see there are multiple PRs raised. Is it available now? Anyway we can use this functionality?

            Show
            rachitagrawal Rachit Agrawal added a comment - I see there are multiple PRs raised. Is it available now? Anyway we can use this functionality?
            Hide
            dineshk7 Dineshkumar Ayyavoo added a comment - - edited

            I am facing the similar problem as mentioned here - https://issues.jenkins-ci.org/browse/JENKINS-39119 - when having the node block inside the stage block in a parallel tasks (why node block inside stage block, because we don't want to create duplicate stage for each task), the node get freed after the first stage and it become available for other jobs. Please find the below code, where the node get occupied by another job after the stage `first`. 

            def stages = ["first","second"]
            
            def tasks = [:]
            
            for (item in stages) {
              stage (item) {
                tasks["win"] = {
                  node(mywinnode) {
                    bat 'echo "check"'
                  }
                }
                tasks["mac"] = {
                  node(mymacnode) {
                    sh 'echo "check"'
                  }
                }
                parallel task
              }
            }

            And in the above ticket its mentioned the fix will stated in this ticket. However I want to check is the fix is only for the declarative pipeline syntax?. 

            Show
            dineshk7 Dineshkumar Ayyavoo added a comment - - edited I am facing the similar problem as mentioned here - https://issues.jenkins-ci.org/browse/JENKINS-39119  - when having the node block inside the stage block in a parallel tasks (why node block inside stage block, because we don't want to create duplicate stage for each task), the node get freed after the first stage and it become available for other jobs. Please find the below code, where the node get occupied by another job after the stage `first`.  def stages = [ "first" , "second" ] def tasks = [:] for (item in stages) { stage (item) { tasks[ "win" ] = { node(mywinnode) { bat 'echo "check" '     } } tasks[ "mac" ] = { node(mymacnode) { sh 'echo "check" ' } } parallel task } } And in the above ticket its mentioned the fix will stated in this ticket. However I want to check is the fix is only for the declarative pipeline syntax?. 
            Hide
            horangs Hokwang Lee added a comment -

            I am waitting this fix.

            Show
            horangs Hokwang Lee added a comment - I am waitting this fix.
            Hide
            rachitagrawal Rachit Agrawal added a comment -

            Hokwang Lee Me too.

            Show
            rachitagrawal Rachit Agrawal added a comment - Hokwang Lee Me too.
            cloudbees CloudBees Inc. made changes -
            Remote Link This issue links to "CloudBees Internal UX-727 (Web Link)" [ 20815 ]
            cloudbees CloudBees Inc. made changes -
            Remote Link This issue links to "CloudBees Internal UX-724 (Web Link)" [ 20816 ]
            Hide
            thxmasj Thomas Johansen added a comment -

            Andrew Bayer: Would it be possible to provide a rough ETA on this issue? I need to consider writing my own multi-stage locking mechanism if this one won't arrive soon. BR.

            Show
            thxmasj Thomas Johansen added a comment - Andrew Bayer : Would it be possible to provide a rough ETA on this issue? I need to consider writing my own multi-stage locking mechanism if this one won't arrive soon. BR.
            Hide
            richardwhiuk Richard Whitehouse added a comment -

            It looks like it's getting closer - it's code review at https://github.com/jenkinsci/pipeline-model-definition-plugin/pull/227 with some suggestion it might be released in the next week or two.

            Show
            richardwhiuk Richard Whitehouse added a comment - It looks like it's getting closer - it's code review at https://github.com/jenkinsci/pipeline-model-definition-plugin/pull/227  with some suggestion it might be released in the next week or two.
            Hide
            abayer Andrew Bayer added a comment -

            Yup, that sounds about right - very sorry for the delays!

            Show
            abayer Andrew Bayer added a comment - Yup, that sounds about right - very sorry for the delays!
            Hide
            abayer Andrew Bayer added a comment -

            (finally) merged! JENKINS-45455 should be ready to merge shortly as well, and then I'd expect 1.3 to be out within a couple days (gotta finish docs polish/work for JENKINS-45455 first).

            Show
            abayer Andrew Bayer added a comment - (finally) merged! JENKINS-45455 should be ready to merge shortly as well, and then I'd expect 1.3 to be out within a couple days (gotta finish docs polish/work for JENKINS-45455 first).
            abayer Andrew Bayer made changes -
            Status In Review [ 10005 ] Resolved [ 5 ]
            Resolution Fixed [ 1 ]
            Show
            dineshk7 Dineshkumar Ayyavoo added a comment - Andrew Bayer will this resolve my requirement here  https://issues.jenkins-ci.org/browse/JENKINS-46809?focusedCommentId=338694&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-338694
            Hide
            abayer Andrew Bayer added a comment -

            Dineshkumar Ayyavoo - yes, you will be able to have a parent stage with an agent and then a sequence of stages within that parent that automatically use the same agent/workspace/executor without freeing up the executor in between.

            Show
            abayer Andrew Bayer added a comment - Dineshkumar Ayyavoo - yes, you will be able to have a parent stage with an agent and then a sequence of stages within that parent that automatically use the same agent/workspace/executor without freeing up the executor in between.
            Hide
            dineshk7 Dineshkumar Ayyavoo added a comment -

            Andrew Bayer gr8 then. thanks

            Show
            dineshk7 Dineshkumar Ayyavoo added a comment - Andrew Bayer gr8 then. thanks
            horangs Hokwang Lee made changes -
            Attachment image-2018-06-15-18-09-57-864.png [ 42889 ]
            Hide
            horangs Hokwang Lee added a comment -

            I testest shortly before, but I guess there's a visualization problem in here.

            I use Jenkinsfile using official doc

            https://jenkins.io/doc/book/pipeline/syntax/#parallel-stages-example

             

            and it shows like below. I want to see nested stage.

            Show
            horangs Hokwang Lee added a comment - I testest shortly before, but I guess there's a visualization problem in here. I use Jenkinsfile using official doc https://jenkins.io/doc/book/pipeline/syntax/#parallel-stages-example   and it shows like below. I want to see nested stage.
            Hide
            nimrod Kasia Gauza added a comment -

            Will the functionality will also be available in scripted pipelines?

            Show
            nimrod Kasia Gauza added a comment - Will the functionality will also be available in scripted pipelines?
            Hide
            abayer Andrew Bayer added a comment -

            Hokwang Lee - the visualization is coming later on the Blue Ocean side - you can follow JENKINS-49050 for progress on that.

            Kasia Gauza - you can already do nested stages in Scripted, though as with Declarative sequential stages, you won't get visualization for it in Blue Ocean until JENKINS-49050 is done.

            Show
            abayer Andrew Bayer added a comment - Hokwang Lee - the visualization is coming later on the Blue Ocean side - you can follow JENKINS-49050 for progress on that. Kasia Gauza - you can already do nested stages in Scripted, though as with Declarative sequential stages, you won't get visualization for it in Blue Ocean until JENKINS-49050 is done.
            Hide
            richardwhiuk Richard Whitehouse added a comment - - edited

            When attempting a slightly complex flow, I get:
            WorkflowScript: 954: Parallel stages or branches can only be included in a top-level stage. @ line 954, column 17.
            stage('Destroy old QA1 deployment')
            Andrew Bayer Is there a good reason for such a restriction?

            For example, when using this to resolve https://issues.jenkins-ci.org/browse/JENKINS-43336 it's desirable to have an outer stage which holds a lock, which contains two stages, one of which does a couple of things in parallel, and the other of which runs some stuff - e.g. setting up two test rigs in parallel, and then running some tests across both of them.

            However, this is blocked, and it's not obvious to me why such a restriction exists.

            Show
            richardwhiuk Richard Whitehouse added a comment - - edited When attempting a slightly complex flow, I get: WorkflowScript: 954: Parallel stages or branches can only be included in a top-level stage. @ line 954, column 17. stage('Destroy old QA1 deployment') Andrew Bayer Is there a good reason for such a restriction? For example, when using this to resolve https://issues.jenkins-ci.org/browse/JENKINS-43336  it's desirable to have an outer stage which holds a lock, which contains two stages, one of which does a couple of things in parallel, and the other of which runs some stuff - e.g. setting up two test rigs in parallel, and then running some tests across both of them. However, this is blocked, and it's not obvious to me why such a restriction exists.
            jbriden Jenn Briden made changes -
            Link This issue relates to JENKINS-52025 [ JENKINS-52025 ]
            Hide
            abayer Andrew Bayer added a comment -

            We don't support arbitrarily deep nesting of parallel or sequential stages for a number of reasons - visualization challenges most prominently.

            Show
            abayer Andrew Bayer added a comment - We don't support arbitrarily deep nesting of parallel or sequential stages for a number of reasons - visualization challenges most prominently.
            Hide
            bitwiseman Liam Newman added a comment -

            Richard Whitehouse 

            You make a good point and I think there's other discussion to be had around this.  Could you open a JIRA for this?  

             

            Show
            bitwiseman Liam Newman added a comment - Richard Whitehouse   You make a good point and I think there's other discussion to be had around this.  Could you open a JIRA for this?    
            Hide
            jbriden Jenn Briden added a comment -

            Richard Whitehouse, can you please give me an example of why you would set up your pipeline that way? Why not create a sibling stage with nested stages? It seems unnecessarily complex. (I'm the blue ocean and pipeline product manager, which is why I need to better understand the use case.)

            Show
            jbriden Jenn Briden added a comment - Richard Whitehouse , can you please give me an example of why you would set up your pipeline that way? Why not create a sibling stage with nested stages? It seems unnecessarily complex. (I'm the blue ocean and pipeline product manager, which is why I need to better understand the use case.)
            adamvoss Adam Voss made changes -
            Link This issue is related to JENKINS-52084 [ JENKINS-52084 ]
            Hide
            chantivlad chanti vlad added a comment - - edited

            By creating a Pipeline job with the content of the ticket description:

            pipeline {
              agent none
              stages {
                stage('Parallel stuff') {
                  parallel 'branch 1' : {
                    // Sequencial stages
                    stage('Branch 1 stage 1'){
                        agent any
                        steps {
                            echo "In branch 1 stage 1"
                        }
                    }
                    stage('Branch 1 stage 2'){
                        agent none // With that kind of sequencial stage, we can change the agent to run on
                        steps {
                            sleep 30
                        }
                    }
                  }, 'branch 2': { // Parallel execution
                    stage('Branch 2 stage 1'){
                        agent any
                        steps {
                            echo "In branch 2 stage 1"
                            sleep 60
                        }
                    }
                  }
                }
              }
            }
            

            i get following errors:

             

            WorkflowScript: 4: Expected a block for parallel @ line 4, column 5.
                   stage('Parallel stuff') {
                   ^
            
            WorkflowScript: 4: Expected one of "steps", "stages", or "parallel" for stage "Parallel stuff" @ line 4, column 5.
                   stage('Parallel stuff') {
                   ^
            
            2 errors
            

            i am using

            Jenkins 2.121.1 + Blue Ocean 1.6.0 +  Pipeline 2.5 +

            Pipeline Graph Analysis Plugin
            Provides a REST API to access pipeline and pipeline run data.
            1.6
            Pipeline implementation for Blue Ocean
            This plugin is a part of BlueOcean Plugin
            1.6.0
            Pipeline SCM API for Blue Ocean
            This plugin is a part of BlueOcean Plugin
            1.6.0
            Pipeline: API
            Plugin that defines Pipeline API.
            2.28
            Pipeline: Basic Steps
            Commonly used steps for Pipelines.
            2.9
            Pipeline: Build Step
            Adds the Pipeline step build to trigger builds of other jobs.
            2.7
            Pipeline: Declarative
            An opinionated, declarative Pipeline.
            1.3
            Pipeline: Declarative Agent API
            Replaced by Pipeline: Declarative Extension Points API plugin.
            1.1.1
            Pipeline: Declarative Extension Points API
            APIs for extension points used in Declarative Pipelines.
            1.3
            Pipeline: GitHub Groovy Libraries
            Allows Pipeline Grrovy libraries to be loaded on the fly from GitHub.
            1.0
            Pipeline: Groovy
            Pipeline execution engine based on continuation passing style transformation of Groovy scripts.
            2.53
            Pipeline: Input Step
            Adds the Pipeline step input to wait for human input or approval.
            2.8
            Pipeline: Job
            Defines a new job type for pipelines and provides their generic user interface.
            2.21
            Pipeline: Milestone Step
            Plugin that provides the milestone step
            1.3.1
            Pipeline: Model API
            Model API for Declarative Pipeline.
            1.3
            Pipeline: Multibranch
            Enhances Pipeline plugin to handle branches better by automatically grouping builds from different branches.
            2.19
            Pipeline: Nodes and Processes
            Pipeline steps locking agents and workspaces, and running external processes that may survive a Jenkins restart or slave reconnection.
            2.19
            Pipeline: REST API Plugin
            Provides a REST API to access pipeline and pipeline run data.
            2.10
            Pipeline: SCM Step
            Adds a Pipeline step to check out or update working sources from various SCMs (version control).
            2.6
            Pipeline: Shared Groovy Libraries
            Shared libraries for Pipeline scripts.
            2.9
            Pipeline: Stage Step
            Adds the Pipeline step stage to delineate portions of a build.
            2.3
            Pipeline: Stage Tags Metadata
            Library plugin for Pipeline stage tag metadata.
            1.3
            Pipeline: Stage View Plugin
            Pipeline Stage View Plugin.
            2.10
            Pipeline: Step API
            API for asynchronous build step primitive.
            2.15
            Pipeline: Supporting APIs
            Common utility implementations to build Pipeline Plugin
            2.18
            Show
            chantivlad chanti vlad added a comment - - edited By creating a Pipeline job with the content of the ticket description: pipeline { agent none stages { stage( 'Parallel stuff' ) { parallel 'branch 1' : { // Sequencial stages stage( 'Branch 1 stage 1' ){ agent any steps { echo "In branch 1 stage 1" } } stage( 'Branch 1 stage 2' ){ agent none // With that kind of sequencial stage, we can change the agent to run on steps { sleep 30 } } }, 'branch 2' : { // Parallel execution stage( 'Branch 2 stage 1' ){ agent any steps { echo "In branch 2 stage 1" sleep 60 } } } } } } i get following errors:   WorkflowScript: 4: Expected a block for parallel @ line 4, column 5. stage( 'Parallel stuff' ) { ^ WorkflowScript: 4: Expected one of "steps" , "stages" , or "parallel" for stage "Parallel stuff" @ line 4, column 5. stage( 'Parallel stuff' ) { ^ 2 errors i am using Jenkins 2.121.1 + Blue Ocean 1.6.0 +  Pipeline 2.5 + Pipeline Graph Analysis Plugin Provides a REST API to access pipeline and pipeline run data. 1.6 Pipeline implementation for Blue Ocean This plugin is a part of BlueOcean Plugin 1.6.0 Pipeline SCM API for Blue Ocean This plugin is a part of BlueOcean Plugin 1.6.0 Pipeline: API Plugin that defines Pipeline API. 2.28 Pipeline: Basic Steps Commonly used steps for Pipelines. 2.9 Pipeline: Build Step Adds the Pipeline step  build  to trigger builds of other jobs. 2.7 Pipeline: Declarative An opinionated, declarative Pipeline. 1.3 Pipeline: Declarative Agent API Replaced by Pipeline: Declarative Extension Points API plugin. 1.1.1 Pipeline: Declarative Extension Points API APIs for extension points used in Declarative Pipelines. 1.3 Pipeline: GitHub Groovy Libraries Allows Pipeline Grrovy libraries to be loaded on the fly from GitHub. 1.0 Pipeline: Groovy Pipeline execution engine based on continuation passing style transformation of Groovy scripts. 2.53 Pipeline: Input Step Adds the Pipeline step  input  to wait for human input or approval. 2.8 Pipeline: Job Defines a new job type for pipelines and provides their generic user interface. 2.21 Pipeline: Milestone Step Plugin that provides the milestone step 1.3.1 Pipeline: Model API Model API for Declarative Pipeline. 1.3 Pipeline: Multibranch Enhances Pipeline plugin to handle branches better by automatically grouping builds from different branches. 2.19 Pipeline: Nodes and Processes Pipeline steps locking agents and workspaces, and running external processes that may survive a Jenkins restart or slave reconnection. 2.19 Pipeline: REST API Plugin Provides a REST API to access pipeline and pipeline run data. 2.10 Pipeline: SCM Step Adds a Pipeline step to check out or update working sources from various SCMs (version control). 2.6 Pipeline: Shared Groovy Libraries Shared libraries for Pipeline scripts. 2.9 Pipeline: Stage Step Adds the Pipeline step  stage  to delineate portions of a build. 2.3 Pipeline: Stage Tags Metadata Library plugin for Pipeline stage tag metadata. 1.3 Pipeline: Stage View Plugin Pipeline Stage View Plugin. 2.10 Pipeline: Step API API for asynchronous build step primitive. 2.15 Pipeline: Supporting APIs Common utility implementations to build Pipeline Plugin 2.18
            Hide
            wknapik wknapik wknapik added a comment -

            Jenn Briden

            can you please give me an example of why you would set up your pipeline that way? Why not create a sibling stage with nested stages? It seems unnecessarily complex.

            The question you should be asking is "why are we creating arbitrary restrictions ?".

            Restricting actual functionality for the sake of easier visualization in Blue Ocean is not an answer you should find acceptable.

            The fact that you see a pipeline as unnecessarily complex doesn't mean that it is, or that it's wrong, or that it should be prohibited.

            If you're having trouble with presentation, look how TeamCity does it - it can present any pipeline you can imagine, with no issues.

            Show
            wknapik wknapik wknapik added a comment - Jenn Briden can you please give me an example of why you would set up your pipeline that way? Why not create a sibling stage with nested stages? It seems unnecessarily complex. The question you should be asking is "why are we creating arbitrary restrictions ?". Restricting actual functionality for the sake of easier visualization in Blue Ocean is not an answer you should find acceptable. The fact that you see a pipeline as unnecessarily complex doesn't mean that it is, or that it's wrong, or that it should be prohibited. If you're having trouble with presentation, look how TeamCity does it - it can present any pipeline you can imagine, with no issues.
            Hide
            adamvoss Adam Voss added a comment -

            Jenn Briden One use reason is to better control the executing node.

            In my example I have a sequential stage where each stage in the sequence may execute on a different node.  One of those stages that I would like to split into two stages, but can only do so if they execute in the same workspace because the second stage will depend on the local output of the first.  If I could have a nested sequential stage, I could define the agent on the nested sequential stage each of its stages would then share that workspace.

            My exiting alternative would be to stash the outputs form the first stage and unstash them on the 2nd, which (untested) seems like a lot more overhead and complexity than I justify for splitting the stage (especially if I were to split it into more than 2 stages).

            Show
            adamvoss Adam Voss added a comment - Jenn Briden One use reason is to better control the executing node. In my example I have a sequential stage where each stage in the sequence may execute on a different node.  One of those stages that I would like to split into two stages, but can only do so if they execute in the same workspace because the second stage will depend on the local output of the first.  If I could have a nested sequential stage, I could define the agent on the nested sequential stage each of its stages would then share that workspace. My exiting alternative would be to stash the outputs form the first stage and unstash them on the 2nd, which (untested) seems like a lot more overhead and complexity than I justify for splitting the stage (especially if I were to split it into more than 2 stages).
            Hide
            olle71 Oliver Santschi added a comment -

            Does this example works for anyone? 

            Do I need a special version for a special plugin?

            Show
            olle71 Oliver Santschi added a comment - Does this example works for anyone?  Do I need a special version for a special plugin?
            Hide
            sheeeng Leonard Lee added a comment -

            Oliver Santschi, please see JENKINS-49050. Also, see this gist.

            Show
            sheeeng Leonard Lee added a comment - Oliver Santschi , please see JENKINS-49050 . Also, see this gist .
            Hide
            horangs Hokwang Lee added a comment -

            Please be interested in this JENKINS-53127 related issue.

            Show
            horangs Hokwang Lee added a comment - Please be interested in this JENKINS-53127 related issue.
            bitwiseman Liam Newman made changes -
            Status Resolved [ 5 ] Closed [ 6 ]
            Hide
            nroose Nick Roosevelt added a comment -

            For what is is worth, I can't figure out if this was done, and if it was, when it was, and what version it is in or how to use it. And also, it seems like if we had the ability to have multiple pipelines for one push, that would help with all of this workload management. I would like to have nested parallelism as well as nested sequence.

             

            Show
            nroose Nick Roosevelt added a comment - For what is is worth, I can't figure out if this was done, and if it was, when it was, and what version it is in or how to use it. And also, it seems like if we had the ability to have multiple pipelines for one push, that would help with all of this workload management. I would like to have nested parallelism as well as nested sequence.  

              People

              • Assignee:
                abayer Andrew Bayer
                Reporter:
                banst Bastien Arata
              • Votes:
                66 Vote for this issue
                Watchers:
                104 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: