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

时间:2018-05-21 22:31:08

标签: docker jenkins 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
    }

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

我尝试的事情:

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

有关归档Docker容器中生成的文件的任何建议吗?

PS:我打开了一个bug report ...看起来archiveArtifacts只适用于docker容器中$ WORKSPACE中的文件。

1 个答案:

答案 0 :(得分:1)

您似乎已经找到了the same Jira ticket中所报告的解决方案,因此我将在此为所有人发布:

  

这很好:

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