2017-10-04 24 views
1

Dockerコンテナ内でいくつかのステージを実行するために宣言型Jenkinsfileを使用しています。このプロセスは問題なく動作しますが、CIにはかなりの数のスレーブが含まれているため、ビルド時間は非常に遅いことが多く、レイヤーキャッシュがないスレーブでビルドが発生すると、ビルド全体にしばらく時間がかかります。宣言型JenkinsパイプラインでDockerの--cache-fromビルドフラグを使用するにはどうすればよいですか?

--cache-fromフラグが指定されている場合、Dockerはビルドの速度を上げることができます。 cache-fromフラグと外部レジストリのURLと資格情報を指定するにはどうすればよいですか?

pipeline { 

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

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

答えて

1

The pipeline syntaxは、エージェント

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

しかしcache-fromがどの画像を参照のようにあなたは、additionalBuildArgsオプションでdocker build ...コマンドに追加の引数を渡すことができる追加のパラメータ

を許可しません独自の資格情報を持つ専用の外部レジストリに存在する可能性があります。
おそらく、そのレジストリの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は、現在のローカルイメージキャッシュの恩恵を受けるだろう。

関連する問題