从詹金斯管道执行脚本

2023-11-23

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

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

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

该脚本只是一个简单的docker构建脚本,但是构建会失败 但有一个例外:

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

该错误令人困惑,因为该脚本没有创建任何目录。它只是构建一个 docker 镜像并将新构建的 java 工件放入该镜像中。

如果我在詹金斯中创建一个不同的作业来执行外部脚本 这是唯一的构建步骤,然后使用以下语法从我的管道脚本调用该作业:

build 'docker test build'

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

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

我尝试从内部执行脚本时做错了什么 管道脚本?


问题是 jenkins 用户(或运行 Jenkins 从进程的任何用户)没有写入权限/optsh步骤想要创建script-directory@tmp/durable-ae56483c那里的子目录。

要么删除dir阻止并使用脚本的绝对路径:

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

或向 jenkins 用户授予对文件夹的写入权限/opt(出于安全原因不推荐)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从詹金斯管道执行脚本 的相关文章

随机推荐