如何在声明性Jenkins管道中使用Docker&#cache-from build标志?

时间:2017-10-04 18:11:23

标签: docker jenkins jenkins-pipeline docker-build

我使用声明性Jenkinsfile在Docker容器中运行一些阶段。这个过程运行正常但是构建时间通常很慢,因为我们的CI有很多从属,如果构建发生在没有层缓存的从属上,整个构建需要一段时间。

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

pipeline {

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

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

1 个答案:

答案 0 :(得分: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都将受益于当前的本地图像缓存。