Jenkins 代理节点上的 Jenkins 共享库脚本

Jenkins Shared Library script on Jenkins Agent nodes

我注意到 JSL 脚本只能在 Jenkins Master 上执行,是否可以在 Jenkins Agents 上 运行 JSL 脚本?

我的管道中有多个阶段,我希望 运行 在不同的 Jenkins 代理节点上处理这些阶段。

我使用 JSL 的主要动机是 end-to-end Pipeline testability 在使用“回放”进行开发期间,我可以在其中修改 Jenkinsfile 以及来自 JSL 的脚本。

这是我的管道的片段 --

pipeline {
   agent { label 'scdc-generic-w10x64' }
   options {
      timestamps()
   }
   stages {
      stage('Log ip') {
        steps {
            script {
               bat "ipconfig -all"   // *** Gets executed on Jenkins Agent ***
               foo = jsl.foo.new(this) // foo is a Groovy class in JSL
               foo.logIpAddress()   // *** Gets executed on Jenkins Master ***
            }
         }
      }
   }
   post {
      always {
         cleanWs()
      }
   }
}

是的,您可以使用 agent{label <Your agent name>} 在不同阶段的不同代理上执行。您还需要确保您的共享库也存在于代理中。
注意:一切都将在那个阶段在那个代理上执行

stage('Log ip') {
agent { label "<Your agent name>" }
        steps {
            script {
               bat "ipconfig -all"  
               foo = jsl.foo.new(this) 
               foo.logIpAddress()   
            }
         }
      }

我也在 JenkinsUser google 组上发布了这个问题。 JSL 脚本仅在 Jenkins Master 上执行,这是设计使然。

有关 -- https://groups.google.com/g/jenkinsci-users/c/t66PLaAvcgw/m/Ruo97K2AAgAJ

的更多详细信息