当前位置: 首页 > 面试题库 >

从詹金斯管道执行脚本

叶健柏
2023-03-14
问题内容

我有一个jenkins管道,该管道可以构建Java工件,将其复制到目录中,然后尝试执行外部脚本。

我在管道脚本中使用此语法来执行外部脚本

dir('/opt/script-directory') {
    sh './run.sh'
}

该脚本只是一个简单的Docker构建脚本,但是由于以下异常,构建将失败:

java.io.IOException: Failed to mkdirs: /opt/script-directory@tmp/durable-ae56483c

由于脚本不会创建任何目录,因此该错误令人困惑。它只是构建一个docker映像,并将新构建的java工件放置在该映像中。

如果我在jenkins中创建另一个作业,该作业执行外部脚本作为其唯一的构建步骤,然后使用以下语法从我的管道脚本中调用该作业:

build 'docker test build'

一切正常,脚本在其他作业中执行,并且管道按预期继续。

这是执行工作空间外部脚本的唯一方法吗?

从管道脚本中执行脚本的尝试有什么错?


问题答案:

问题是jenkins用户(或运行Jenkins从属进程的任何用户)都没有写权限,/opt并且该sh步骤要在此创建script- directory@tmp/durable-ae56483c子目录。

要么删除该dir块,然后使用脚本的绝对路径:

sh '/opt/script-directory/run.sh'

或向jenkins用户授予对文件夹的写许可权/opt(出于安全考虑,不建议使用)



 类似资料:
  • 我已经尝试将Shell可执行文件设置为C:\windows\system32\cmd.exe和C:\cygwin64\bin\sh.exe,但是我遇到了同样的错误。我怎样才能解决这个问题?

  • 问题内容: 这是我要执行的Jenkins管道。我正在关注本教程: 但是作业失败,并显示以下消息。 有人可以帮我解决为什么失败了。 问题答案: 您需要在阶段声明之后添加一个step块。

  • 问题内容: 已解决 :感谢S.Richmond的以下答复我需要取消所有类型的存储映射,这意味着将变量和使用后作废。 附加 :搜索此错误的人员可能有兴趣使用Jenkins管道步骤- 在此处查找更多信息。 我正在尝试使用Jenkins Pipeline从用户那里获取输入,该输入作为json字符串传递给作业。管道然后使用隔离器对此进行解析,然后选择重要信息。然后,它将使用该信息与不同的作业参数并行运行1

  • 下面是我简单的jenkins pipeline groovy脚本,它将用这两个阶段和我们想要构建的作业创建一个管道,我希望在job configuration下的脚本中每次都更新用于构建和代码分析的作业名,方法是从用户界面中获取数据,用户将使用Eclipse提供构建作业名和代码分析作业名- jenkinsfile脚本:-

  • 问题内容: 我有一个简单的并行管道(请参阅代码),该管道与Jenkins 2.89.2一起使用。另外,我使用参数,现在希望能够通过在作业执行之前提供参数来自动增加/减少deployVM A..Z阶段的数量。 如何通过提供参数动态构建管道? 码 我想要的伪代码-动态生成: 到目前为止,我拥有的代码-可以并行执行,但是是静态的: 问题答案: 尽管该问题假定使用声明性管道,但我建议使用脚本化管道,因为它

  • 我有一个简单的并行管道(见代码),我和Jenkins 2.89.2一起使用。另外,我使用参数,现在希望能够通过在作业执行之前提供参数来自动地in-/减少deployVM A.Z阶段的数量。 null 到目前为止,我的代码是并行执行的,但是静态的: