Blt*_*ker 7 jenkins jenkins-pipeline
我有一个jenkins管道,它构建一个java工件,将其复制到一个目录,然后尝试执行外部脚本.
我在管道脚本中使用此语法来执行外部脚本
dir('/opt/script-directory') {
sh './run.sh'
}
Run Code Online (Sandbox Code Playgroud)
该脚本只是一个简单的docker构建脚本,但构建将因以下异常而失败:
java.io.IOException: Failed to mkdirs: /opt/script-directory@tmp/durable-ae56483c
Run Code Online (Sandbox Code Playgroud)
该错误令人困惑,因为该脚本不会创建任何目录.它只是构建一个docker镜像并将新构建的java工件放在该图像中.
如果我在jenkins中创建一个不同的作业,执行外部脚本作为其唯一的构建步骤,然后使用以下语法从我的管道脚本调用该作业:
build 'docker test build'
Run Code Online (Sandbox Code Playgroud)
一切正常,脚本在另一个作业内执行,管道按预期继续.
这是执行工作区外部脚本的唯一方法吗?
我在管道脚本中执行脚本的尝试出了什么问题?
问题是jenkins用户(或任何运行Jenkins从属进程的用户)没有写入权限,/opt并且sh步骤想要在script-directory@tmp/durable-ae56483c那里创建子目录.
删除dir块并使用脚本的绝对路径:
sh '/opt/script-directory/run.sh'
Run Code Online (Sandbox Code Playgroud)
或者将jenkins用户的写权限授予文件夹/opt(出于安全原因不是首选)
| 归档时间: |
|
| 查看次数: |
20151 次 |
| 最近记录: |