【发布时间】:2017-09-19 18:12:08
【问题描述】:
我有一个使用 dockerfile 的 jenkinsfile - 我对如何将文件从 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
}
}
【问题讨论】:
-
Jenkins 将使用
inside处理容器的创建和关闭。一种简单的方法是将文件从/app复制到您的WORKSPACE的本地位置,例如sh "mkdir ${env.WORKSPACE}/jenkinsOut && cp -r /app/ ${env.WORKSPACE}/jenkinsOut",因为工作空间在容器和主机之间共享。