gpt4 book ai didi

jenkins - Jenkins 如何在远程从站上执行代码?

转载 作者:行者123 更新时间:2023-12-04 02:57:20 24 4
gpt4 key购买 nike

我有一段代码可以列出 /tmp 中的所有文件两个节点上的目录,像这样(脚本语法):

stage('Demo') {
node('node1') {
println new File('/tmp/').listFiles().toList()
}

node('node2') {
println new File('/tmp/').listFiles().toList()
}
}

但是,两个节点的结果是相同的。看起来代码是在master上执行的,只有println函数在2个节点上执行。

问题是:这是真的吗?如果是这样,我怎么知道代码是在主站还是从站上执行的?

最佳答案

使用 node 的所有 Jenkins 步骤上下文将在这些代理上执行(来自 node 块)。例如,sh 'ls -1 /tmp/'将运行 ls -1 /tmp/ command在块中的那个代理上。但是,实际的 Groovy sh方法和 JVM 代码在 Jenkins 主机上执行。

Jenkins 管道中的所有 Groovy 都以来自 Pipeline Groovy Plugin 的特殊源代码转换方式在 master 上执行。 .因此,为什么new File('/tmp')在主服务器上执行,而不是在代理上执行。如果您使用安全沙箱运行管道,则会收到安全异常,因为 new File默认情况下是不允许的。事实上,任何正常的 JVM 风格的方法都是不允许的。例如,如果管道可以调用 System.exit(0) 会不会很糟糕?并为所有用户关闭 Jenkins?

类似问题:

  • Calling shell commands in groovy script, used in Jenkins pipeline
  • Why build executor status showing two jobs for one pipeline job?
  • 关于jenkins - Jenkins 如何在远程从站上执行代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52302960/

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