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
的更多详细信息
我注意到 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
的更多详细信息