2017-04-20 4 views
1

、の値を抽出する方法:例えば画像のためのいくつかのタグでレジストリを考えるとドッカーイメージのタグ

myimage 0.0.3    
myimage 0.0.2    

は私が何とか抽出でき0.0.3(というか最近のタグ)はbashで変数に?
私はtagValue++その後、私ができるように、この値を見つけるためにそれを好きなように行動するためにジェンキンスパイプラインでそれを使用したい:更新されたタグ

  • docker pushと次の画像を構築するために

    • docker build誰もがベティを持っている場合は、もちろん

    更新された画像タグを使用して、ポッドとKubernetesクラスタを更新するには、レジストリ

  • kubectl set imageに、この新しいイメージタグをプッシュしますr戦略私はそれを聞いてすべてです!

    代替:

    • 、上記の操作を実行し、Kubernetes展開のYAMLファイルから値を取得し、更新タグが付けられたファイルを更新して戻ってリポジトリに更新されたファイルをプッシュしますか?

    • kubectl replaceの代わりにkubectl set imageを使用しますか? (example hereは文書から)

  • 答えて

    1

    異なるアプローチを、私は使用します画像にタグを付けるための環境変数は、${BUILD_NUMBER}です。さらに、私はlatestタグを前に進めるので、私は両方のオプションを使用しています。この結果、異なるビルド番号(変更がない場合)で同じ画像に複数回タグが付けられますが、その設定で問題はありません。 私はイメージを構築し、私は仕事全体で最新のビルド番号を取得するにはジェンキンスAPIを使用K8Sを更新するための別のジェンキンスジョブを使用しているので:

    containerTag=$(curl -u $user:$cred 'http://localhost:8080/job/$jobname/lastStableBuild/buildNumber') 
    
    +0

    ああ、 '$ BUILD_NUMBER'を使用して...それであってもよいこと...私はまず、おそらく '0.0.x'のようなバージョン管理スキーマを使うべきだと思っていましたが、実行中の数値はちょうど良いかもしれません:' docker build -t myimage:$ BUILD_NUMBER'そして 'docker push myimage:$ BUILD_NUMBER'と'kubectl set image deployment mypod mypod = myimage:$ BUILD_NUMBER --record'を実行します。 –

    1

    これを社内のv2ドッカーレジストリで使用します。それはjqに依存しているので、あなたにとっては適切ではないかもしれません。レジストリは、彼らが追加された順序でそれらを返すように見えるので、私たちはちょうどあなたが新しい十分なバージョンがある場合は、JQとかなり可能である、最新のグラブ:

    tags_url="https://hot.registry.example.com/v2/somerepoprefix/${repo}/tags/list" 
    newest_tag=$(curl $tags_url | jq -r '(.tags | reverse)[0]') 
    
    関連する問題