Jenkins Pipeline和Docker-如何从容器归档文件

Ako*_*kom 6 jenkins docker jenkins-pipeline docker-container

根据Jenkins Pipeline Docs的介绍,在使用Docker时,我应该能够使用管道步骤。但是,“ archiveArtifacts ”似乎不起作用:

    def container = docker.image("some_image")
    container.inside {
        sh 'date > /tmp/test.txt'
        sh 'cat /tmp/test.txt' //works, shows file

        def fileContents = readFile '/tmp/test.txt' //works
        echo "Contents: ${fileContents}" //works, shows file

        archiveArtifacts '/tmp/*.txt' //FAILS
    }
Run Code Online (Sandbox Code Playgroud)

错误:找不到与文件模式“ /tmp/*.txt”匹配的工件。配置错误?”。

我尝试过的事情:

  • 如果这是文件同步问题,请在存档步骤之前添加sync和sleep(5)。
  • 尝试归档“ / *”和“ *”,以防它在主机上运行(相同的错误)。

关于归档Docker容器中生成的文件有什么建议吗?

PS:我打开了一个错误报告 ...看来archiveArtifacts仅适用于Docker容器中$ WORKSPACE中的文件。

rat*_*ath 7

您似乎已经找到了同一张 Jira 票证中报告的解决方案,因此我将在这里为大家发布:

这工作正常:

def image = docker.image("alpine")
 image.inside { 
   sh 'date > /tmp/test.txt'
   sh "cp /tmp/test.txt ${WORKSPACE}"
   archiveArtifacts 'test.txt'
 }
Run Code Online (Sandbox Code Playgroud)