2017-10-04 68 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將從目前的本地圖像緩存中受益。

相關問題