在Jenkins slave上使用CURL下载zip文件时无法创建文件

时间:2018-04-23 08:34:34

标签: jenkins groovy jenkins-slave

我正在使用Jenkins Pipline和Groovy脚本在jenkins的奴隶机器上下载一个拉链。

以下是我的代码:

pipeline {

    agent { label '<my slave label>' }
    stage('Download') {
            steps {
                script {                
                    def url = "<server url>"
                    def processDownload = ['bash', '-c', "curl -g -k --noproxy \"*\" -o <output-dir> \"${url}\""].execute()
                    processDownload.waitFor()
                    def processUnzip = ['bash', '-c', "7z e lwbs.zip"].execute()
                    processUnzip.waitFor()     
                }      
            }
    }
}

我收到以下错误:

  

警告:无法创建文件警告:

     

output-dir / newFile.zip:没有这样的文件或目录

我检查过以下内容:

  1. 当我使用命令提示符使用相同的curl命令时,它会成功运行。
  2. 我还确保授予适当的用户权限 允许jenkins写入此目录。
  3. 目录存在,目录url
  4. 中没有空格
  5. 从站
  6. 上有足够的可用磁盘空间
  7. 服务器URL和证书是正确的
  8. 许多SO但没有提到jenkins slave
  9. 上的问题

    我有什么遗失的吗?

    感谢任何帮助。谢谢。

1 个答案:

答案 0 :(得分:1)

经过长时间的研究,我发现使用以下命令触发了bash命令

def processDownload = ['bash', '-c', "curl -g -k --noproxy \"*\" -o <output-dir> \"${url}\""].execute()

Jenkins将始终在Master上执行它。

当我将其更改为普通shell命令时,Jenkins正在从机上正确执行它。此外,为了解压缩,我使用了Pipeline Utility Steps插件,它提供了在slave上执行的解压缩功能。以下是我的工作代码:

stage('Download') {
    steps {
        script {
            url = "<server url>"
            sh "curl -k --noproxy \"*\" -o \"<output-dir>\" \"${url}\""
            unzip(dir: '', glob: '', zipFile: 'fileName.zip')
        }
    }
}