我正在尝试运行一个 groovy 脚本,该脚本在执行期间在从属节点上运行进程时更新
build.description
。
我的问题是“系统 groovy 脚本”仅在主节点上执行,而“Jenkins groovy 脚本”在从属节点上运行,但无法访问
build
变量。
我有一个与此类似的脚本:
import hudson.model.*
// works on slave node
def param = args[0]
// works on master node
//def param = build.getEnvironment(listener).get('Params')
def ws = new File(".").absolutePath
def myCommand = ws + "\\Something.exe " + param
def proc = myCommand.execute();
// Cannot use on slave
build.description = "Running executable..."
int exitVal = proc.waitFor();
// Cannot use on slave
build.description = "Executable finished"
有没有办法修改在从属设备上运行的“Jenkins Groovy 脚本”上的构建变量?
没有。
Jenkins 管道对此类事情提供了更多控制。
以下是我们的脚本。
nodeexpression
可以是节点名称。
node(nodeexpression) {
println "env :"
echo sh(script: 'env|sort', returnStdout: true)
currentBuild.displayName = "branch ${BRANCH}:${MAIL_TO}"
currentBuild.description = "${BRANCH}:${MAIL_TO} : message -> ${MESSAGE}"
}