jenkins - 从 Jenkins 管道执行脚本

标签 jenkins jenkins-pipeline

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

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

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 slave 进程的用户)对 /opt 没有写权限。和 sh step 想要创建 script-directory@tmp/durable-ae56483c子目录在那里。

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

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

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

关于jenkins - 从 Jenkins 管道执行脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38945443/

相关文章:

java - Jenkins 代理崩溃/终止由 : java. security.AccessControlException 引起:

jenkins - "java.io.NotSerializableException: java.io.PrintWriter"写入文件时 - Jenkins 工作流程

Jenkins:强制作业在所需工作空间的同一节点上运行

jenkins - Jenkins 的 SonarQube 插件找不到 SonarQube Scanner 可执行文件

java - Firefox WebDriver : Failed to connect to binary

hudson - 如何使用Jenkins远程API中的树查询参数来获取下游项目和参数?

java - Jenkins无法使用maven构建项目

java - 即使测试失败,如何始终写入 Jenkins Groovy 管道中的 .csv 数据文件

git - Jenkins 管道如何与 monorepo 一起工作

java - 如何让Jenkins使用本地用户的.m2文件夹?