我有一个在容器中运行的Jenkins。我试图调试一个在Jenkins管道中运行的Groovy文件,发现由于某种原因它不能从工作区执行。
pipeline {
agent any
stages {
stage('testing') {
steps {
script {
sh '''
ls
'''
def proc = [ "ls"].execute()
def output = proc.text
println(output)
}
}
}
}
}
shell命令返回 checkout 的存储库列表,正如预期的那样。然而,在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
1条答案
按热度按时间iszxjhcz1#
sh
节点是一个正确的Jenkins内置步骤,用于运行作业中的命令。.execute()
有点黑客:)您正在通过Jenkins解释器运行Groovy脚本,Jenkins解释器不是很标准,它有自己的功能。
我会避免它,并保持与Jenkins
sh
,有一个标准的行为。