2017-10-04 69 views
1

我使用声明式Jenkinsfile来运行Docker容器内的一些阶段。该过程工作正常,但构建时间通常非常缓慢,因为我们的CI有很多从站,如果构建发生在没有层缓存的从站上,整个构建过程需要一段时间。如何在声明式Jenkins管道中使用Docker的--cache-from构建标志?

我读过,如果指定了--cache-from标志,Docker可以加速构建。如何指定缓存 - 来自标志和外部注册表的URL和凭证?

pipeline { 

    agent { dockerfile true } 
    environment { 
    REPO = credentials('supersecret') 
    } 

    stages { 
    stage('Prepare environment') { 
     steps { 

回答

1

The pipeline syntax做授权其他参数

你可以传递额外的参数给docker build ...命令和additionalBuildArgs选项,如代理

{ dockerfile { additionalBuildArgs '--build-arg foo=bar' } } 

cache-from参考图像,其可能会在一个专用的外部注册表中拥有自己的凭证。
也许你可以在该注册表中设置第一步,只需负责docker login


另一种方法完全是重复使用同一个节点进行特定的构建。
请参阅 “Reusing node/workspace with per-stage Docker agents

pipeline { 
    agent { 
    label 'whatever' 
    } 
    stages { 
    stage('build') { 
     steps { 
     sh "./build-artifact.sh" 
     } 
    } 
    stage('test in docker') { 
     agent { 
     docker { 
      image 'ubuntu:16.04' 
      reuseNode true 
     } 
     } 
     steps { 
     sh "./run-tests-in-docker.sh" 
     } 
    } 
    } 
} 

那么任何docker build将从目前的本地图像缓存中受益。

相关问题