DockerHub の autobuild が無料では出来なくなったので GitHub Actions で Docker build / push を行う作業をしていた。
基本的にはスムーズに移行できたが、 latest tag を自動で生成する部分だけちょっと詰まったのでメモ。
問題
Docker Hub の autobuild では Default branch に push すると latest tag が自動で生成されるようになっていたが、 GitHub Actions を docker-publish workflow ベースで構築すると生成されない。
どうするか
↓の issue にある通り。
詳細
この Workflow では、latest タグがつくかどうかは docker/metadata-action でどのような metadata が吐かれるかによって決まっていて、ここで image の push 先として latest
が含まれると後続の Action で latest
に push される。
そして、 metadata-action では、 https://github.com/docker/metadata-action#latest-tag にある通り flavor
の latest
で latest タグを出力するかどうかが決まる。デフォルトでは auto
となっており、その場合タグが push された場合にのみつくようになっている。ここに true
を明示的に設定すると、常に latest
タグがつくようになる。
そのため、特定のブランチに push した場合につくように変更するには、flavor
の latest
を特定のブランチの場合にのみ true
にすれば良い。具体的には、Issue にある通り下のようにする。
flavor: | latest=${{ github.ref == 'refs/heads/main' }}