我有一个在容器中运行的Jenkins。我试图调试在Jenkins管道中运行的groovy文件,发现由于某种原因它没有从工作区执行。下面是Jenkins管道
pipeline {
agent any
stages {
stage('testing') {
steps {
script {
sh '''
ls
'''
def proc = [ "ls"].execute()
def output = proc.text
println(output)
}
}
}
}
}
shell命令返回签出存储库的清单,如预期的那样。然而,在groovy脚本中执行的相同命令显示了容器根文件系统。这不是我所期望的。这是怎么回事?
Pipeline] }
[Pipeline] // stage
[Pipeline] withEnv
[Pipeline] {
[Pipeline] stage
[Pipeline] { (testing)
[Pipeline] script
[Pipeline] {
[Pipeline] sh
+ ls
README.md
docs
jenkins
modules
scripts
[Pipeline] echo
aws
bin
boot
dev
etc
home
lib
lib64
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
vault
sh
节点是一个适当的Jenkins内置步骤,用于在作业中运行命令。
.execute()
是一个hack:)
你通过Jenkins解释器运行Groovy脚本,这不是很标准,它做它自己的事情。
我会避免它,并保持与詹金斯sh
有一个标准的行为。