Jenkins 管道 sh 步骤 returns 错误 "process apparently never started"
Jenkins pipeline sh step returns error "process apparently never started"
我一直在尝试让 Jenkinsfile 工作。它在 sh
步骤上一直失败并给出以下错误
process apparently never started in /home/jenkins/workspace
...
(running Jenkins temporarily with -Dorg.jenkinsci.plugins.durabletask.BourneShellScript.LAUNCH_DIAGNOSTICS=true might make the problem clearer)
我试过添加
withEnv(['PATH+EXTRA=/usr/sbin:/usr/bin:/sbin:/bin'])
在 sh 进入 groovy 文件之前
也尝试添加
/bin/sh
在 Manage Jenkins -> Configure System
在 shell 部分
我还尝试用以下内容替换 Jenkinsfile 中的 sh 行:
sh "docker ps;"
sh "echo 'hello';"
sh ./build.sh;"
sh ```
#!/bin/sh
echo hello
```
这是我卡住的 Jenkinsfile 的一部分
node {
stage('Build') {
echo 'this works'
sh 'echo "this does not work"'
}
}
预期输出是 "this does not work" 但它只是挂起并且 returns 上面的错误。
我错过了什么?
事实证明,默认 jnlp k8s 从节点的默认 workingDir 值现在设置为 /home/jenkins/agent
,而我使用的是旧值 /home/jenkins
这是适合我的配置
containerTemplate(name: 'jnlp', image: 'lachlanevenson/jnlp-slave:3.10-1-alpine', args: '${computer.jnlpmac} ${computer.name}', workingDir: '/home/jenkins/agent')
格式错误的 PATH 环境变量可能会遇到同样的问题。这会阻止 Pipeline 插件的 sh() 方法调用 shell 可执行文件。您可以像这样在简单的管道上重现它:
node('myNode') {
stage('Test') {
withEnv(['PATH=/something_invalid']) {
/* it hangs and fails later with "process apparently never started" */
sh('echo Hello!')
}
}
}
有多种方法可以破坏 PATH。例如,您使用 withEnv(getEnv()) { sh(...) } 其中 getEnv() 是您自己的方法,它根据 OS 和其他条件评估环境变量列表。如果您在 getEnv() 方法中出错并且 PATH 被覆盖,您将重现它。
我一直在尝试让 Jenkinsfile 工作。它在 sh
步骤上一直失败并给出以下错误
process apparently never started in /home/jenkins/workspace
...
(running Jenkins temporarily with -Dorg.jenkinsci.plugins.durabletask.BourneShellScript.LAUNCH_DIAGNOSTICS=true might make the problem clearer)
我试过添加
withEnv(['PATH+EXTRA=/usr/sbin:/usr/bin:/sbin:/bin'])
在 sh 进入 groovy 文件之前
也尝试添加
/bin/sh
在 Manage Jenkins -> Configure System
在 shell 部分
我还尝试用以下内容替换 Jenkinsfile 中的 sh 行:
sh "docker ps;"
sh "echo 'hello';"
sh ./build.sh;"
sh ```
#!/bin/sh
echo hello
```
这是我卡住的 Jenkinsfile 的一部分
node {
stage('Build') {
echo 'this works'
sh 'echo "this does not work"'
}
}
预期输出是 "this does not work" 但它只是挂起并且 returns 上面的错误。
我错过了什么?
事实证明,默认 jnlp k8s 从节点的默认 workingDir 值现在设置为 /home/jenkins/agent
,而我使用的是旧值 /home/jenkins
这是适合我的配置
containerTemplate(name: 'jnlp', image: 'lachlanevenson/jnlp-slave:3.10-1-alpine', args: '${computer.jnlpmac} ${computer.name}', workingDir: '/home/jenkins/agent')
格式错误的 PATH 环境变量可能会遇到同样的问题。这会阻止 Pipeline 插件的 sh() 方法调用 shell 可执行文件。您可以像这样在简单的管道上重现它:
node('myNode') {
stage('Test') {
withEnv(['PATH=/something_invalid']) {
/* it hangs and fails later with "process apparently never started" */
sh('echo Hello!')
}
}
}
有多种方法可以破坏 PATH。例如,您使用 withEnv(getEnv()) { sh(...) } 其中 getEnv() 是您自己的方法,它根据 OS 和其他条件评估环境变量列表。如果您在 getEnv() 方法中出错并且 PATH 被覆盖,您将重现它。