web-dev-qa-db-ja.com

Docker Hub自動ビルド-タグ付け

Docker Hubで自動ビルドを指定するときに、いくつかの設定(Type( 'Branch'または 'Tag')、NameDockerfile LocationおよびDocker Tag Name)を設定できます。しかし、残念ながらそれらのドキュメントは見つかりませんでした。

Type 'Branch'を選択してNameを入力すると、これはGitHub/BitBucketのgitリポジトリからのブランチであり、Docker Tag Nameが作成された画像に割り当てられるタグ。

私は少し遊んでみて、私にはわからないことがいくつかありましたが、私に説明していただければ幸いです。

  • 複数のエントリを追加すると、1つのタグのみが割り当てられます。最初のバージョンではDocker Tag Name、2番目のバージョンでは 'v1'として 'Branch'、 'master'、 '/'、 'latest'を使用しました。ただし、タグとして使用されるのは「v1」のみです。

  • Type 'Tag'を使用しても、異なる結果にはなりませんでした。これは、git commitがこの値でタグ付けされている場合にのみイメージを構築する可能性があると思いました。このタイプは何のためですか?

「最新」のタグを最新のビルドに割り当て、イメージをローカルでビルドするときにできるように、古いビルドに対してv1、v2、v3などのスキームを使用する機能を探していました。

35
MirkoMachine

自動化されたドッカー画像タグ付けがドッカーハブで利用可能です!私は最近これをいじっていて、私の発見を共有して、このスレッドにジャンプしました(大丈夫だと思います!)

だから私はdockerhubに自動化されたビルドリンクを持つ公開GitHubリポジトリを持っています。 masterブランチにプッシュするたびに:latestタグを更新する必要があります。また、GitHubで作成するリリースごとに:X:X.Y:X.Y.Zタグを作成してください(GitHubでvX.Y.Zとしてタグ付け)。

これは、ビルド設定構成がこれをサポートするように見える方法です: dockerhub build settings

そして、テキストでコピーして貼り付けるのが簡単です:

| Type   | Name                              | Dockerfile Location | Docker Tag Name |
|--------|-----------------------------------|---------------------|-----------------|
| Branch | master                            | /                   | latest          |
| Tag    | /^v([0-9]+)\.([0-9]+)\.([0-9]+)$/ | /                   | {\1}            |
| Tag    | /^v([0-9]+)\.([0-9]+)\.([0-9]+)$/ | /                   | {\1}.{\2}       |
| Tag    | /^v([0-9]+)\.([0-9]+)\.([0-9]+)$/ | /                   | {\1}.{\2}.{\3}  |

お役に立てれば!

36
Anton Drukh

これは2つのステップで非常に簡単です...

ステップ1-自動ビルドのリンクをクリックします

Automated build link

手順2-同じDockerリポジトリに複数の自動ビルドを追加する(ほとんどの人は、複数の自動ビルドを追加できることを知りません)、ブループラスボタンをクリックします(下の画像を参照)

Adding multiple automated builds

上の画像の例では、私は...

  • githubマスターブランチにマップする「最新」のDockerタグを追加する
  • github 0.1.0タグにマップする「0.1.0」Dockerタグを追加する

githubタグが存在する必要があることに注意してください!

[保存]をクリックしてビルドをトリガーすると、最新のタグ用と0.1.0タグ用の2つのビルドが開始されます。

これが十分に文書化されていないので、あなたが方法を知っている場合は単純です:)ここで完全な答えを提供すると思いました。

16
danday74

Usmanは https://stackoverflow.com/a/26107743/155689 の同様の質問に対する回避策で答えました

基本的に

  • 自動ビルド設定に入ります
  • タグを使用して別のビルドタイプを追加する
  • gitタグ名を入力してください
  • バージョン名を付けます
  • 保存をクリックしてビルドをトリガーします

ご覧のとおり、これを this自動ビルド に対して実行しました

4
flurdy

数か月前に、バージョン番号を明示的に提供することについてdockerサポートに問い合わせましたが、その時点ではサポートされていませんでした。

Dockerハブで指定するのは、監視されるgitタグ/ブランチです。ビルドの結果には常にlatestのタグが付けられます。

4
Abel Muiño

「最新」のタグを最新のビルドに割り当てる私の解決策は、自動ビルドで次の構成を使用することです。

| Type   | Name   | Dockerfile Location | Tag Name |
| Branch | master |        /            | latest   |

マスターにコミットがある場合は常に、タグ「最新」の新しいビルドが作成されます。

数日前に、自動ビルドがブランチ名をタグ名として使用するという問題があったため、「マスター」を持つビルドがいくつか見つかる可能性があります。これは修正されました: https://forums.docker.com/t/automated-builds-not-tagging-latest/68

3

新しいDocker Hub自動ビルドの場合、Anton Drukhの優れた答えは1つのルールで実現できます

ソースタイプ:タグ

ソース:/^v([0-9.])\.([0-9.])\.([0-9.])$/

Dockerタグ:release-{\1},release-{\1}.{\2},release-{\1}.{\2}.{\3},latest

マスターコミットではなくタグから最新のものを構築しているため、これはアントンの回答とは少し異なります。

3
Michael West

私はこの機能をまだ使用していないため間違っている可能性がありますが、今日build settingsタブと2番目のタイプのビルドのtagを選択すると、自動的に正規表現/.*/は、すべてのタグを選択します。

テストしたらすぐに更新します。

2
hernandes