Unyablog.

のにれんのブログ

GitHub Actions で Docker push をするときに、特定のブランチについて latest タグをつける

DockerHub の autobuild が無料では出来なくなったので GitHub Actions で Docker build / push を行う作業をしていた。

基本的にはスムーズに移行できたが、 latest tag を自動で生成する部分だけちょっと詰まったのでメモ。

問題

Docker Hub の autobuild では Default branch に push すると latest tag が自動で生成されるようになっていたが、 GitHub Actions を docker-publish workflow ベースで構築すると生成されない。

どうするか

↓の issue にある通り。

github.com

詳細

この Workflow では、latest タグがつくかどうかは docker/metadata-action でどのような metadata が吐かれるかによって決まっていて、ここで image の push 先として latest が含まれると後続の Action で latest に push される。

そして、 metadata-action では、 https://github.com/docker/metadata-action#latest-tag にある通り flavorlatest で latest タグを出力するかどうかが決まる。デフォルトでは auto となっており、その場合タグが push された場合にのみつくようになっている。ここに true を明示的に設定すると、常に latest タグがつくようになる。

そのため、特定のブランチに push した場合につくように変更するには、flavorlatest を特定のブランチの場合にのみ true にすれば良い。具体的には、Issue にある通り下のようにする。

flavor: |
  latest=${{ github.ref == 'refs/heads/main' }}