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

cdm*_*cdm 13 docker jenkins-pipeline

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

例如,如果我生成一个名为test.html/app/泊坞窗图像的目录-我怎么把它复制到工作区詹金斯这样我就可以发布.

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

        }
    }
Run Code Online (Sandbox Code Playgroud)

Lar*_*Cai 12

由于docker cp管道的 docker 插件不支持,有两种方法可以做到。

解决方案 1-v启动实例时的卷映射

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

查看完整的Jenkinsfile

解决方案2:在shell中使用传统的docker命令(未验证)

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
"""
Run Code Online (Sandbox Code Playgroud)

  • 我想知道人们是否投票支持解决方案一...或解决方案二,或解决方案二 (2认同)