gpt4 book ai didi

Jenkins 无法识别命令 sh?

转载 作者:行者123 更新时间:2023-12-03 13:38:56 27 4
gpt4 key购买 nike

我在尝试让 Jenkinsfile 工作时遇到了很多麻烦。
我一直在尝试运行这个测试脚本:

#!/usr/bin/env groovy
node {
stage('Build') {
echo 'Building....'
// Create virtualenv
sh 'echo "hi"'
}
stage('Test') {
echo 'Building....'
}
stage('Deploy') {
echo 'Deploying....'
}
}

但是在尝试构建时我不断收到此错误:
Warning: JENKINS-41339 probably bogus PATH=/usr/lib64/ccache:/usr/lib64/ccache:$PATH; perhaps you meant to use ‘PATH+EXTRA=/something/bin’?
[test-job-jenkinsfile-pipeline] Running shell script
nohup: failed to run command `sh': No such file or directory

我将所有管道插件更新到最新版本,但仍然遇到此错误。有什么帮助吗?

最佳答案

乔纳森的回答是正确的,因为使用 Jenkins 环境变量设置修改 $PATH 会导致此问题 - 但仅删除您拥有的 PATH 自定义可能会导致您失去功能,特别是如果您的 Jenkins 中有任何 Freestyle 类型的项目。

看,在整个宇宙中,通过将 $PATH 设置为您的新事物加上现有的 $PATH 来编辑 $PATH 是很常见的,如下所示:
PATH=/opt/blah/bin:$PATH
这前置 /opt/blah/bin到什么已经在 $PATH .所以最后$PATH可能看起来像:/opt/blah/bin:/usr/local/bin:/usr/sbin:/bin (这当然只是一个例子)

这实际上适用于 Jenkins Freestyle 项目。但是,对于流水线项目,Jenkins 出于某种原因实际上并没有评估和替换您设置的变量中的 $PATH 变量。所以你最终得到的路径是 /opt/blah/bin:$PATH - 所以之前没有的东西仍然在你的 $PATH 中!

显然, Jenkins 项目决定(1)检测条件并显示一个奇怪的警告(“警告:JENKINS-41339可能是假的”)暗示您应该检查该票并(2)创建一个全新的定义添加到 PATH 的方式,这是您问题的最佳解决方案,因为它允许您自定义 $PATH 而不会破坏所有内容。您可以在 Jenkins->Configure System 中执行此操作。

  • 定义一个名为 PATH+EXTRA 的变量EXTRA 显然可以是任何东西。
  • 在该变量中,只需将您添加到 PATH 中。所以在我上面的例子中,我不会设置 PATH根本没有,我只是设置:PATH+EXTRA=/opt/blah/bin
  • 现在删除任何定义的 PATH多变的。

  • 根据 related ticket , 这在 Jenkins 的某个地方有记录,但没有记录在它需要的地方,在管理 Jenkins-> 配置系统中。

    关于 Jenkins 无法识别命令 sh?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43987005/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com