2017-12-14 13 views
0

Jenkinsfileに記載されているJenkinsパイプラインがあります。Jenkinsパイプライン:docker.image()の前にイメージを更新するinside()

ビルドステップ中に、すべてのビルドステップが実行されるドッカーコンテナが起動します。このような何か:

docker.image('node:8').inside() { } 

私は、これは、最新のドッキングウィンドウの画像を取得するが、常に、もともとドッキングウィンドウハブから引き出された画像を使用していないことに気づきます。 node:8イメージがまだ最新のものであればドッカーハブで確認し、そうでない場合は新しいイメージをフェッチすることを期待していました。ローカルレジストリに最新のイメージがキャッシュされていない場合、新しいイメージのダウンロードを開始するにはどうすればよいですか?

答えて

1

あなたはいつも、これが変更されている画像層のみをダウンロードしますが、画像を引くことができます。

sh 'docker pull node:8' 
+0

私は基本的にこれを今パイプラインのapiで行いますが、この 'docker.image(node:8 ')。pull()'のようなものです。 – lanoxx

+0

私の混乱の理由は、Jenkinsのドッカー変数リファレンスには、 'inside'関数のためにプルが必要でないことが言及されています。これは繰り返し呼び出しを引き起こすと仮定するようになりましたが、それがまだシステム上に存在しない場合は引っ張られる。 – lanoxx

0

ビルド前にローカルイメージを削除することで回避できます。

ジェンキンスでbashシェルプロンプトで
docker rmi image_name 

+0

私はそれを行うにはしたくない、ので、キャッシュのアイデア全体を無効にします。私が使用しているイメージは、数か月ごとに更新されるかもしれませんが、通常はプロジェクトを1日に複数回ビルドします。ビルドごとに新しいイメージをダウンロードする必要はありません。私は、新しいアップストリームバージョンが利用可能な場合にのみ、新しいイメージをダウンロードするソリューションが必要です。 – lanoxx

関連する問題