gpt4 book ai didi

jenkins - 如何从参数值替换jenkins job scm内的github分支

转载 作者:行者123 更新时间:2023-12-02 10:33:38 25 4
gpt4 key购买 nike

我有一个 Jenkins 工作常规脚本,如下所示。我希望从参数值中获取 Github 分支。

Groovy 脚本:

 git_url = "git@github.deere.com: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 { }
}
}

最佳答案

您必须将 $GIT_BRANCH 变量放入单引号中,这样它就不会被作业 DSL 脚本解析。将您的脚本粘贴到此 Job DSL playground app你会得到一个异常(exception):

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>git@github.deere.com: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 = "git@github.deere.com: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 参数,并且您传递的值将用于设置分支。

关于jenkins - 如何从参数值替换jenkins job scm内的github分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48764477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com