Part of our CI/CD workflow tags Docker images with the git branch's name. However, the set of valid characters for docker tags is smaller than the set of valid characters for a git branch name.
As a very simple example, the branch name bugfix/my_awesome_feature
is not a valid tag:
docker build . -t image_name:$(git rev-parse --abbrev-ref HEAD)
Fails with the error that it is "not a valid repository/tag: invalid reference format".
Same with more complicated branch names: fix/bug#123
, pr@123
, etc....
What's the best way to turn a git branch name into a valid docker tag? Ignoring or replacing all invalid characters is fine.
Docker tag does not allow most of the special character except -,_,.
.
A tag name must be valid ASCII and may contain lowercase and uppercase letters, digits, underscores, periods and dashes. A tag name may not start with a period or a dash and may contain a maximum of 128 characters.
docker valid image tags
So you can replace all special character with -
. in your Branch name.
docker build . -t image_name:$(git rev-parse --abbrev-ref HEAD | sed 's/[^a-zA-Z0-9]/-/g')
So the following branch will become
fix/bug#123 -> fix-bug-123
pr@123 -> pr-123
You can replace -
with underscores, periods and dashes
#to use `_`
sed 's/[^a-zA-Z0-9]/_/g'
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With