Вы должны поместить переменную $GIT_BRANCH
в одинарные кавычки, чтобы она не анализировалась скриптом задания DSL. Вставьте свой скрипт в это игровое приложение Job DSL, и вы получите исключение:
javaposse.jobdsl.dsl.DslScriptException: (script, line 12) No such property: $GIT_BRANCH for class: javaposse.jobdsl.dsl.helpers.scm.GitContext
at javaposse.jobdsl.dsl.AbstractDslScriptLoader.runScriptEngine(AbstractDslScriptLoader.groovy:112)
at javaposse.jobdsl.dsl.AbstractDslScriptLoader$_runScripts_closure1.doCall(AbstractDslScriptLoader.groovy:59)
at javaposse.jobdsl.dsl.AbstractDslScriptLoader.runScripts(AbstractDslScriptLoader.groovy:46)
at javaposse.jobdsl.dsl.AbstractDslScriptLoader$runScripts$0.callCurrent(Unknown Source)
Но если вы добавите одинарные кавычки:
branch('$GIT_BRANCH')
тогда вы получите правильно сгенерированный файл XML задания:
<!-- 1. myjob -->
<project>
<actions></actions>
<description></description>
<keepDependencies>false</keepDependencies>
<properties>
<hudson.model.ParametersDefinitionProperty>
<parameterDefinitions>
<hudson.model.StringParameterDefinition>
<name>GIT_BRANCH</name>
<defaultValue>master</defaultValue>
<description>master cert dev</description>
</hudson.model.StringParameterDefinition>
</parameterDefinitions>
</hudson.model.ParametersDefinitionProperty>
</properties>
<canRoam>false</canRoam>
<disabled>false</disabled>
<blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
<blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
<triggers></triggers>
<concurrentBuild>false</concurrentBuild>
<builders></builders>
<publishers></publishers>
<buildWrappers></buildWrappers>
<logRotator>
<daysToKeep>100</daysToKeep>
<numToKeep>-1</numToKeep>
<artifactDaysToKeep>-1</artifactDaysToKeep>
<artifactNumToKeep>-1</artifactNumToKeep>
</logRotator>
<assignedNode>master</assignedNode>
<scm class='hudson.plugins.git.GitSCM'>
<userRemoteConfigs>
<hudson.plugins.git.UserRemoteConfig>
<url>[email protected]:ABC/XYZ.git</url>
</hudson.plugins.git.UserRemoteConfig>
</userRemoteConfigs>
<branches>
<hudson.plugins.git.BranchSpec>
<name>$GIT_BRANCH</name>
</hudson.plugins.git.BranchSpec>
</branches>
<configVersion>2</configVersion>
<doGenerateSubmoduleConfigurations>false</doGenerateSubmoduleConfigurations>
<gitTool>Default</gitTool>
</scm>
</project>
Вот работа DSL, которую я использовал в песочнице:
git_url = "[email protected]:ABC/XYZ.git"
jenkins_node = "master"
freeStyleJob('myjob') {
logRotator(numToKeep = 100)
parameters {
stringParam("GIT_BRANCH", "master" , "master cert dev")
}
label(jenkins_node)
scm {
git {
remote { url(git_url) }
branch('$GIT_BRANCH')
extensions { }
}
}
}
Теперь, когда вы запускаете задание, сгенерированное из этого DSL, оно запросит у вас параметр GIT_BRANCH, и переданное вами значение будет использоваться для настройки ветки.
person
Szymon Stepniak
schedule
13.02.2018
build.buildVariableResolver.resolve("branch_name")
- person dsharew   schedule 13.02.2018