将文件从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