将文件从Docker镜像复制到jenkins工作区

我有一个使用dockerfile的jenkins文件 – 并且对如何将文件从docker镜像复制到jenkins工作区感兴趣。 具体来说 – 我正在生成一个关于我想由jenkins工作发布的docker映像的HTML报告。

例如,如果我在docker镜像的/app/目录下生成了一个名为test.html的文件,我怎样才能将它复制到jenkins工作区,这样我就可以发布它了。

下面的示例Jenkinsfile

 node ('ondemand') { try { stage "build" checkout scm def customImage = docker.build("docker-image:${env.BUILD_ID}", "-f ./docker-image/Dockerfile .") stage "test copying files" customImage.inside('-u root') { sh 'touch /app/test.html && ls' // can see that test.html is generated } } 

由于docker cp插件不支持docker cp ,因此有两种方法可以实现。

解决scheme1 :启动实例时的卷映射-v

 customImage.inside('-v $WORKSPACE:/output -u root') { sh 'touch /app/test.html && ls' // can see that test.html is generated } archiveArtifacts artifacts: '*.html' 

看完整的Jenkinsfile

解决scheme2:在shell中使用传统的docker命令(未validation)

 sh """ docker run --name sample -d -u root docker-image:${env.BUILD_ID} 'touch /app/test.html' docker cp sample:/app/test.html . docker rm -f sample """ 

docker cp [containerID]:/app/test.html/path/to_save/the/file