-
Task
-
Resolution: Fixed
-
Major
-
None
-
Powered by SuggestiMate
Motivation
Commonly people want to run particular stages when they match a specific branch name(s). We would like to make this pattern accessible in the editor.
Declarative allows the use of when to condition the stage execution like:
stage('second') { agent label:'some-node' branch "master" when { env.BRANCH == 'master' } }
However, this isn't exactly what we would consider "friendly" for an editor accessible feature (though when will be supported via a text area) and the developer would have to learn the Script syntax to use it correctly.
Solution
We would like to formalise the pattern in a way that is more Editor and user friendly with the introduction of branch. Ideally we could tell from BO if the user has skipped via when or via branch.
Example - match single branch
This stage would only be executed if master was the name of the current branch.
stage('deploy to staging') { agent label:'some-node' when { branch "master" } steps { sh './deploy_pr.sh' } }
Example - match branch name pattern
This stage would only be executed if the branch name started with feature/.
stage('deploy to staging') { agent label:'some-node' when { branch "feature/*" } steps { sh './deploy_pr.sh' } }
Example - expression
You can use an expression to achieve the same thing by:
stage('deploy to staging') { agent label:'some-node' when { expression { return BRANCH == 'master'; } } steps { sh './deploy_pr.sh' } }
[JENKINS-40370] Run stage when branch name matches
It does raise the question about when not being declarative - are we doing the right thing here?
I think special classing branch names AND having when is not an option. Redundant features are a PITA to document and cause user confusion, "Why does this exist? Am I doing it right? Should I be using the other method?"
We do one or the other but not both.
hrmpw agreed having two ways of doing this isn't great. Skipping stages with a script within when makes this feature not accessible to our target audience. Any bright ideas abayer?
So I don't like this idea, if for no other reason than it's likely to lead to a slippery slope of "let's add a section for $SPECIFIC_CONDITION too!" and that's non-optimal.
I see the point of it - it does make things simpler. But I don't think it's really that hard for a user to do the script part themselves. Maybe we have the editor have a list of special case conditions or a free script field? So that if you are going through the editor, you choose when and then Branch is... or whatever, but if you're editing the Jenkinsfile directly, you just get a script box.
abayer with your work around it comes back to the model that the editor can understand.... when is just as non-roundtripable as the contents of script.
Throwing another idea out here: what if the conditions were a pluggable thing that you could even write implementations for in a library? branch and when could be declared and implemented that way..?
abayer what about making the block optional?
stage('deploy to staging') { agent label:'some-node' when branch "feature/*" steps { sh './deploy_pr.sh' } }
Means we could even have:
stage('deploy to staging') { agent label:'some-node' when environment FOO=bar steps { sh './deploy_pr.sh' } }
That's a pain to implement, to say the least. I deeply regret not having made agent a block for future extensibility, and my attempts to make it speak both the existing form and block form have failed so far. So, no.
So here's what we're proposing now:
when { branch "*/master" } when { expression { "foo" == "boo" } }
With possible further extensions as we go.
And should we support
when { branch "*/master" expression { "foo" == "boo" } }
?
No. We agreed to put everything within the when block.
We create special statements for branch and some others but anything special would need to use expression
just wanted to add my 2cents... and yes you probably not gonna like it... but in the "old world" there is a plugin called "Conditional BuildStep" [1] it uses an other plugin called "Run Condition" [2] which contains all the logic of the different conditions. If you look at these plugins, then you see, that this is really a requirement people have and will wanna have in the "Pipeline Model" too. I think you should really prepare the "when" clause easy to be plugable.
[1] https://wiki.jenkins-ci.org/display/JENKINS/Conditional+BuildStep+Plugin
[2] https://wiki.jenkins-ci.org/display/JENKINS/Run+Condition+Plugin
hrmpw What you said is what my example shows. The difference between my example and the others is that there are more than one conditional within the when block.
rsandell For some reason when I read your comment I read it as:
branch "*/master" when { expression { "foo" == "boo" } }
Not sure why I saw it like that.
imod Strangely enough, rsandell and I are thinking pretty much exactly on those lines. =) Think of the elements inside when (i.e. branch or expression currently) as implementations of an extension point analogous to Run Condition. Since, well, they will be implementations of an extension point. =)
That said, contributing from outside may end up being hairy depending on how complex they are, given parsing challenges, but we'll see what we can do.
Code changed in jenkins
User: rsandell
Path:
pipeline-model-api/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/ast/AbstractModelASTCodeBlock.java
pipeline-model-api/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/ast/ModelASTWhen.java
pipeline-model-api/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/ast/ModelASTWhenExpression.java
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/model/StageConditionals.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/validator/ModelValidatorImpl.groovy
pipeline-model-definition/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/when/DeclarativeStageConditional.java
pipeline-model-definition/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/when/DeclarativeStageConditionalDescriptor.java
pipeline-model-definition/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/when/impl/BranchConditional.java
pipeline-model-definition/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/when/impl/EnvironmentConditional.java
pipeline-model-definition/src/main/resources/org/jenkinsci/plugins/pipeline/modeldefinition/ClosureModelTranslator.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/main/resources/org/jenkinsci/plugins/pipeline/modeldefinition/StageConditionalTranslator.groovy
http://jenkins-ci.org/commit/pipeline-model-definition-plugin/d28a97cfce8b8c611f174a1827d86f4138e53857
Log:
JENKINS-40370 Make stage.when more declarative
Code changed in jenkins
User: Andrew Bayer
Path:
SYNTAX.md
pipeline-model-api/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/ast/ModelASTMethodCall.java
pipeline-model-api/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/ast/ModelASTStep.java
pipeline-model-api/src/main/resources/org/jenkinsci/plugins/pipeline/modeldefinition/ast/Messages.properties
pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/model/conditions/Aborted.groovy
pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/model/conditions/Always.groovy
pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/model/conditions/Changed.groovy
pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/model/conditions/Failure.groovy
pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/model/conditions/Success.groovy
pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/model/conditions/Unstable.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/Parser.groovy
pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/validator/ModelValidatorImpl.groovy
pipeline-model-definition/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/model/BuildCondition.java
pipeline-model-definition/src/main/resources/org/jenkinsci/plugins/pipeline/modeldefinition/Messages.properties
pipeline-model-definition/src/main/resources/org/jenkinsci/plugins/pipeline/modeldefinition/model/conditions/Messages.properties
pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/AbstractModelDefTest.java
pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/DeclarativeLinterCommandTest.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/endpoints/ModelConverterActionTest.java
pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/parser/GroovyShellDecoratorImplTest.java
pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/parser/ModelParserTest.java
http://jenkins-ci.org/commit/pipeline-model-definition-plugin/221d6e800a36ac9980a099f71a7106a54191c97f
Log:
Merge branch 'master' into JENKINS-40370
Conflicts:
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
Code changed in jenkins
User: Andrew Bayer
Path:
pipeline-model-definition/pom.xml
pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/BasicModelDefTest.java
pipeline-model-definition/src/test/resources/booleanParamBuildStep.groovy
http://jenkins-ci.org/commit/pipeline-model-definition-plugin/fb5dfb926469f00ae8c741b8d922a483df4d987f
Log:
Merge branch 'master' into JENKINS-40370
Code changed in jenkins
User: Andrew Bayer
Path:
pipeline-model-api/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/ast/ModelASTStage.java
pipeline-model-definition/pom.xml
pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/parser/Converter.groovy
pipeline-model-definition/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/parser/GroovyShellDecoratorImpl.java
pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/AbstractModelDefTest.java
pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/BasicModelDefTest.java
pipeline-model-definition/src/test/resources/json/parallelPipelineQuoteEscaping.json
pipeline-model-definition/src/test/resources/json/parallelPipelineWithSpaceInBranch.json
pipeline-model-definition/src/test/resources/libraryAnnotation.groovy
pipeline-model-definition/src/test/resources/parallelPipelineQuoteEscaping.groovy
pipeline-model-definition/src/test/resources/parallelPipelineWithSpaceInBranch.groovy
http://jenkins-ci.org/commit/pipeline-model-definition-plugin/96a34eda839c2436181a9f9889662256d187970f
Log:
Merge branch 'master' into JENKINS-40370
Conflicts:
pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/AbstractModelDefTest.java
Code changed in jenkins
User: Andrew Bayer
Path:
SYNTAX.md
pipeline-model-api/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/ast/ModelASTPipelineDef.java
pipeline-model-api/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/ast/ModelASTWrapper.java
pipeline-model-api/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/ast/ModelASTWrappers.java
pipeline-model-api/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/validator/ModelValidator.java
pipeline-model-api/src/main/resources/ast-schema.json
pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/Utils.groovy
pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/model/Options.groovy
pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/model/Root.groovy
pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/model/Wrappers.groovy
pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/model/WrappersToMap.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/validator/ModelValidatorImpl.groovy
pipeline-model-definition/src/main/resources/org/jenkinsci/plugins/pipeline/modeldefinition/ClosureModelTranslator.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/main/resources/org/jenkinsci/plugins/pipeline/modeldefinition/OptionsTranslator.groovy
pipeline-model-definition/src/main/resources/org/jenkinsci/plugins/pipeline/modeldefinition/WrappersToMapTranslator.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/OptionsTest.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/WrappersTest.java
pipeline-model-definition/src/test/resources/errors/invalidWrapperType.groovy
pipeline-model-definition/src/test/resources/json/errors/invalidWrapperType.json
pipeline-model-definition/src/test/resources/json/multipleWrappers.json
pipeline-model-definition/src/test/resources/json/simpleWrapper.json
pipeline-model-definition/src/test/resources/multipleProperties.groovy
pipeline-model-definition/src/test/resources/multipleWrappers.groovy
pipeline-model-definition/src/test/resources/simpleWrapper.groovy
http://jenkins-ci.org/commit/pipeline-model-definition-plugin/729dfabcd270c25f0ceaadfd012c019f8da70e74
Log:
Merge branch 'master' into JENKINS-40370
Conflicts:
pipeline-model-api/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/validator/ModelValidator.java
pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/validator/ModelValidatorImpl.groovy
pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/ValidatorTest.java
Code changed in jenkins
User: Andrew Bayer
Path:
SYNTAX.md
pipeline-model-api/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/ast/ModelASTAgent.java
pipeline-model-api/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/ast/ModelASTClosureMap.java
pipeline-model-api/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/validator/ModelValidator.java
pipeline-model-api/src/main/resources/ast-schema.json
pipeline-model-declarative-agent/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/agent/DeclarativeAgentDescriptor.java
pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/model/Agent.groovy
pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/model/Root.groovy
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/validator/ModelValidatorImpl.groovy
pipeline-model-definition/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/agent/impl/DockerPipeline.java
pipeline-model-definition/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/agent/impl/DockerPipelineFromDockerfile.java
pipeline-model-definition/src/main/resources/org/jenkinsci/plugins/pipeline/modeldefinition/ClosureModelTranslator.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/main/resources/org/jenkinsci/plugins/pipeline/modeldefinition/agent/impl/DockerPipelineFromDockerfileScript.groovy
pipeline-model-definition/src/main/resources/org/jenkinsci/plugins/pipeline/modeldefinition/agent/impl/DockerPipelineScript.groovy
pipeline-model-definition/src/main/resources/org/jenkinsci/plugins/pipeline/modeldefinition/config/FolderConfig/help-dockerLabel.html
pipeline-model-definition/src/main/resources/org/jenkinsci/plugins/pipeline/modeldefinition/config/GlobalConfig/help-dockerLabel.html
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/DurabilityTest.java
pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/ValidatorTest.java
pipeline-model-definition/src/test/resources/agentDocker.groovy
pipeline-model-definition/src/test/resources/agentDockerEnvSpecLabel.groovy
pipeline-model-definition/src/test/resources/agentDockerEnvTest.groovy
pipeline-model-definition/src/test/resources/agentDockerWithEmptyDockerArgs.groovy
pipeline-model-definition/src/test/resources/agentDockerWithNullDockerArgs.groovy
pipeline-model-definition/src/test/resources/agentLabel.groovy
pipeline-model-definition/src/test/resources/agentTypeOrdering.groovy
pipeline-model-definition/src/test/resources/buildPluginParentPOM.groovy
pipeline-model-definition/src/test/resources/dockerGlobalVariable.groovy
pipeline-model-definition/src/test/resources/dockerGlobalVariableInScript.groovy
pipeline-model-definition/src/test/resources/environmentInStage.groovy
pipeline-model-definition/src/test/resources/errors/agentMissingRequiredParam.groovy
pipeline-model-definition/src/test/resources/errors/agentUnknownParamForType.groovy
pipeline-model-definition/src/test/resources/errors/duplicateEnvironment.groovy
pipeline-model-definition/src/test/resources/errors/emptyEnvironment.groovy
pipeline-model-definition/src/test/resources/errors/globalLibraryNonStepBody.groovy
pipeline-model-definition/src/test/resources/errors/globalLibraryObjectMethodCall.groovy
pipeline-model-definition/src/test/resources/errors/invalidMetaStepSyntax.groovy
pipeline-model-definition/src/test/resources/errors/multipleAgentTypes.groovy
pipeline-model-definition/src/test/resources/errors/notInstalledToolVersion.groovy
pipeline-model-definition/src/test/resources/errors/perStageConfigEmptySteps.groovy
pipeline-model-definition/src/test/resources/errors/perStageConfigMissingSteps.groovy
pipeline-model-definition/src/test/resources/errors/perStageConfigUnknownSection.groovy
pipeline-model-definition/src/test/resources/errors/unknownAgentType.groovy
pipeline-model-definition/src/test/resources/errors/unlistedToolType.groovy
pipeline-model-definition/src/test/resources/failureBeforeStages.groovy
pipeline-model-definition/src/test/resources/fromAlternateDockerfile.groovy
pipeline-model-definition/src/test/resources/fromDockerfile.groovy
pipeline-model-definition/src/test/resources/fromDockerfileNoArgs.groovy
pipeline-model-definition/src/test/resources/globalLibrarySuccess.groovy
pipeline-model-definition/src/test/resources/globalLibrarySuccessInScript.groovy
pipeline-model-definition/src/test/resources/json/agentAny.json
pipeline-model-definition/src/test/resources/json/agentDocker.json
pipeline-model-definition/src/test/resources/json/agentLabel.json
pipeline-model-definition/src/test/resources/json/agentNoneWithNode.json
pipeline-model-definition/src/test/resources/json/agentTypeOrdering.json
pipeline-model-definition/src/test/resources/json/basicWhen.json
pipeline-model-definition/src/test/resources/json/environmentInStage.json
pipeline-model-definition/src/test/resources/json/errors/agentMissingRequiredParam.json
pipeline-model-definition/src/test/resources/json/errors/agentUnknownParamForType.json
pipeline-model-definition/src/test/resources/json/errors/emptyEnvironment.json
pipeline-model-definition/src/test/resources/json/errors/emptyJobProperties.json
pipeline-model-definition/src/test/resources/json/errors/emptyParallel.json
pipeline-model-definition/src/test/resources/json/errors/emptyParameters.json
pipeline-model-definition/src/test/resources/json/errors/emptyPostBuild.json
pipeline-model-definition/src/test/resources/json/errors/emptyStages.json
pipeline-model-definition/src/test/resources/json/errors/emptyTriggers.json
pipeline-model-definition/src/test/resources/json/errors/invalidBuildCondition.json
pipeline-model-definition/src/test/resources/json/errors/invalidParameterTypeMethodCall.json
pipeline-model-definition/src/test/resources/json/errors/invalidWrapperType.json
pipeline-model-definition/src/test/resources/json/errors/malformed.json
pipeline-model-definition/src/test/resources/json/errors/missingAgent.json
pipeline-model-definition/src/test/resources/json/errors/missingRequiredMethodCallArg.json
pipeline-model-definition/src/test/resources/json/errors/missingRequiredStepParameters.json
pipeline-model-definition/src/test/resources/json/errors/missingStages.json
pipeline-model-definition/src/test/resources/json/errors/mixedMethodArgs.json
pipeline-model-definition/src/test/resources/json/errors/notInstalledToolType.json
pipeline-model-definition/src/test/resources/json/errors/notInstalledToolVersion.json
pipeline-model-definition/src/test/resources/json/errors/notificationsSectionRemoved.json
pipeline-model-definition/src/test/resources/json/errors/perStageConfigEmptySteps.json
pipeline-model-definition/src/test/resources/json/errors/perStageConfigMissingSteps.json
pipeline-model-definition/src/test/resources/json/errors/perStageConfigUnknownSection.json
pipeline-model-definition/src/test/resources/json/errors/rejectParallelMixedInSteps.json
pipeline-model-definition/src/test/resources/json/errors/rejectPropertiesStepInMethodCall.json
pipeline-model-definition/src/test/resources/json/errors/rejectStageInSteps.json
pipeline-model-definition/src/test/resources/json/errors/stageWithoutName.json
pipeline-model-definition/src/test/resources/json/errors/unknownAgentType.json
pipeline-model-definition/src/test/resources/json/errors/unknownBareAgentType.json
pipeline-model-definition/src/test/resources/json/errors/unknownStepParameter.json
pipeline-model-definition/src/test/resources/json/errors/unlistedToolType.json
pipeline-model-definition/src/test/resources/json/errors/wrongParameterNameMethodCall.json
pipeline-model-definition/src/test/resources/json/globalLibrarySuccess.json
pipeline-model-definition/src/test/resources/json/legacyMetaStepSyntax.json
pipeline-model-definition/src/test/resources/json/metaStepSyntax.json
pipeline-model-definition/src/test/resources/json/multipleVariablesForAgent.json
pipeline-model-definition/src/test/resources/json/multipleWrappers.json
pipeline-model-definition/src/test/resources/json/parallelPipeline.json
pipeline-model-definition/src/test/resources/json/parallelPipelineQuoteEscaping.json
pipeline-model-definition/src/test/resources/json/parallelPipelineWithFailFast.json
pipeline-model-definition/src/test/resources/json/parallelPipelineWithSpaceInBranch.json
pipeline-model-definition/src/test/resources/json/perStageConfigAgent.json
pipeline-model-definition/src/test/resources/json/simpleEnvironment.json
pipeline-model-definition/src/test/resources/json/simpleJobProperties.json
pipeline-model-definition/src/test/resources/json/simpleParameters.json
pipeline-model-definition/src/test/resources/json/simplePipeline.json
pipeline-model-definition/src/test/resources/json/simplePostBuild.json
pipeline-model-definition/src/test/resources/json/simpleScript.json
pipeline-model-definition/src/test/resources/json/simpleTools.json
pipeline-model-definition/src/test/resources/json/simpleTriggers.json
pipeline-model-definition/src/test/resources/json/simpleWrapper.json
pipeline-model-definition/src/test/resources/json/skippedWhen.json
pipeline-model-definition/src/test/resources/json/stringsNeedingEscapeLogic.json
pipeline-model-definition/src/test/resources/json/toolsInStage.json
pipeline-model-definition/src/test/resources/json/twoStagePipeline.json
pipeline-model-definition/src/test/resources/json/validStepParameters.json
pipeline-model-definition/src/test/resources/legacyMetaStepSyntax.groovy
pipeline-model-definition/src/test/resources/libraryObjectInScript.groovy
pipeline-model-definition/src/test/resources/libraryObjectOutsideScript.groovy
pipeline-model-definition/src/test/resources/metaStepSyntax.groovy
pipeline-model-definition/src/test/resources/multipleVariablesForAgent.groovy
pipeline-model-definition/src/test/resources/noCheckoutScmInWrongContext.groovy
pipeline-model-definition/src/test/resources/nonLiteralEnvironment.groovy
pipeline-model-definition/src/test/resources/perStageConfigAgent.groovy
pipeline-model-definition/src/test/resources/postStage/localAll.groovy
pipeline-model-definition/src/test/resources/simpleEnvironment.groovy
pipeline-model-definition/src/test/resources/simpleTools.groovy
pipeline-model-definition/src/test/resources/toolsInStage.groovy
pipeline-model-definition/src/test/resources/when/simpleWhen.groovy
pipeline-model-definition/src/test/resources/when/whenEmpty.groovy
pipeline-model-definition/src/test/resources/when/whenException.groovy
http://jenkins-ci.org/commit/pipeline-model-definition-plugin/528818f7948d6f5fd1cfa38fb5b102dbb37ecac5
Log:
Merge branch 'master' into JENKINS-40370
Conflicts:
pipeline-model-definition/src/main/resources/org/jenkinsci/plugins/pipeline/modeldefinition/Messages.properties
pipeline-model-definition/src/main/resources/org/jenkinsci/plugins/pipeline/modeldefinition/agent/impl/DockerPipelineFromDockerfileScript.groovy
pipeline-model-definition/src/main/resources/org/jenkinsci/plugins/pipeline/modeldefinition/agent/impl/DockerPipelineScript.groovy
Code changed in jenkins
User: Andrew Bayer
Path:
SYNTAX.md
pipeline-model-api/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/ast/AbstractModelASTCodeBlock.java
pipeline-model-api/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/ast/ModelASTWhen.java
pipeline-model-api/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/ast/ModelASTWhenExpression.java
pipeline-model-api/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/validator/ModelValidator.java
pipeline-model-api/src/main/resources/ast-schema.json
pipeline-model-declarative-agent/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/agent/DeclarativeAgent.java
pipeline-model-declarative-agent/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/agent/DeclarativeAgentDescriptor.java
pipeline-model-declarative-agent/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/agent/DeclarativeAgentScript.java
pipeline-model-declarative-agent/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/withscript/WithScriptDescribable.java
pipeline-model-declarative-agent/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/withscript/WithScriptDescriptor.java
pipeline-model-declarative-agent/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/withscript/WithScriptScript.java
pipeline-model-definition/src/main/groovy/org/jenkinsci/plugins/pipeline/modeldefinition/Utils.groovy
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/model/StageConditionals.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/validator/ModelValidatorImpl.groovy
pipeline-model-definition/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/agent/impl/Any.java
pipeline-model-definition/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/agent/impl/DockerPipeline.java
pipeline-model-definition/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/agent/impl/DockerPipelineFromDockerfile.java
pipeline-model-definition/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/agent/impl/Label.java
pipeline-model-definition/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/agent/impl/None.java
pipeline-model-definition/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/when/DeclarativeStageConditional.java
pipeline-model-definition/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/when/DeclarativeStageConditionalDescriptor.java
pipeline-model-definition/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/when/DeclarativeStageConditionalScript.java
pipeline-model-definition/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/when/impl/BranchConditional.java
pipeline-model-definition/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/when/impl/EnvironmentConditional.java
pipeline-model-definition/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/when/impl/ExpressionConditional.java
pipeline-model-definition/src/main/resources/org/jenkinsci/plugins/pipeline/modeldefinition/ClosureModelTranslator.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/MethodsToListTranslator.groovy
pipeline-model-definition/src/main/resources/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy
pipeline-model-definition/src/main/resources/org/jenkinsci/plugins/pipeline/modeldefinition/OptionsTranslator.groovy
pipeline-model-definition/src/main/resources/org/jenkinsci/plugins/pipeline/modeldefinition/StageConditionalTranslator.groovy
pipeline-model-definition/src/main/resources/org/jenkinsci/plugins/pipeline/modeldefinition/agent/impl/AnyScript.groovy
pipeline-model-definition/src/main/resources/org/jenkinsci/plugins/pipeline/modeldefinition/agent/impl/DockerPipelineFromDockerfileScript.groovy
pipeline-model-definition/src/main/resources/org/jenkinsci/plugins/pipeline/modeldefinition/agent/impl/DockerPipelineScript.groovy
pipeline-model-definition/src/main/resources/org/jenkinsci/plugins/pipeline/modeldefinition/agent/impl/LabelScript.groovy
pipeline-model-definition/src/main/resources/org/jenkinsci/plugins/pipeline/modeldefinition/agent/impl/NoneScript.groovy
pipeline-model-definition/src/main/resources/org/jenkinsci/plugins/pipeline/modeldefinition/when/impl/BranchConditionalScript.groovy
pipeline-model-definition/src/main/resources/org/jenkinsci/plugins/pipeline/modeldefinition/when/impl/EnvironmentConditionalScript.groovy
pipeline-model-definition/src/main/resources/org/jenkinsci/plugins/pipeline/modeldefinition/when/impl/ExpressionConditionalScript.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/BasicModelDefTest.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/agent/impl/LabelAndOtherFieldAgent.java
pipeline-model-definition/src/test/resources/basicWhen.groovy
pipeline-model-definition/src/test/resources/booleanParamBuildStep.groovy
pipeline-model-definition/src/test/resources/errors/emptyWhen.groovy
pipeline-model-definition/src/test/resources/errors/unknownWhenConditional.groovy
pipeline-model-definition/src/test/resources/errors/whenInvalidParameterType.groovy
pipeline-model-definition/src/test/resources/errors/whenMissingRequiredParameter.groovy
pipeline-model-definition/src/test/resources/errors/whenUnknownParameter.groovy
pipeline-model-definition/src/test/resources/json/basicWhen.json
pipeline-model-definition/src/test/resources/json/errors/emptyWhen.json
pipeline-model-definition/src/test/resources/json/errors/unknownWhenConditional.json
pipeline-model-definition/src/test/resources/json/errors/whenInvalidParameterType.json
pipeline-model-definition/src/test/resources/json/errors/whenMissingRequiredParameter.json
pipeline-model-definition/src/test/resources/json/errors/whenUnknownParameter.json
pipeline-model-definition/src/test/resources/json/skippedWhen.json
pipeline-model-definition/src/test/resources/json/whenBranch.json
pipeline-model-definition/src/test/resources/json/whenEnv.json
pipeline-model-definition/src/test/resources/org/jenkinsci/plugins/pipeline/modeldefinition/agent/impl/LabelAndOtherFieldAgentScript.groovy
pipeline-model-definition/src/test/resources/skippedWhen.groovy
pipeline-model-definition/src/test/resources/when/simpleWhen.groovy
pipeline-model-definition/src/test/resources/when/whenException.groovy
pipeline-model-definition/src/test/resources/whenBranch.groovy
pipeline-model-definition/src/test/resources/whenEnv.groovy
http://jenkins-ci.org/commit/pipeline-model-definition-plugin/cf217be38d68c3ef7dda7e80539ce10a3c4cf8f6
Log:
Merge pull request #78 from jenkinsci/JENKINS-40370
JENKINS-40370 Make stage.when more declarative
Compare: https://github.com/jenkinsci/pipeline-model-definition-plugin/compare/1e1452409af4...cf217be38d68
We may also want to do something similar for matching environment variables but I am less bullish on that.